wlk*_*wlk 14 java hadoop out-of-memory
我正在通过大量模式匹配来运行超过1.5 TB数据的Hadoop作业.我有几台机器,每台机器有16GB RAM,而且我总是OutOfMemoryException用这些数据来处理这个工作(我正在使用Hive).
我想知道如何HADOOP_HEAPSIZE在文件中最佳地设置选项,hadoop-env.sh所以我的工作不会失败.是否可以设置此选项,以便我的工作不会失败?
当我设置HADOOP_HEAPSIZE为1.5 GB并从查询中删除一半模式匹配时,作业成功运行.那么这个选项是什么,如果它无助于避免失败?
我打算做更多的优化设置试验,但由于这些工作需要> 10小时才能运行,我会征求您的意见.
Joe*_*ein 13
作业失败还是服务器崩溃?如果您的作业由于节点上的OutOfMemmory而失败,您可以调整最大映射和缩减器的数量以及JVM的每个选项,以便永远不会发生.mapred.child.java.opts(默认值为200Xmx)通常必须根据您的数据节点特定硬件进行增加.
http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-cluster/
可以在Namenode上设置最大任务,或者在可能具有不同硬件配置的数据节点上覆盖(并设置最终)最大任务.为映射器和减速器设置最大任务.要计算它,它基于CPU(核心)和您拥有的RAM量以及您在mapred.child.java.opts中设置的JVM max(默认值为200).Datanode和Tasktracker都设置为1GB,因此对于8GB机器,mapred.tasktracker.map.tasks.maximum可以设置为7,mapred.tasktracker.reduce.tasks.maximum设置为7,使用mapred.child.java .opts设置为-400Xmx(假设8个核心).请注意,这些任务马克塞斯被你的CPU尽可能多的做,如果你只有1个CPU与1个核心,则是拿到新的硬件为您的数据节点或设置掩码任务1.
默认情况下,只有一个reducer,您需要将mapred.reduce.tasks配置为多个.此值应介于每个节点的最大任务数乘以数据节点数的0.95和1.75倍之间.因此,如果您有3个数据节点,并且设置最大任务数为7,则将其配置为25到36之间.
如果您的服务器崩溃了OutOfMemory问题,那么HADOOP_HEAPSIZE只是为进程堆(而不是任务的执行)而来.
最后,如果您的Job花了这么长时间,您可以检查是否有另外一个好的配置添加是mapred.compress.map.output.将此值设置为true应该(压缩与传输的时间之间的平衡)大大加快Reducer复制速度,尤其是在处理大型数据集时.通常工作确实需要时间,但也有一些选项可以调整以帮助加快速度= 8 ^)
| 归档时间: |
|
| 查看次数: |
22820 次 |
| 最近记录: |