图灵访谈之五:韩冀中专访

11月16日,图灵社区采访了《Hadoop实战》(Hadoop in Action)一书译者韩冀中博士,韩老师结合自己使用和开发Hadoop的经历,畅谈了他对Hadoop应用的看法,并对如何学习Hadoop提出了宝贵的建议,以下为访谈内容。

人物简介:韩冀中

博士,中国科学院计算技术研究所副研究员,研究生导师,长期从事并行分布式计算领域的科研工作。国内早期的Hadoop使用者之一,有丰富的相关应用开发经验。

研究方向: 大规模数据处理、并行程序调试、计算系统虚拟化。

图灵社区:能不能先介绍一下您目前的工作,和您接触Hadoop的经历。

韩冀中:我现在是中科院计算所的一名科研人员,有一个十几个人的团队,主要研究大数据的处理。我是在2008年接触Hadoop平台的。当时因为项目需要,希望能够在分布式系统上搭建地理信息系统。我们就尝试了在Hadoop平台上做空间算子的并行计算,并用HBase来支持Web地图浏览,后来也使用HBase来管理GPS这样的空间时序数据。在这个过程中,逐渐熟悉了Hadoop。这两年,我和实验室的王伟平、涂碧波老师的团队一起,与腾讯、国家电网等企业进行合作,开展了许多大数据平台的工作,或多或少都使用了Hadoop。

图灵社区:请问目前云计算、数据挖掘等等技术发展到了什么程度? Hadoop在其中又扮演怎样的角色?

韩冀中:要讲云计算、大数据和Hadoop,都很难不说Google,Google把数据当成是一种可以赚钱的资源,它建了许多数据中心来运维基于数据的服务,采用了许多有革命性的技术。实际上,对于任何公司和企业,数据都是非常重要的资源。现在,Google、微软、Amazon都有大数据平台,但是并不是所有的企业和公司都有能力来构建这样的系统。这就是为什么Hadoop会出现并迅猛发展的原因了。

Hadoop参照了Google的设计,但还是有许多不同之处。作为一个开源平台,而不是面向某个公司的业务来定制,Hadoop是非常成功的一个系统。但是,相对于Google等公司的平台,Hadoop在具体设计和实现上并不是最优的。但它拥有一个强大的开源社区,为大家提供了了一个稳定可靠的系统,还有许多成功的应用案例,这就使得它几乎是开源云计算平台的唯一选择。有些人可能没听说过Google的Pregel、Bigtable或者微软的DryadLINQ,但大多知道Hadoop、HBase和Hive。

分布式系统的历史其实很长,Hadoop是第一个能让普通大众完全掌握分布式系统的技术,它降低了分布式系统的门槛。过去,如果企业有处理大量数据处理的需求,要选择搭建分布式环境,就必须投入很高的成本,买昂贵的机器,还要求这方面的专业人才。而现在买差不多的机器,搭建一个Hadoop集群就可以了。当然不是说Hadoop对硬件的要求就非常低,而是因为现在一台简单的刀片能力也很强了。现在用一个几十万的平台,就可以做很多的事情,Hadoop把运维分布式系统的门槛降低了。就像Unix和Linux的关系,Unix并不大众化,而Linux则是一个大众化的东西,大家都可以去修改它,应用也非常广泛,从这一点上看,Hadoop是一个非常了不起的系统。

图灵社区:Hadoop在近些年经历了哪些变化呢?未来又会有哪些规划?

韩冀中:就像《Hadoop实战》这本书里提到的,Hadoop在0.20版本中引入了一个新的MapReduce API,作者预计在0.21中旧的API会被废弃。但实际上因为新API还有许多不完善的地方,所以我们现在看到0.21中依然保留了旧的API。按计划0.23版本会出现MapReduce 2.0,要说清楚这个,需要先说说MapReduce的含义。

Hadoop中的MapReduce其实包含了两个含义,一个是就是刚才讲的——给用户的编程模型API,另一个是指内部MapReduce的运行框架,负责资源调度和数据通信管理。现有的Hadoop中,MapReduce的编程模型和运行框架是绑定死的,而在MapReduce 2.0中,会把JobTracker分为ResourceManager和ApplicationMaster,分离编程模型与运行框架。这相当于把应用和资源分别管理,让系统架构更为灵活高效,就可以在一个平台上支持多个编程模型,适应更多的应用。对于Hadoop而言,这是的一个非常大的修改。

除了MapReduce外,未来的Hadoop版本还会在HDFS、HBase、Hive等方面做出许多改进,在Hadoop官方网站上可以了解到很多相关的信息。

