我想修改 HDFS 的默认块放置策略以适合我的应用程序。
例如,我有两个文件,分别是 file1(128MB) 和 file2(128MB)。块大小为 64MB,每个文件将被分成两个块。
我想确保 file1 和 file2 的 block1 都放在同一个数据节点上。如果可能的话,我还想确保副本也放置在同一组数据节点上。
问题 1. 这可能吗?如果是这样,源代码中的哪些类需要修改?问题2、copyFromLocal等命令是如何映射到hadoop源码中的函数的?
可以通过扩展BlockPlacementPolicy接口并将类指向Hadoop 配置文件中的dfs.block.replicator.classname属性来修改块放置策略的默认行为。
Hadoop 操作不依赖于特定节点,这使得 Hadoop 对分布式计算中的固有问题更具弹性。在特定节点上有两个文件的块有什么要求?有了已知的需求,就可以找到更好的解决方案。