3
据块以实现冗余。
NameNode/DataNode 在 HDFS 中的交互
上图说明了 NameNode 和 DataNode 的角色。图中显示了两个数据文件,一个位于目录
/user/chuck/data1,另一个位于 /user/james/data2。文件 data1 有 3 个数据块,表示为 1,2,3,而
文件 data2 由数据库 4 和 5 组成。这些文件的内容分手在几个 DataNode 上。这个实力中,
每个数据库有 3 个副本。例如,数据库 1 被复制在途中右侧的 3 个 DataNode 上,这确保了
如果任何一个 DataNode 崩溃或者无法通过网络访问时,仍然可以读取这些文件。 DataNode
不断向 NameNode 报告,初始化时,每个 DataNode 将当前存储的文件块告知 NameNode 。
在这个初始映射完成后, DataNode 仍然会不断地更新 NameNode,为之提供本地修改的相
关信息,同时接受指令创建、移动或删除本地磁盘上的数据块。
Secondary NameNode(SNN) 次名称节点 。 SNN 是一个用于检测 HDFS 集群状态的辅助
守护进程,像 NameNode 一样,每个集群都有一个 SNN ,它通常也独占一台服务器,该服
务器不会运行其他的 DataNode 或者 TaskTracker 守护进程。 SNN 与 NameNode 的不同在于
它不接受或者记录 HDFS 的任何实时变化。相反,它与 NameNode 通信,根据集群所配置
的时间间隔获取 HDFS 元数据快照。 NameNode 是 Hadoop 集群的单一故障点, 而 SNN 的快
照可以有助于减少停机的时间并降低数据丢失风险。 然而, NameNode 的失效处理需要人工
的干预,即手动地重新配置集群。
JobTracker 作业跟踪节点 。它是应用程序和 Hadoop 集群之间的纽带, 一旦提交代码到
集群上, JobTracker 就会确定执行计划,包括决定处理哪些文件、为不同的任务分配节点以
及监控所有任务的运行。如果任务失败, JobTracker 将自动重启任务,但所分配的节点可能
会不同, 同时受到预定义的重试次数限制。 每个 Hadoop 集群只有一个 JobTracker 守护进程,