现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

翟周伟:我与Hadoop的不解之缘

2016-03-08 23:30 工业·编程 ⁄ 共 4866字 ⁄ 字号 暂无评论

翟周伟,资深Hadoop技术专家,专注于Hadoop&大数据,数据挖掘,自然语言处理领域,目前就职于百度。2009年,利用Hadoop构建商业级大数据系统,是国内该领域最早的一批人之一;负责设计多个基于Hadoop的大数据平台和分析系统;2011年合著出版《Hadoop开源云计算平台》,并在自然语言处理领域申请过一项发明专利;2015年,完成著作《Hadoop核心技术》一书。

日前,CSDN记者采访了翟周伟,请他解读Hadoop发展现状、特性及发展前景,分享创作《Hadoop核心技术》一书的灵感来源以及经验感悟。

CSDN:首先请介绍下自已、目前所在公司以及负责的领域。

翟周伟:北京邮电大学研究生毕业,目前任职于百度,主要从事网页搜索相关的大规模数据挖掘和自然语言处理领域相关研发工作。

CSDN:Hadoop在百度主要运用在哪些领域?使用情况是怎样的?

翟周伟:Hadoop在百度的应用领域主要包括:大数据挖掘与分析,日志分析平台,数据仓库系统,用户行为分析系统,广告平台等存储与计算服务。

目前百度的Hadoop集群规模已经超过数十个至多,单集群节点数目超过5000台,每天处理的数据量超过8000TB。同时百度在Hadoop的基础上还开发了自己的日志分析平台、数据仓库系统,以及统一C++编程接口,并对Hadoop深度改造,开发了性能更强的HCE(Hadoop C++ Extend Systerm)系统。

邂逅Hadoop

CSDN:你是从什么时候开始接触Hadoop?作为一名Hadoop技术专家最吸引你的是什么?有没有背后的故事分享给大家?

翟周伟:我从2009年9月份开始接触Hadoop,Hadoop已经成为工业界大数据领域的事实标准,最吸引我的是最初Hadoop在大数据处理领域给我的震感,因为在使用Hadoop之前如果要处理上百TB的数据是一件非常困难的事情,首先需要考虑如何将这些数据存储下来,然后还需要考虑如何划分,以及数据容错性等复杂问题,而要完成这样的工作没有1个月的时间是很难搞定的,但是在Hadoop的帮助下一天甚至几个小时就可以完成从程序开发到最终数据产出,而且想想自己可以在很短的时间内操作成千上百台的集群来处理上百TB的数据,还是很震撼的。

CSDN:在国内,你是利用Hadoop构建商业级大数据系统领域最早的人选之一,可以说是敢于吃螃蟹的第一人。那么,你是如何成为核心成员的?在开发期间有没有遇到过什么困难?又是如何克服的?

翟周伟:早在2009年的时候我们就尝试使用Hadoop技术为中国电信研究院,移动研究院等机构构建大数据云平台并作为生产平台为线上业务提供云存储与计算分析服务。这在当时来讲是国内将Hadoop落地应用的最早实践者之一。

在最初参与开发这些项目的时候我还并不是核心成员,而我要做的就是在项目中不断学习并积累Hadoop和大数据相关知识,最重要的就是在项目开发过程中证明自己,证明自己有足够的知识积累和能力完成项目并超出预期,当然在这个过程中也会遇到一些困难和挫折,例如数据的产出和预期不符,系统性能遇到瓶颈等问题,在面对这些问题的时候首先就是不能怕,对自己能解决这些问题要有足够的信心,然后就是认真分析问题,一步一步DEBUG定位问题,最终就可以解决掉这些问题,这也是一个艰苦的工作,不过我更享受成功后的那种喜悦之情,因为我喜欢技术挑战。

Hadoop发展现状、特性及发展前景

CSDN:你怎么看待国内外的Hadoop发展现状?可否预测下Hadoop未来的发展前景?

