Hadoop 中的 Block、chunk 和 file split 有什么区别?
What is the difference between Block, chunk and file split in Hadoop?
请澄清一下 1)Hadoop 中块、块和文件拆分之间有什么区别??
2) $hadoop fs -put 命令的内部流程是什么?
块、块或文件拆分指的是同一件事。也就是说,HDFS 按块大小(通常为 128 或 256 MB)拆分文件,块大小本身被复制了可配置的(通常为 3)次。
至于 put 命令,最终您将创建一个管道,其中 NameNode(对于每个块)告诉客户端要将其复制到哪个 DataNode,然后该 DN 将其复制给一个朋友,后者又将其复制给朋友。 https://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html. There's a visual on slide 14 of http://www.slideshare.net/lestermartin/hadoop-demystified 的 "Replication Pipelining" 部分也有一篇小文章。
块:Hdfs 以块的形式进行对话,例如:
如果您有 256 MB 的文件并且您已将块大小配置为 128 MB,那么现在为 256 MB 创建了 2 个块。
块大小可跨集群配置,甚至文件基础也可配置。
拆分:它与 map reduce 相关,您可以选择更改拆分大小,这意味着您可以将拆分大小修改为大于块大小或将拆分大小修改为小于块大小。默认情况下,如果您不进行任何配置,那么您的拆分大小大约等于块大小。
在 map reduce 处理中,生成的映射器数量将等于您的拆分数:对于一个文件,如果有 10 个拆分,那么将生成 10 个映射器。
当 put 命令被触发时,它转到 namenode,namenode 询问客户端(在这种情况下 hadoop fs 实用程序的行为就像一个客户端),将文件分成块并根据块大小,这可以在中定义hdfs-site.xml 然后,namenode 要求客户端将不同的块写入不同的数据节点。
实际数据将存储在数据节点上,数据的元数据意味着文件的块位置和文件属性将存储在名称节点上。
client首先与name node建立连接,一旦确认了块的存储位置,就直接创建一个
与数据节点的 tcp 连接并写入数据。
基于复制因子,其他副本将在 hadoop 集群中维护,它们的块信息将存储在 namenode 上。
但是在任何情况下,数据节点都不会有块的重复副本,这意味着不会在同一节点上复制相同的块。
请澄清一下 1)Hadoop 中块、块和文件拆分之间有什么区别?? 2) $hadoop fs -put 命令的内部流程是什么?
块、块或文件拆分指的是同一件事。也就是说,HDFS 按块大小(通常为 128 或 256 MB)拆分文件,块大小本身被复制了可配置的(通常为 3)次。
至于 put 命令,最终您将创建一个管道,其中 NameNode(对于每个块)告诉客户端要将其复制到哪个 DataNode,然后该 DN 将其复制给一个朋友,后者又将其复制给朋友。 https://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html. There's a visual on slide 14 of http://www.slideshare.net/lestermartin/hadoop-demystified 的 "Replication Pipelining" 部分也有一篇小文章。
块:Hdfs 以块的形式进行对话,例如: 如果您有 256 MB 的文件并且您已将块大小配置为 128 MB,那么现在为 256 MB 创建了 2 个块。
块大小可跨集群配置,甚至文件基础也可配置。
拆分:它与 map reduce 相关,您可以选择更改拆分大小,这意味着您可以将拆分大小修改为大于块大小或将拆分大小修改为小于块大小。默认情况下,如果您不进行任何配置,那么您的拆分大小大约等于块大小。
在 map reduce 处理中,生成的映射器数量将等于您的拆分数:对于一个文件,如果有 10 个拆分,那么将生成 10 个映射器。
当 put 命令被触发时,它转到 namenode,namenode 询问客户端(在这种情况下 hadoop fs 实用程序的行为就像一个客户端),将文件分成块并根据块大小,这可以在中定义hdfs-site.xml 然后,namenode 要求客户端将不同的块写入不同的数据节点。
实际数据将存储在数据节点上,数据的元数据意味着文件的块位置和文件属性将存储在名称节点上。
client首先与name node建立连接,一旦确认了块的存储位置,就直接创建一个 与数据节点的 tcp 连接并写入数据。
基于复制因子,其他副本将在 hadoop 集群中维护,它们的块信息将存储在 namenode 上。
但是在任何情况下,数据节点都不会有块的重复副本,这意味着不会在同一节点上复制相同的块。