我试图通过阅读hadoop-2.4.1文档来了解如何在HDFS中管理数据.
根据以下架构:

每当客户端向HDFS写入内容时,他都不会与namenode联系并负责分块和复制.我假设在这种情况下,客户端是运行HDFS shell(或等效的)的机器.
但是,我不明白这是如何管理的.的确,根据相同的文件:
DataNode还根据NameNode的指令执行块创建,删除和复制.
上面提供的架构是否正确?如果是这样,
为什么客户端写入多个节点?
如果此架构不正确,文件创建如何与HDF一起使用?
正如您所说,DataNode 负责服务读/写请求和块创建/删除/复制。
\n\n然后他们定期发送\xe2\x80\x9cHeartBeats\xe2\x80\x9d(健康状况报告) 和\xe2\x80\x9cBlockReport\xe2\x80\x9d(DataNode 上的块列表)到 NameNode。
\n\n根据这篇文章:
\n\n\n\n\n数据节点每3 秒通过 TCP 握手 向名称节点发送一次心跳,...每第十个心跳就是一个块报告,其中数据节点告诉名称节点其拥有的所有块。
\n
因此块报告每 30 秒完成一次,我认为这不会影响 Hadoop 作业,因为一般来说它们是独立的作业。
\n\n对于你的问题:
\n\n\n\n\n为什么客户端要写入多个节点?
\n
我要说的是,实际上,客户端只写入一个数据节点,并告诉他将数据发送到其他数据节点(请参阅此链接图片:客户端开始写入数据),但这是透明的。这就是为什么您的架构认为客户端是正在写入多个节点的客户端
\n| 归档时间: |
|
| 查看次数: |
650 次 |
| 最近记录: |