运行Hadoop时如何避免OutOfMemoryException?

英国:

我正在执行超过1.5 TB数据的Hadoop作业,并进行了大量模式匹配。我有几台机器,每台机器都有16GB的RAM,我总是OutOfMemoryException用这些数据来完成这项工作(我正在使用Hive)。

我想知道如何HADOOP_HEAPSIZE在文件中优化设置选项hadoop-env.sh所以我的工作不会失败。甚至可以设置此选项以使我的工作不会失败吗?

当我设置HADOOP_HEAPSIZE为1.5 GB并从查询中删除了一半的模式匹配时,作业成功运行。那么,如果该选项不能帮助避免作业失败,那么该选项又有什么用呢?

我想做更多关于最佳设置的实验,但是由于这些工作需要> 10个小时才能运行,因此我正在征求您的建议。

乔·斯坦(Joe Stein):

作业失败还是服务器崩溃?如果您的作业由于节点上的内存不足而失败,那么您可以减少最大映射数和缩减器的数量,而JVM选择它们的数量,这样就永远不会发生。通常必须根据您的数据节点特定的硬件来增加mapred.child.java.opts(默认值为200Xmx)。

http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-cluster/

可以在Namenode上设置最大任务,也可以在可能具有不同硬件配置的数据节点上覆盖(设置为final)。为映射器和化简器设置了最大任务。要计算此值,它基于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个内核)。请注意,如果您只有1个CPU和1个核心,那么这些最大任务是由CPU完成的,那么现在该为数据节点获取新硬件或将掩码任务设置为1了。

默认情况下,只有一个化简器,您需要将mapred.reduce.tasks配置为多个。该值应介于0.95到1.75倍之间,该值是每个节点的最大任务数乘以数据节点的数目。因此,如果您有3个数据节点并且设置的最大任务数为7,则在25到36之间进行配置。

如果您的服务器因内存不足问题而崩溃,那么HADOOP_HEAPSIZE就是在其中用于进程堆(而不是任务的执行)的地方。

最后,如果您的工作花了那么长时间,您可以检查一下mapred.compress.map.output是否还有另一个不错的配置。将此值设置为true应该(在压缩时间与传输时间之间取得平衡)可以极大地加快化简机的复制速度,尤其是在处理大型数据集时。通常,工作确实需要时间,但也有一些选项可以调整以帮助加快工作速度= 8 ^)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

运行命令时如何避免僵尸进程?

如何加速Hibernate批处理并避免OutOfMemoryException

运行gradle任务时如何避免创建构建目录?

没有主机匹配时如何避免剧本运行?

运行混合测试时如何避免ExUnit.start()错误

MarkLogic CORB-运行corb时如何避免超时

从CDN运行babel时,如何避免React应用出现错误“意外令牌<”?

在运行NUXT.js和Axios时如何避免代码重复?

如何在运行雅典娜查询时避免重复数据扫描

由于大小写敏感,如何在Linux上运行Java时避免FileNotFound异常?

实现堆数据结构时如何避免运行时错误?

单击html表内的超链接时,如何避免运行此jQuery代码?

在运行时选择模板参数时如何避免代码的指数增长

如何避免在 Spring Cloud Data Flow 上仍处于运行状态时重新启动任务

即使使用--no-build标志,在运行dotnet测试时如何避免Wix构建错误?

当更改<Compile>和<EmbeddedResource>之外的文件时,如何避免Visual Studio增量生成无法运行?

运行Matlab引擎时如何避免出现Matlab启动画面

添加新的NuGet包时如何解决OutOfMemoryException错误?

运行hadoop jar时连接拒绝异常

如何从 crontab 运行脚本并避免“LoadError”

如何避免并行运行某些测试?

完善如何避免重新运行任务

如何避免模块代码过早运行?

佩斯特:如何避免脚本运行?

如何避免Phusion Passenger以root身份运行?

在另一台计算机上运行python脚本时如何避免重写文件路径?

当我运行ng build时如何配置服务器部分或前端以避免找不到错误404

尝试在实际的Apple Watch上构建和运行WatchKit扩展时,如何避免出现错误“错误启动AppName'WatchKit扩展”?

运行启用了自动缩放功能的Google Container / Kubernetes Engine集群时,如何避免计划外的Pod?