关于hadoop中的局部性问题和块管理

vvppvyoh  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(278)

我一直在做我的毕业设计,我们要实现的主题是在hadoop上做一些图像搜索。我们使用opencv库进行图像处理。到目前为止,我们已经得到了一个原型工作,但效率并没有达到我们的预期。
现在,我们希望确保将Map作业正确地分配给数据所在的从属节点(即,我们希望分配给该节点的作业只处理确切节点上的块),我的理解是,这意味着我需要知道我的每个数据块的位置,还有一些关于chunk的信息(例如,哪个chunk被分配给哪个slave node…等等),我在http管理接口上找到了一些信息(默认情况下使用端口50030的那个),但是这还不够,收集我需要的信息也很费时。那么,有没有办法看到这样的信息?有日志文件或api吗?
而且,如果我们对hadoop调度器分配任务的方式不满意,有没有办法干扰每个块的分配方式?或者hadoop如何分割输入?我知道这将是一个噩梦手动完成所有的工作,原来由调度程序,但我希望保持这作为我们的最后手段。
长话短说,
我可以通过hadoop的logs/api获得块级信息吗?比如有多少块,这些块的位置……等等,jobtracker的http接口上的信息是不够的。
有没有办法干扰作业分配、区块分配以及hadoop分割输入的方式?
提前谢谢。

wgmfuz8q

wgmfuz8q1#

您可以通过代码或通过命令行获取块/块信息。请参阅如何通过hdfs检查分布式数据以获取命令行信息。
是的,可能有。您可以覆盖 InputSplit / RecordReader 修改输入的拆分方式,但您可能无法轻松完成所需的操作。

相关问题