翟周伟:目前Hadoop可以说是已经成为工业界大数据领域的事实标准,在国外主要以Yahoo、Facebook、EBay、IBM等为代表;在国内则以百度、腾讯、阿里等互联网公司为主。而Hadoop作为开源软件,这些大公司的使用和改进迭代进而又完善并推动Hadoop的进一步发展,因此Hadoop的发展是离不开这些互联网公司的使用,从本质上看还是因为互联网的快速发展导致了海量数据的分布式存储和计算需求,而Hadoop正是为这样的需求提供了非常好的解决方案。

对于Hadoop的发展前景我从以下几个方面谈谈:

第一个方向就是统一资源管理与调度方向,目前各大互联网公司商用的Hadoop集群还是以Hadoop-1.X版本为主,Hadoop-1.X版本的有效性和稳定性已经得到验证,但是Hadoop-1.X也存在很多问题,例如资源分配以槽位为基本单元,没有考虑到应用实际需要的内存,CPU等资源;还有就是Hadoop-1.X仅仅只支持MapReduce模型,计算资源利用率不高,一个MR任务只能包含一个map和一个reduce任务,而实际需求往往是一个DAG任务。针对这些问题社区版Hadoop-2.X提出了YARN框架,在资源管理层来解决这些问题,同时各大商用发行版以及互联网公司也提出类似的框架来解决Hadoop-1.X中的问题。

第二个发展方向就是Hadoop高可用性解决方案,目前的Hadoop还是单Master节点设计,因此集群的规模受到主节点的硬件配置限制,同时可靠性上存在单点故障(SPOF )问题,这一点目前各大Hadoop商业发行版以及各大互联网公司都在研发多Master节点设计的解决方案,因此也是未来重点方向。

第三个发展方向就是Hadoop生态系统集成,目前Hadoop已经发展为一个完备的生态系统,这个生态系统最底层以HDFS和MapReduce为核心,上层为各种存储,计算,分析等应用系统,如何将这些系统很好的集成起来形成一个类似完善的分布式操作系统和云计算应用系统是一个非常诱人的发展方向。

第四点就是灵活性上,目前的Hadoop为用户提供了非常便利的并行计算框架,但是这个框架本身的流程过于复杂,用户实际的需求往往很简单,例如Hadoop中在map的输出和reduce的输入都需要进行排序,而实际上并不是所有的任务都需要排序,因此对于那些不需要排序的应用就会造成资源的浪费又消耗了时间。如果可以提供是否配需的可控制参数就可以很好的解决类似的问题。因此Hadoop的灵活性上也是一个发展方向。

CSDN:Hadoop与Spark相比,两者之间有哪些异同点?各自的优势是什么?此外,Hadoop与Spark都支持容错性,Spark在容错性方面是否比Hadoop更具优越性?你怎么看?

翟周伟:在基本原理上:Hadoop和Spark最大的区别在于Hadoop是基于磁盘的大数据批处理系统;而Spark是基于弹性分布式数据集(RDD,显式地将数据存储到磁盘和内存中)。在模型上,Hadoop以MapReduce模型为核心,而Spark除了map和reduce函数操作之外的很多函数操作,诸如join、groupBy、reduceByKey等。

在优势上,Hadoop可以处理超大规模的数据,适合日志分析挖掘等较少迭代的长任务需求,同时Hadoop很好的结合了数据的分布式存储和计算;而Spark适合数据挖掘,机器学习等多轮迭代式计算任务,Spark本身并没有提高数据的分布式存储解决方案,还需要依赖HDFS等第三方存储系统。

在容错性上需要考虑两个方面,第一就是数据容错性;第二就是节点容错性。Hadoop在数据容错性上考虑的很全面,从HDFS本身的冗余复制机制,到安全模式,数据校验,元数据保护,快照机制等,在节点容错性上Hadoop从资源调度层次来解决。而Spark在数据容错性上是建立在RDD概念之上,当一个节点出现故障时,Spark会根据存储信息重新构造数据集。因此Spark在容错性上并不比Hadoop具有优越性,应该是在容错性上Hadoop考虑的更全面,而Spark更加在意处理数据的效率和响应时间。

CSDN:Hadoop已经成为大数据工业级的标准,有很多组件,比如Hive、Hbase、HDFS等,能说说各自的优缺点以及适合的场景吗?

