请澄清我1)在hadoop中块、块和文件分割有什么区别??2) $hadoop fs-put命令的内部过程是什么?
mbyulnm01#
块、块或文件分割是指同一事物。也就是说,hdfs按块大小(通常为128或256mb)分割文件,这些块本身被复制一个可配置的(通常为3)次。至于put命令,最终您将创建一个管道,在该管道中,namenode(对于每个块)告诉客户机要将其复制到哪个datanode,然后dn将其复制到一个friend,friend又将其复制到friend。在本文的“复制管道”部分有一个小的描述https://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/hdfsdesign.html. 第14张幻灯片上有一个视频http://www.slideshare.net/lestermartin/hadoop-demystified 也。
fsi0uk1n2#
block:hdfs用块来表示,例如:如果您有256mb的文件,并且您已经配置了块大小为128mb,那么现在将为256mb创建2个块。块大小可以跨集群甚至文件进行配置。分割:它与map reduce有关,您可以选择更改分割大小,这意味着您可以修改大于块大小的分割大小或小于块大小的分割大小。默认情况下,如果不进行任何配置,则分割大小大约等于块大小。在MapReduce处理中,生成的Map器数量将等于您的拆分数量:对于一个文件,如果有10个拆分,那么将生成10个Map器。当put命令被触发时,它将转到namenode,namenode请求client(在本例中,hadoop fs实用程序的行为类似于客户端),将文件分成块,并根据块大小(可以在hdfs-site.xml中定义)将文件分成块,然后,namenode请求client将不同的块写入不同的数据节点。实际数据将存储在数据节点上,数据的元数据意味着文件的块位置和文件属性将存储在名称节点上。客户机首先与name node建立连接,一旦确定了块的存放位置,就直接与数据节点建立tcp连接并写入数据。根据复制因子,其他副本将在hadoop集群中维护,它们的块信息将存储在namenode上。但在任何情况下,数据节点都不会有块的重复副本,这意味着同一块不会在同一节点上复制。
2条答案
按热度按时间mbyulnm01#
块、块或文件分割是指同一事物。也就是说,hdfs按块大小(通常为128或256mb)分割文件,这些块本身被复制一个可配置的(通常为3)次。
至于put命令,最终您将创建一个管道,在该管道中,namenode(对于每个块)告诉客户机要将其复制到哪个datanode,然后dn将其复制到一个friend,friend又将其复制到friend。在本文的“复制管道”部分有一个小的描述https://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-hdfs/hdfsdesign.html. 第14张幻灯片上有一个视频http://www.slideshare.net/lestermartin/hadoop-demystified 也。
fsi0uk1n2#
block:hdfs用块来表示,例如:如果您有256mb的文件,并且您已经配置了块大小为128mb,那么现在将为256mb创建2个块。
块大小可以跨集群甚至文件进行配置。
分割:它与map reduce有关,您可以选择更改分割大小,这意味着您可以修改大于块大小的分割大小或小于块大小的分割大小。默认情况下,如果不进行任何配置,则分割大小大约等于块大小。
在MapReduce处理中,生成的Map器数量将等于您的拆分数量:对于一个文件,如果有10个拆分,那么将生成10个Map器。
当put命令被触发时,它将转到namenode,namenode请求client(在本例中,hadoop fs实用程序的行为类似于客户端),将文件分成块,并根据块大小(可以在hdfs-site.xml中定义)将文件分成块,然后,namenode请求client将不同的块写入不同的数据节点。
实际数据将存储在数据节点上,数据的元数据意味着文件的块位置和文件属性将存储在名称节点上。
客户机首先与name node建立连接,一旦确定了块的存放位置,就直接与数据节点建立tcp连接并写入数据。
根据复制因子,其他副本将在hadoop集群中维护,它们的块信息将存储在namenode上。
但在任何情况下,数据节点都不会有块的重复副本,这意味着同一块不会在同一节点上复制。