我已经安装了5个异构节点的Apache Hadoop 2.x,其中一个节点纯粹用于NameNode。
我使用下面的命令将输入文件放入HDFS中。
$ hdfs dfs -put /home/hduser/myspace/data /user/hduser/inputfileHDFS在三个DataNodes (DN)上复制这个输入文件,这意味着第四个DataNode没有输入块。如果我使用8个映射器(通过使用NLineInputFormat()方法设置拆分大小),那么这8个映射器是否会分配给所有4个DNs。我觉得应该是。在这种情况下,来自其他DNs的数据块将移动到第4个DN,由分配给它的映射器计算,这将增加整个执行时间。
我的问题是:
发布于 2015-10-12 15:58:39
我们不能设法将数据块放在每个提到的DN.You复制文件到3个DNs上。只有当您的文件大小小于块大小时,才是正确的。HDFS通过将文件划分为多个块来复制数据。因此,文件数据(块)分布在所有4个DNs中的可能性更大。
发布于 2015-10-14 13:27:17
块放置完全依赖于hadoop,它将在内部管理块放置,您只能通过
dfs.replication.factor
或大小
dfs.block.size
来完成你想要的。
如果要检查块位置,可以打开HDFS的Web,如下所示
编号:50070
然后浏览到这里的文件,它将显示块在所有节点中的位置。
https://stackoverflow.com/questions/33083990
复制相似问题