hadoop - 数据节点如何知道写入管道中的下一个数据节点?
问题描述
来自“White,Tom;Hadoop:权威指南;第 3 章,Hadoop 分布式文件系统,文件写入剖析”:
... DataStreamer 将数据包流式传输到管道中的第一个数据节点,该数据节点存储每个数据包并将其转发到管道中的第二个数据节点。同样,第二个数据节点存储数据包并将其转发到...中的第三个(也是最后一个)数据节点。
它没有提到数据节点如何知道哪个是它必须发送数据包的下一个数据节点。
解决方案
Namenode 知道所有的数据节点和机架位置。Datanodes不知道彼此。
客户端在写入期间首先联系 Namenode,然后发送数据节点地址以进行副本写入
相关问题 - Hadoop 复制模型 - DataStreamer/Namenode
关于使用哪些地址,
HDFS 的放置策略是,如果 writer 在 datanode 上,则将一个副本放在本地机器上,否则在与 writer 相同机架的随机 datanode 上,另一个副本在不同(远程)机架中的节点上,并且最后在同一个远程机架的不同节点上
推荐阅读
- firebase - Godot Firebase“注销”方法?
- xml - XSLT / xsltproc - 不要改变属性的顺序
- python - Python多处理池:完成任何k个作业后终止进程
- android - 以编程方式接受/拒绝 Whatsapp 呼叫?
- json - 在 Swift 5 中创建一个 Json
- regex - 如果它们包含子字符串,则正则表达式跳过匹配
- react-native - 设置状态时反应本机键盘自动关闭/组件重新加载
- javascript - 我使用哪个事件来记录语音通道断开连接
- perl - 文件目录不断变化 Perl
- python - AttributeError:“NoneType”对象没有属性“open_session”