如果我将数据从本地系统复制到HDFS,我可以确定它是在节点间均匀分布的吗?
PS HDFS保证每个块将存储在3个不同的节点上.但这是否意味着我的文件的所有块将在相同的3个节点上排序?或者HDFS会为每个新块随机选择它们吗?
如果您的复制设置为3,它将被放在3个单独的节点上.放置的节点数由复制因子控制.如果需要更高的分发,则可以通过编辑$HADOOP_HOME/conf/hadoop-site.xml和更改dfs.replication值来增加复制数.
我相信新的块几乎是随机放置的.在不同机架上分配时需要考虑一些因素(当hadoop意识到机架时).有一个示例(找不到链接),如果您在3个和2个机架上进行复制,则2个块将位于一个机架中,第三个块将放置在另一个机架中.我猜想没有显示哪个节点获取机架中的块的首选项.
我没有看到任何指示或声明在同一节点上存储同一文件块的首选项.
如果您正在寻找各种方法来强制跨节点平衡数据(复制无论什么值),一个简单的选项就是$HADOOP_HOME/bin/start-balancer.sh运行一个平衡过程来自动在集群中移动块.在Hadoop常见问题解答中可以找到这个和其他一些平衡选项
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
14112 次 |
| 最近记录: |