我是hadoop的新手,所以我有些疑惑。如果主节点失败了hadoop集群发生了什么?我们可以没有任何损失地恢复该节点吗?是否可以保持辅助主节点在当前主节点发生故障时自动切换到主节点?
我们有namenode(辅助名称节点)的备份,因此我们可以在失败时从辅助名称节点恢复名称节点。像这样,当datanode失败时,我们如何恢复datanode中的数据呢?辅助名称节点是namenode的备份,但不是datenode,对吧?如果节点在作业完成之前失败,那么作业跟踪器中有作业挂起,该作业是否继续或从空闲节点中的第一个重新启动?
如果发生任何事情,我们如何恢复整个群集数据?
我的最后一个问题是,我们可以在Mapreduce中使用C程序(例如,mapreduce中的冒号排序)吗?
提前致谢
答案 0 :(得分:21)
虽然,现在回答你的问题为时已晚,但只是它可以帮助别人......
首先让我用辅助名称节点向您介绍
它包含名称空间图像,编辑日志文件'备份过去的一个 小时(可配置)。它的工作是合并最新的名称节点 NameSpaceImage并编辑日志文件以上传回名称节点 更换旧的。要在群集中具有辅助NN,则不是 强制性的。
现在引起您的关注..
如果主节点失败了hadoop群集发生了什么?
支持Frail的答案,是的hadoop有单点故障 整个当前正在运行的任务,如Map-Reduce或任何其他任务 正在使用失败的主节点将停止。整个集群包括 客户将停止工作。
我们可以毫不费力地恢复该节点吗?
这是假设的,没有损失,它是最不可能的,就像所有的一样 数据节点发送到Name的数据(块报告)将丢失 最后一次备份后的节点由辅助名称节点获取。为什么我提到 至少,因为如果名称节点在成功备份运行后失败 通过辅助名称节点,然后它处于安全状态。
是否可以让辅助主节点在当前主节点发生故障时自动切换到主节点?
管理员(用户)可以直接进行。并切换它 自动你必须从群集中编写本机代码,代码 监视将配置辅助名称节点的群集 巧妙地使用新的名称节点地址重新启动集群。
我们有namenode(辅助名称节点)的备份,因此我们可以在失败时从辅助名称节点恢复名称节点。像这样,当datanode失败时,我们如何恢复datanode中的数据呢?
约为replication factor,我们有3个(默认为最佳做法, 可配置的)每个文件块的副本都在不同的数据节点中。 因此,如果暂时失败,我们有2个备份数据节点。 稍后的Name节点将再创建一个失败数据的副本 数据节点包含。
辅助名称节点是namenode的备份,不仅仅是datenode,对吗?
右。它只包含数据节点的所有元数据,如数据节点 地址,属性包括每个数据节点的块报告。
如果某个节点在作业完成之前失败,那么作业跟踪器中有作业待处理,该作业是继续还是从空闲节点中的第一个作业重启?
HDFS将强行尝试继续这项工作。但它又取决于 复制因子,rack awareness和other configuration由 管理员。但是,如果遵循Hadoop关于HDFS的最佳实践,那么它 不会失败。 JobTracker将获取复制的节点地址 continnue。
如果发生任何事情,我们如何恢复整个群集数据?
重新启动它。
我的最后一个问题是,我们可以在Mapreduce中使用C程序(例如,mapreduce中的冒号排序)吗?
是的,您可以使用任何支持标准文件的编程语言 读写操作。
我刚试了一下。希望它能帮助你和其他人。
*建议/改进是受欢迎的。 *
答案 1 :(得分:14)
目前hadoop集群有一个单点故障,即namenode。
关于辅助节点isssue(来自apache wiki):
术语“次要名称 - 节点”有点误导。它不是 在数据节点无法连接到辅助节点的意义上的名称节点 name-node,在任何情况下都不能替换主名称节点 失败的情况。
辅助名称节点的唯一目的是定期执行 检查站。辅助名称节点定期下载当前 名称节点图像和编辑日志文件,将它们连接到新图像和 将新映像上载回(主映像和唯一)名称节点。 请参阅用户指南。
因此,如果名称节点失败,您可以在同一物理上重新启动它 然后,不需要关闭数据节点,只需要关闭名称节点 需要重新启动。如果你不能再使用旧节点了 需要在其他地方复制最新图像。最新的图片可以 如果在失败之前找到了曾经是主要节点的节点 可用的;或在辅助名称节点上。后者将是 没有后续编辑日志的最新检查点,这是最多的 最近可能缺少名称空间修改。你也会 在这种情况下需要重新启动整个集群。
克服这一单点故障有一些棘手的方法。如果您正在使用cloudera发行版,则解释here之一。 Mapr分发有一个different way来处理这个spof。
最后,您可以使用每种编程语言来编写地图缩小hadoop streaming。
答案 2 :(得分:0)
虽然,现在回答你的问题为时已晚,但只是它可能有助于其他人......首先,我们将讨论Hadoop 1.X守护进程的角色,然后讨论你的问题..
<强> 1。辅助名称Node 的作用是什么 它不完全是一个备份节点。它会定期读取编辑日志并为名称节点创建更新的fsimage文件。它定期从名称节点获取元数据并保留它,并在名称节点失败时使用。 的 2。什么是名称节点的角色 它是所有守护进程的管理者。它的主jvm过程在主节点上运行。它与数据节点交互。
第3。职位追踪者的角色是什么 它接受作业并分发给任务跟踪器以便在数据节点处理。它被称为地图过程
<强> 4。任务跟踪器的作用是什么 它将执行为处理数据节点上的现有数据而提供的程序。该过程称为map。
hadoop 1.X的限制
<强>解决方案强> 单点故障的解决方案是hadoop 2.X,它提供了高可用性。
high availability with hadoop 2.X
现在你的话题......
如果发生任何事情,我们如何恢复整个群集数据? 如果群集失败,我们可以重启..
如果节点在作业完成之前出现故障,那么作业跟踪器中有作业待处理,该作业是继续还是从空闲节点中的第一个作业重启? 我们有默认的3个数据副本(我的意思是块)以获得高可用性,这取决于管理员他设置了多少副本...所以作业跟踪器将继续其他数据节点上的其他数据副本
我们可以在Mapreduce中使用C程序(例如,mapreduce中的冒号排序)吗? mapreduce基本上是执行引擎,它将解决或处理(存储加处理)分布式方式中的大数据问题。我们正在使用mapreduce编程进行文件处理和所有其他基本操作,因此我们可以根据需要使用任何语言来处理文件。
hadoop 1.X架构 hadoop 1.x has 4 basic daemons
我刚试了一下。希望它能帮助你和其他人。
欢迎提出建议/改进。