明明在同一台物理机上,但由于不同的 container 需要分配不同的 IP,所以 yarn 之类的组件无法识别yarn-nodemanager1
和hdfs-datanode1
两台机器是可以通过短路读(也就是hdfs-datanode1
在本地打开需要传输的 block,然后把 fd 交给yarn-nodemanager1
)传输数据的,最后数据还是通过网络传输的,浪费了很多性能。如果要解决这个问题,具体要解决两个方面的内容:
yarn-resourcemanager
需要感知到不同yarn-nodemanger
与hdfs-datanode
的对应关系,并且尽可能把任务分配到可以短路读的节点上;yarn-nodemanager
需要感知到自己可以从哪个hdfs-datanode
短路读。目前的做法就是硬编码+改源码,现在要上 impala 了类似的事情又要再做一遍,感到十分头疼。各位老哥有没有什么优雅点的解决方案?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.