我想把map任务中的一些值存储到每个数据节点的本地磁盘中。例如,
public void map (...) {
//Process
List<Object> cache = new ArrayList<Object>();
//Add value to cache
//Serialize cache to local file in this data node
}
如何将这个缓存对象存储到每个数据节点的本地磁盘上,因为如果像上面那样将这个缓存存储在map函数中,那么性能会因为i/o任务而变得很差?
我的意思是,有没有办法等待这个数据节点中的map任务完全运行,然后我们将这个缓存存储到本地磁盘?或者hadoop有解决这个问题的功能吗?
1条答案
按热度按时间gxwragnw1#
请参阅下面的示例,创建的文件将位于nodemanager用于容器的目录下的某个位置。这是yarn-site.xml中的配置属性yarn.nodemanager.local-dirs,或从yarn-default.xml继承的默认值,位于
/tmp
请参阅@chris nauroth answer,它说它只是用于调试目的,不建议作为永久性的生产配置。它清楚地描述了为什么不建议这样做。