服务器 频道

陈冠诚:Hadoop系统的软硬件协同优化

  【IT168 现场报道】2013年11月22-23日,作为国内知名专注于Hadoop技术与应用分享的大规模行业盛会,2013 Hadoop中国技术峰会(China Hadoop Summit 2013)于北京福朋喜来登集团酒店隆重举行。来自国内外各行业领域的近千名CIO、CTO、架构师、IT经理、咨询顾问、工程师、Hadoop技术爱好者,以及从事Hadoop研究与推广的IT厂商和技术专家将共襄盛举。

Hadoop软件在IBM服务器上的优化
▲IT168专题报道:http://www.it168.com/redian/Hadoop2013/

  Hadoop中国技术峰会由China Hadoop Summit专家委员会主办,由IT168、ITPUB、ChinaUnix协办,渠达传媒负责承办。本届大会将秉承“效能、应用、创新”为主题,旨在通过开放、广泛的分享和交流,着力于促进中国企业用户提高应用Hadoop的能力和水平,降低Hadoop技术应用门槛和投资预算门槛,推广大数据的应用价值。笔者目前所在的是主题论坛一:架构与实践,下面为大家带来主题演讲的是IBM中国研究院研究员陈冠诚,他演讲的题目是《Hadoop系统的软硬件协同优化》。以下为陈冠诚的演讲实录。

Hadoop软件在IBM服务器上的优化
▲IBM中国研究院研究员陈冠诚

  Hadoop软件在IBM服务器上的优化

  首先分享一下为什么要做软硬件协同一起优化?第一部分硬件体系结构优化。我们IBM研究院是一般大公司目标来说和产品的发布不直接的关联的。它的目标是做新技术的预研,如果你技术确实够好,会提供到IBM里去。我们小组作Hadoop新技术研发过程中发表一些论文,公开资料分享一些设计思想。有些东西可能进入到IBM中去。

Hadoop软件在IBM服务器上的优化

  在我个人理解中,一个IT解决方案一般经历三个发展阶段,第一个要Work,能够跑起来。确实不少人采用以后,说不能跑的更快一点?原来的太慢了,想办法把性能优化一下。把运营成本降低,就是你的竞争优势。对企业来讲,你开源节流,两条盈利路线,我粗浅的认为这样。大数据的平台能够跑的足够快,尽可能压榨采购硬件的潜力。

  到底针对什么样的人群做性能的优化?大部分来讲,处理是GB量的,不是所有的公司都像互联网公司一样,需要处理所谓TB级别,PB级别,几千台机器的规模,不是所有人都适用的。你各种各样行业的客户或者大学,到底日常处理多少量的数据量做你的大数据分析的平台?这是我们需要针对的优化的场景。

Hadoop软件在IBM服务器上的优化

  如果说不是每个人都处理GB级的级别,可能若干TB就是你的所有的数据了,在这样的平台怎么做系统的优化,这是我们首先给自己设定的权限的范围内。你会强调怎么样在这个环境下把你的性能尽可能压榨出来,这是你想要关注的问题。

  软硬件协同优化能取得什么样的效果?

  今年2月份我们对外宣布一个数据测试的结果。在10台服务器上可以把一个台序做到470秒,公开的X86服务器上,或者别的公司做的,发现我们10台机器达到别人20、30台机器达到的效果。硬件有水分很大的,大家看自己的笔记本电脑,十几年了,CPU的性能发生几千倍了,怎么还是那么慢?就是因为你的硬件数据没有被充分的挖掘出来。你大数据平台,必须充分挖掘你的硬件的潜力,才能更好的发挥出来。

软硬件协同优化能取得的效果

  硬件线上必须要有足够大的内存带宽支撑他,所以我们会设计高达128G内存通道的带宽来支持一个线程。我们可以80M的L3G缓存上去。刚才介绍了硬件的东西,后面做详细的介绍。

  比如说,有四种不同的颜色的方块,每一个代表CPU流水线某一种处理器。读写指令,分支预测,只有两种线程跑的话,等着取数据,写数据,需要等待,需要判断,会造成流水线的闲置。只有两用线程可以跑出来,就会有很多CPU的资源是被空闲的。但是CPU也不是越高越好。对不同类型来讲,本身最优值有可能不一样的,直接默认最高设置就好了。确实有些应用设置更低一点。我们有些资源是被线程共享的,那些资源正好被你这几个线程征用了,可能确实把它降下来。硬件给你提供这样的性能,还需调一调,别放在那里不管了,可能没有挖掘出来充分的潜力。

软硬件协同优化能取得的效果

  第二个例子,怎么样把下一个要读的数据设起来。可以设置一次取十行,还是十二行,类似这样的概念。你读的时候,写操作是不是预先取?比如要写第二行,是不是也让他帮你提前取出来。如果对数据的访问不是连续的,写第四行,跳着写,能不能也开一个策略,能够有这样的测试?对大数据应用来讲,本身数据的存储比较线性,比较规律的。可以尝试写一个把所有的调的预取的策略全部的打开,可能会有很大的兴趣。

软硬件协同优化能取得的效果

  调优可能有点老生常谈,简单讲一讲我们的经验。你需要针对应用每一个场景做针对性的JVM调整,有一个28法则,可能花20%的时间能够得到80%的效果,这个规则是成立的。怎么达到这一点?我们两步走。第一步调JVM调到合适。第二步有些运行时优化的参数可以打开。

1
相关文章