目前,我正在为我的雇主负责一个快速增长的Hadoop集群,该集群目前build立在0.21.0版本上,CentOS作为每个工作者和主节点的操作系统。 我已经完成了大部分标准configuration问题(负载均衡,HDFS的IO规划,确保有足够的磁盘空间可用于溢出操作等等),但是没有find关于pipe理文件描述符数量的好文档每个任务跟踪器,数据节点,映射器或Reducer所需的。
到目前为止,我已经阅读过的文档(跨Hadoop和HBase)隐约地指向溢出操作,当它试图写入磁盘时,会同时消耗大量的描述符。 这个文档当然不提供所述描述符的范围或预期的生命周期的细分。 唯一的build议是提高系统的限制,这是一个合理的解决办法,而且作为长期规划战略是虚假的。
我没有关于Hadoop对所需文件描述符数量的假设的信息。 因此,在普通作业(即,不依赖MultipleOutputs)的生命周期中,每个映射器,Reducer,任务跟踪器和数据节点所需的文件描述符总数的configuration相关计算将非常有用。
目前是否有这样的计算?如果是这样的话,我可以合理地估计一下,我的极限应该与定义的任意数量的工作相关吗?
(为了增加这个问题的可能性,其他人会遇到这个问题,当可用的描述符池已经耗尽时,Hadoop会高兴地抛出java.io.EOFException和java.io.IOException(指向一个坏文件描述符)。因为这些例外所包含的信息是非常通用的,所以花了我几个小时来追查。)
这是Hadoop生态系统中存在的主要问题,AFAIK对于这种资源的全面规划并没有一个好的答案。 总的来说,这不是一个企业级质量的Hadoop发行版,它将支持您正在应用于您的系统的值得称道的努力水平。
但是,我确信在接下来的几个月里会有一个。