图灵社区:对于Hadoop是NoSQL应用程序框架这一概念,能否谈谈您的理解?

**韩冀中:**Hadoop是一个复杂的系统。Hadoop中的HBase是一种NoSQL系统,而Hive又是一种支持SQL查询的工具。前者是基于列存储技术、面向小数据块随机访问的。后者是在架构在MapReduce之上、对数据进行批量处理的技术。如果访问Hadoop的主页,你会发现Hadoop的主项目中是没有HBase的。因为Hadoop的主体是MapReduce和HDFS,而Hbase、Hive、Pig等都是在外围相关子项目中的,它们共同构成了Hadoop的生态环境。再额外说一点,为什么说Hadoop社区做得好呢?就是因为这些新开发的系统会先放在孵化器里面,经过一定阶段,当它能够跟Hadoop的生态环境完美结合的时候,才会迁移进这个生态环境里,成为Hadoop的子项目。

HBase是一种发展得比较早的NoSQL系统,最早源于Google的BigTable架构,它的扩展性非常好。而且HBase可以和Hadoop进行紧密的融合,在运行MapReduce程序的时候,它能够保证良好的数据局部性。在这方面,它的优势很明显。

图灵社区:Hadoop有竞争对手吗?

韩冀中:我认为在大数据的批量处理方面,Hadoop在开源社区中没有敌手。这并非因为Hadoop足够完善,而是因为它有一个足够好的社区支持。

图灵社区:您近年来一直在研究基于key/value与MapReduce的存储计算框架,也是国内最早使用Hadoop的人之一,能否结合您的经历,谈谈Hadoop实际应用的情况?

韩冀中:我用Hadoop经过了大概三个阶段:第一个阶段,写MapReduce程序来解决应用问题,包括并行计算、数据存储和动态扩展等。第二个阶段,是跟企业结合,做一些跟Hadoop不一样的东西。现在是第三个阶段,根据用户需求,把Hadoop作为一个组件来使用,这种情况下会与其他系统进行整合。

现在,这个平台最大的优势是能够处理大量无结构、半结构化的数据,而互联网企业的很多数据是这种类型的,他们的使用也能够证明这个平台的价值。如果在互联网以外的领域,Hadoop的性能不见得就比数据库平台好,衡量它的性能还是跟应用有关系。对于Hadoop的评价,真正更有发言权的是那些互联网公司,他们每天都在运行这些系统,对运维的感受更直接。

我们后来使用Hadoop不是在互联网领域,而是在其他一些领域,比如电网,他们的需求跟互联网公司的需求是不一样的。跟这些公司的业务需求结合的时候,涉及的就不只是Hadoop这一个平台,同时要考虑怎么跟其他平台结合。我们经历过这种情况:企业过去是用数据库的,现在想迁移到这个平台,那么首先要解决的是基于SQL应用的切换。Hadoop本身有Hive这个工具,可以用来进行无缝切换,不过这样做以后,可能会发现性能上有些令人失望。

其实大家一直在讨论Hadoop跟数据库比较,哪个更好一些。实际上SQL数据库目前已有的产品,性能是非常好的。根据我们的实验测试,在单点性能上,Hadoop可能是比数据库要差的。Hadoop更多靠规模来取胜。很多人说Hadoop比数据库性能好多少,有可能是因为数据库没有调好。数据库用得好的,提供的性能也是能支持系统开发的,关键看应用需求。目前在真正的企业环境中,不会只用Hadoop,还会保留数据库。我认为这两者不是谁取代谁的关系,Hadoop并不会一统天下。

图灵社区:您了解国内开源爱好者对Hadoop社区的贡献吗?

韩冀中:具体不太了解,总体上看,国内的人目前还比较少。但我认识计算所查礼老师的团队的何永强,就是一个Hadoop Committer。

开源社区其实有赖于稳定的团体来运作,才能把它做好,并保证系统的稳定。Hadoop这样的离线系统对性能的要求不是最高的,更注重稳定性。Hadoop目前有Yahoo、Facebook、Cloudera等公司的参与,这种大公司采用它来管理集群,本身就具有很大的说服力。

图灵社区:《Hadoop实战》一书最后案例分析中有中国移动的案例,其实外文书使用中国案例的并不多见,您怎么看待这一情况?

韩冀中:《Hadoop实战》最后的几个案例是这本书很有特色的地方。的确,国外的书对中国的案例确实引用很少,这也从侧面说明这几年Hadoop在国内的发展很快。目前云计算应用的研究异常火热,一定会影响国内的大型企业和机构。Hadoop的核心技术是参照了Google这个互联网公司,所以目前比较成功的Hadoop应用主要是在互联网领域。而其它行业使用Hadoop,还需要与自身业务特征相结合,因此在应用的过程中还需要付出很大的努力。这也是我们目前和电网等企业合作的主要工作目标。

