技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在最新最热的技术前沿为你引航!


本期我们特邀了国内Hadoop领域的两位专家董西成、蔡斌来共同探讨如何通过源代码来掌握Hadoop的架构设计和实现原理,欢迎午饭积极提问和参与互动,与专家一起探讨。

查看本期门诊精彩实录:http://doctor.51cto.com/develop-286.html

精选本期网友提问与专家解答,以供网友学习参考。

【272期门诊集锦】大数据时代如何能够驾驭Hadoop?_第1张图片

Q: 请问《Hadoop技术内幕》书籍适合那些技术人员阅读?

Hadoop能给“云计算”与“大数据”带来那些性能提升,或者说如何提升Hadoop稳定性及高效性?

作为一个初学者,要想掌握Hadoop先要有那些基础,如何循序渐进学习好Hadoop?先感谢你的指导。

A: 《Hadoop技术内幕》对于有一定Hadoop基础的人看有哟帮助,但需要说明的是,对于那些Hadoop应用程序开发者也会有很大帮助,毕竟只有了解了Hadoop内部原理才能编写出更加高效的程序。

Hadoop主要优点是免费、扩展性好、容错性好和易于编程,Hadoop目前有稳定版本,对于大部分公司,已经够用了,你可以直接编写MapReduce程序,也可以使用SQL处理数据(这样开发效率更高)。

Hadoop初学者应该多实践,搭建一个Hadoop集群,使用它,玩弄它,感受它,然后在实践中不断深入理解他。


Q: hadoop2.0+版本与1.0及以下版本差距有多大,如果是全新搭建hadoop环境,用哪个版本比较适合?

A: 现在Hadoop 2.0还不成熟稳定,大部分公司仍在使用1.0,,如果刚开始使用Hadoop,搭建一个全新的环境,推荐使用最新的稳定版,目前主流的是apache的1.1.2(下载地址:http://mirror.bit.edu.cn/apache/hadoop/common/stable/). cloudera的cdh3u6(下载地址:http://archive.cloudera.com/cdh/3/hadoop-0.20.2-cdh3u6.tar.gz),这两种发行版的对比可参考我的这篇文章:http://dongxicheng.org/mapreduce-nextgen/how-to-select-hadoop-versions/


Q: mapreduce适合做实时系统吗?我个人认为一个实时系统至少应符合低延迟、高性能、可扩展等的特性,就低延迟而言,mapreduce明显略为逊色。是否有某种架构方式能改善mapreduce的这些缺点?

A: Hadoop最初设计动机是提供一个容错性好、扩展性好、易于编程的计算框架MapReduce,特点是适合离线计算,随着业务发展,实时计算有了新的需求,现在已经出现了很多实时框架,包括 Storm,Spark和yahoo s4等,这些框架的数据来源均可以是HDFS,且都是开源的,思想是减少写磁盘,任务热启动,基于内存等,其中,Storm已被很多大型公司使用,包括陶淘宝。


Q: 以往 Hadoop 似乎就是大数据的代名词。不过最近随着大数据应用的深入,大家已经越来越倾向于仅仅把它看成是大数据的一个存储工具了。

我想问下,对于把Hadoop作为廉价的存储工具真的合适吗?是不是因为开源、代码成熟、稳定而说明它是廉价的?对于视频类网站来说,他们存储模型是如何设计的?

我还想问的是,对于基于Hadoop的应用开发,相较与传统oop,在分析和设计上有哪些异同点和需要注意的地方?也就是设计的角度可以从哪些方面入手?

A: 视频领域,是Hadoop应用的一个典型代表,因为数据量大,很多视频处理算法都可以并行化。

Hadoop的提出,使得应用程序的开发与传统oop非常相近,不过处理问题时,要转化成Hadoop要求的格式和规范,比如用MapReduce护理问题时,要将问题转化成map和reduce两个阶段。


Q: 二位老师好,我对Hbase有一定的理论了解,但是不知道Hbase的应用与实践。现在我的业务需要使用数据库支持,但是业务逻辑是依据关系型数据库而设计的。但是Base好像不支持条件查询,只支持按照ROW KEY来查询,这对对我的业务来说是不可接受的(业务需要多表关联或者join操作)。

对于这种关心型业务逻辑 想使用hbase这样的数据库来说,合适吗?有解吗?我实在不想使用mysql这样的数据库,因为数据量增大时,性能就会出现瓶颈,而我的数据量却可能呈直线上升。

另外,对于碎片文件,您推荐使用hbase,为什么要这样设计?HBase应用的典型案例有哪些呢?

再次感谢!

A: HBase是一个实时存取系统,它没有严格的schema的概念,优点是扩展性和容错性好,但它不适合有多表join的场景。

通常而言,如果有join操作,可以将HBase和数据库结合起来使用,各自发挥优势。

碎片文件推荐使用hbase是相对于HDFS而言的,Hadoop中有两种对外存储,一个是HDFS,一个是hbase。