本期我们特邀了国内Hadoop领域的两位专家董西成、蔡斌来共同探讨如何通过源代码来掌握Hadoop的架构设计和实现原理,欢迎午饭积极提问和参与互动,与专家一起探讨。
查看本期门诊精彩实录:http://doctor.51cto.com/develop-286.html
精选本期网友提问与专家解答,以供网友学习参考。
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。