翟周伟:优缺点以及适应场景如下表格:

 

Hive

Hbase

HDFS

优点

提供了类似SQL的 HiveQL语言进行数据查询。

基于HDFS以多维度排序的映射表形式,key-value存储检索非常高效。

接口简单,使用方便。

缺点

延时大,大规模数据后置处理,数据的前置处理比较简单使得数据预处理不充分。

不支持SQL类似语法,在实时性处理方面不如传统关系数据库。

随机读写性能较差。

适合场景

适应T、P 规模的数据分析。

适合于非结构化数据存储的分布式数据库。

适合一次写入多次读取的场景。

写书感悟——书中自有黄金屋

CSDN: 2011年你参与著作了《Hadoop开源云计算平台》,今年你又著写了《Hadoop核心技术》,是什么机缘让你想到要写这本书的?

翟周伟:在2011年《Hadoop开源云计算平台》出版之后可以说是当时国内国人写的第一本Hadoop技术丛书,但是当时这本书编写的时间较为仓促同时相对较为简单,而后2011年8月多进入百度之后发现Hadoop技术在互联网公司内部已经大规模使用,而大多数研发人员都不是很熟悉Hadoop技术的使用,因为我就萌发了再编写一本较为全面又有实战讲解的相关书籍。

CSDN:《Hadoop核心技术》这本书历时多久完成著作的?主要适合哪些开发者?在撰写此书中给你留下最深的感悟是什么?

翟周伟:《Hadoop核心技术》这本书历时2年完成,主要适合大数据Hadoop研发人员、Hadoop应用开发人员、Hadoop运维管理人员等。

撰写此书中给我留下最深的感悟就是理解一门技术和使用专业的术语并且用通俗易懂的语言将所理解的技术讲解出来是有很大不同的,而在这个写作过程中也是我自己不断深入学习提高的一个过程。

CSDN:你如何在进度压力下,享受写书带来的快乐?

翟周伟:写作是一个再创作的过程,因此需要大量的时间进行思路梳理,语言组织,然后才能进行真正的写作,而这些工作时要在工作之余利用空闲时间完成的,因此进度压力还是蛮大的,但是这个过程也是自己不断深入学习,不断思考的过程,而且想想自己的书要被上千上万的读者学习还是很有动力的,每当完成一张一节的时候都可以带给我一个喜悦,而我本身也是享受这样的快乐的。

CSDN:在日常生活中你是通过哪些方式来提升自己技能的?平时的生活节凑是怎样的?

在日常生活工作中我主要还是通过项目实战来提升自己技能的,当发现自己不懂的原理细节时我首先想到的是从相关英文文献或者书籍中了解基本原理,然后阅读源码来进一步深入理解。

平时的生活还是挺紧张的,因为搞互联网的几乎很少有不加班的,而百度的项目安排期往往比较紧,这样留个自己的空闲业余时间就很少了,因此我通常也会很珍惜业余空闲时间。

CSDN:给学习Hadoop集群方面的开发者分享些经验吧。

翟周伟:首先搞清楚什么是Hadoop以及Hadoop可以用来做什么,可以查阅相关网站介绍或者Hadoop综述相关论文文献资料等。

然后,可以从最经典的词频统计程序开始,初步了解MapReduce的基本思路和处理数据的方式。这里建议大家直接浏览Hadoop的官方网站上WiKi文章,并按照WiKi一步一步完成实例的理解和学习。

接着,就可以正式学习Hadoop的基本原理,包括HDFS和MapReduce,先从整体,宏观核心原理看,先别看源码级别。建议这块先阅读Google的相关两篇核心论文:《The Google File System》、《MapReduce: Simplied Data Processing on Large Clusters》;进一步,就可以深入HDFS、MapReduce和模块细节,这个时候可以结合源码深入理解,以及实现机制。

最后就是需要实战了,可以结合自己的项目或者相关需求来完成一些Hadoop相关应用,建议一些比较经典的Hadoop英文原版技术相关丛书:《Hadoop The Definitive Guide》、《Hadoop in Action》、《Pro Hadoop》,以及我新出版的《Hadoop核心技术》。

给我留言

留言无头像?