图灵社区:对于Hadoop的学习者,您有哪些建议呢?《Hadoop实战》这本书有什么样的特点呢?

韩冀中:Hadoop是个生态系统,不同学习者会对这个系统有不同的应用需求。我自己是从编程开始逐渐了解Hadoop的,我觉得这是一种可行也比较快的进阶方法。可能大多数人都是通过看官方文档或参考书,然后结合自己的工作熟悉Hadoop的。目前希望了解和使用Hadoop的人来自各个行业,甚至不同专业。相对于这个庞大的用户群而言,Hadoop的教材显得太少了。Hadoop的官方文档的确是非常全面的,对于高阶用户而言,应该经常查看,了解最新的更新。但对于刚刚了解Hadoop的读者,通过一本系统的书籍来学习是更好的,而且会大大缩短学习的时间。

《Hadoop实战》这本书除了讲解使用Hadoop所需的基础知识,还给出了编写和运行Hadoop数据处理程序所需的实践技能,最后还探讨了Hadoop之外更大的生态环境(Hive、Pig、HBase等)。我很欣赏作者的这个结构,我想这也是读者非常容易理解的一种结构。如果把这本书当成一部小说来看的话,MapReduce就是贯穿本书的主线。它并不是一本包罗万象的系统工具书,更像是一本简明的编程语言手册,有一点How To的意思。它在MapReduce编程方面也讲得比较深入透彻,有些内容来自于作者的宝贵的实践经验,是非常值得一读的。

那些希望实际使用MapReduce编程的读者,一定会很非常喜欢这本书。这本书给了许多数据的下载链接和一些实战练习,建议大家有时间做一做,会对MapReduce这个语言有更多的体会。学计算机不是一门科学,更像是一门艺术,真正有效的学习还是要从动手写代码开始。

如果想了解更多资讯和应用经验,大家可以关注一些会议,比如国外的Hadoop World,国内的Hadoop in China等等,每年都有一些很好的技术讲座,往年的也大多可以在一些视频网站上找到。

图灵社区:今年的Hadoop中国2011云计算大会就要召开了,主题是“海量数据掘宝”,您能否提前给我们透露些大会的看点?

韩冀中:这个会议是计算所查礼老师组织的,具体我不太清楚。不过据说今年请了Doug Cutting,重量级人物,非常值得期待。

图灵社区:据悉斯坦福和卡内基•梅隆等一流大学已经开始将Hadoop引入他们的计算机科学课程,国内院校的情况如何?

韩冀中:近几年我们在招生中,还没有看到本科生有开设过这方面课程的。计算所的詹剑锋老师在中科院研究生院开设了一个相关课程,其他院校不太了解。

图灵社区:《Hadoop实战》一书在寻找译者的过程中,王斌老师力荐我们请您翻译。这是您第一次独立完成一本书的翻译工作,能够谈谈这方面的感受?

韩冀中:非常谢谢王斌老师的推荐,让我有机会能够参与到这本书的翻译中。我很喜欢这本书的内容组织,很荣幸能够通过我的努力,把这本书介绍给国内的读者。

我是做科研的,科研工作者总是想把东西做得更完美一点,所以开始的时候特别细,每一个和原文字句不太一致的地方都会纠结半天,但后来慢慢学习翻译这件事,可能对于科技书来说,更追求准确表达技术本身,后面翻译的时候就调整了思路,更注重这方面。我现在再看一些文学方面的翻译书,会从翻译角度去体会,确实很不一样。翻译还是挺有意思的,自己做的东西一直在累进,之前没有这种长时间阅读和写作的经历,如果再有合适的书,我还是愿意来做的。这次翻译的过程对我帮助也比较大,起码写东西更快了(笑),我也想建议别人来做一次这样的工作。

因为这本书都是我在业余时间完成的,加之工作繁忙,经常打断进度,所以翻译得非常慢。在翻译的过程中,得到了图灵多位编辑的帮助,没有他们的支持和激励,我想我是无法完成这个工作的。在翻译的后期,经常是每翻译完一部分后,就发给编辑部。对我而言,这样做很有效。我想如果编辑部能够鼓励译者更多地进行有效沟通,特别是对翻译新手,不仅可以及时改正翻译中的错误,也可以推动翻译工作的进度。

图灵社区:感谢韩老师抽出时间接受图灵社区的采访。


更多精彩,加入图灵访谈微信!