提高MapReduce性能的七点建议(中文版).pdfVIP

提高MapReduce性能的七点建议(中文版).pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
提高MapReduce性能的七点建议(中文版)

提高MapReduce 性能的七点建议 提高MapReduce 性能的七点建议 Cloudera提供给客户的服务内容之一就是调整和优化MapReduce job执行性 能。MapReduce和HDFS组成一个复杂的分布式系统,并且它们运行着各式各样用 户的代码,这样导致没有一个快速有效的规则来实现优化 代码性能的目的。在我看 来,调整cluster或job 的运行更像一个医生对待病人一样,找出关键的“症状”,对于不 同的症状有不同的诊断和处理方式。 在医学领域,没有什么可以代替一位经验丰富的医生;在复杂的分布式系统上, 这个道理依然正确—有经验的用户和操作者在面对很多常见问题上都会有“第六 感” 。我曾经为Cloudera不同行业的客户解决过问题,他们面对的工作量、数据集和 cluster硬件有很大区别,因此我在这方面积累了很多的经验, 并且想把这些经验分 享给诸位。 在这篇文章里,我会高亮那些提高MapReduce性能的建议。前面的一些建议是 面向整个cluster的,这可能会对cluster 操作者和开发者有帮助。后面一部分建议是 为那些用Java编写MapReduce job的开发者而提出。在每一个建议中,我列出一些“症 状”或是“诊断测试”来说明一些针对这些问题的改进措施,可能会对你有所帮助。 请注意,这些建议中包含很多我以往从各种不同场景下总结出来的直观经验。 它们可能不太适用于你所面对的特殊的工作量、数据集或cluster,如果你想使 用它, 就需要测试使用前和使用后它在你的cluster环境中的表现。对于这些建议,我会展示 第 1 页 共 11 页 提高MapReduce 性能的七点建议 一些对比性的数据,数据产生的环境是一个4 个节点的 cluster来运行40GB 的 Wordcount job 。应用了我以下所提到的这些建议后,这个job 中的每个map task大概 运行33 秒,job 总共执行了差不多8 分30 秒。 第一点 正确地配置你的Cluster 诊断结果/症状: 1. Linux top命令的结果显示slave节点在所有map和reduce slot都有task运行时依然 很空闲。 2. top命令显示内核的进程,如RAID(mdX_raid*)或pdflush 占去大量的CPU时间。 3. Linux的平均负载通常是系统CPU数量的2 倍。 4. 即使系统正在运行job ,Linux平均负载总是保持在系统CPU数量的一半的状态。 5. 一些节点上的swap利用率超过几MB 优化你的MapReduce性能的第一步是确保你整个cluster的配置文件被调整过。对 于新手,请参考这里关于配置参数的一篇blog:配置参数 。 除了这些配置参数 , 在你想修改job参数以期提高性能时,你应该参照下我这里的一些你应该注意的项: 1. 确保你正在DFS和MapReduce中使用的存储mount被设置了noatime选项。这项 如果设置就不会启动对磁盘访问时间的记录,会显著提高IO的性能。 2. 避免在TaskTracker和DataNode的机器上执行RAID和LVM操作,这通常会降低性 能 3. 在这两个参数mapred.local.dir 和dfs.data.dir 配置的值应当是分布在各个磁盘上 第 2 页 共 11 页 提高MapReduce 性能的七点建议 目录,这样可以充分利用节点的IO读写能力。运行 Linux sysstat包下的iostat -dx 5 命 令可以让每个磁盘都显示它的利用率。 4. 你应该有一个聪明的监控系统来监控磁盘设备的健康状态。MapReduce job的设 计是可容忍磁盘失败,但磁盘的异常会导致一些task重复执行而使性能下降。如果你 发现在某个TaskTracker被很多job 中列入黑名单,那么它就可能有问题。 5. 使用像Ganglia这样的工具监控并绘出swap和网络的利用率图。如果你从监控的 图看出机器正在使用swap 内存,那么减少mapred.child.java.opts 属性所表示的内存 分配。 基准测试: 很遗憾我不能为这个建议去生成一些测试数

文档评论(0)

wannian118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档