我已经安装了Apache Hadoop 2.x
以及5个异构节点,其中一个节点纯粹专用于NameNode。用于异构Hadoop集群的HDFS中的数据分布和分布
我正在使用下面的命令将我的输入文件放入HDFS
。
$ hdfs dfs -put /home/hduser/myspace/data /user/hduser/inputfile
HDFS
复制在三个DataNodes (DN)
该输入文件时,它意味着一个第四DataNode
不具有输入块。如果我使用8个映射器(通过使用NLineInputFormat()
方法设置分割大小),那么将这8个映射器分配给所有4个DN。我认为它应该是。在这种情况下,来自其他DN的数据块将移至第4个DN,由分配给它的映射器计算,这会增加总体执行时间。
我的问题是:
我们能否以某种方式设法将数据块上的每个DNS,这样就没有必要对一个特定的DN映射器移动数据。它可以通过hdfs的“放”命令来完成吗?
同样在异构集群的情况下,我们可以根据节点的计算能力将不同大小的数据放在不同的DN上吗?
让我们有一个大小为40 MB的输入文件。当我们把它放到hdfs中时,它会变成3个DN(让DN1,DN2,DN3),那么如果我们使用4个映射器运行,在DN4上运行的映射器将如何得到输入? –