Hadoop每日一讨论整理版

原创
2016-06-07 16:30:45855浏览

作者: Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址:http://dongxicheng.org/mapreduce-nextgen/hadoope-every-day/ 本博客的文章集合:http://dongxicheng.org/recommend/ 重大消息:我的Hadoop新书


重大消息:我的Hadoop新书《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》已经开始在各大网站销售了,购书链接地址: 当当购书网址,京东购书网址,卓越购书网址。新书官方宣传主页: http://hadoop123.com/。


这是我在几个QQ群发起的Hadoop每日一讨论小活动,每天中午2点左右发出一个关于Hadoop的知识片段,在此做一个整理。

【每日一讨论】之计算框架(2013-5-21)

就计算框架而言,Hadoop目前比较成熟的只有离线计算框架MapReduce(通常运行时间在1min以上),以及构建在MapReduce之上支持sql的Hive。随着发展,实时计算(通常运行时间在0~5s)有了需求,于是诞生了仿照Google dremel实现的Apache Drill和Cloduera impala,Twitter的Storm和Yahoo!的S4,以及通过优化MapReduce实现的spark,和构建在spark之上支持sql的shark,但是,这些开源系统目前为止尚不稳定,尽管Impala前几天发布了1.0版本,但仍存在很多问题,这些系统中,已经开始投入使用的是Storm(至少淘宝在大规模使用)。

【每日一讨论】之下一代Hadoop(2013-5-22)

下一代Hadoop主要由分布式文件系统HDFS和资源管理系统YARN组成,其中HDFS支持多个NameNode水平扩展和HA,也被称为“HDFS Federation”;YARN是在第一代MapReduce演化而来的,它是一个资源管理系统,之上可以运行多种计算框架,包括MapReduce、Storm、Spark、Tez等,带来的好处包括更好的扩展性、支持多种计算框架等,当前各种计算框架正在往YARN上转移,将来,YARN将变成一个云操作系统,或者称为“轻量级弹性计算平台”,所以计算框架将运行在YARN之上,由YARN统一管理和调度。

【每日一讨论】之下一代Hadoop带来的好处(2013-5-23)

昨天谈到,下一代Hadoop由HDFS Federation和YARN组成,今天重点说一下YARN。YARN是一个资源统一管理系统,相比与MRv1,带来的好处包括:更好的扩展性、可用性、支持多种计算框架等,前两个特性,很多中小公司用不到,毕竟集群规模不大,仅使用MRv1也不会遇到扩展性和可用性的问题,重点说一下第三个特性,MRv1仅支持MapReduce一种离线计算框架,应用场景非常有限。而YARN则不同,它是一个轻量级弹性计算平台,很多新型计算框架只能运行在YARN上(不能独立运行),比如DAG计算框架Tez、实时计算框架Spark(也可运行在另一种资源管理系统Mesos之上),即使现有的计算框架,比如MapReduce(已经支持)、Storm、MPI,也正在转移到YARN上运行。关于YARN的学习,可参考:http://955.cc/dHM2。

【每日一讨论】之MapReduce Shuffle优化方法(2013-5-24)

MapReduce的性能瓶颈之一在于Shuffle阶段,Shuffle阶段采用了C/S模型,Reduce Task作为Client端从各个Map Task所在节点上(装有一个Http Server)拉取数据。因此,shuffle优化优化可分为两个方面,一是对Server端优化,通常用Netty代替Jetty(1.0中采用)作为Http Server,以提高并发性能;二是Client端优化,常用方法是将Shuffle从Reduce Task中独立出来,让其不再占用槽位,这样可交错使用IO和CPU,进而提高资源利用率。关于Shuffle阶段的详细过程分析可参考最新Hadoop内幕书籍《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》(http://hadoop123.com/)中的第8.4节“Reduce Task内部实现 ”和8.5节”Map/Reduce Task优化“。

【每日一讨论】之Hadoop 1.0与Hadoop 2.0(2013-5-31)

Hadoop 1.0:对应版本为apache 1.x和cdh3,主要由HDFS和MapReduce构成,当前是稳定版,各大公司普遍采用这一版本;Hadoop 2.0:对应版本为apache 0.23.x,2.x和cdh4,主要由HDFS、MapReduce和YARN构成,其中HDFS解决了HA,YARN支持多种计算框架,目前尚不稳定,只发布了alpha版本,预计一年左右会出现稳定版(目前是alpha版,过段时间belta版,最后是稳定版),目前只有很少的公司尝试性使用或者测试用。如果想学习或使用Hadoop,推荐使用最新版本的1.1.x版本或者cdh3u6,这两个版本属于不同发行版(不同之处对比可阅读:http://dongxicheng.org/mapreduce-nextgen/how-to-select-hadoop-versions/),但是包含的功能一致。尽管Hadoop 2.0采用了新的架构,但是很多模块仍重用了1.0的,比如Map Task和Reduce Task实现,调度器实现(包括FIFO、Fair Scheduler 和Capacity Scheduler)等,对于Hadoop 1.0尚未搞透的同学,不提倡直接学习2.0,因为2.0学习难度远大于1.0. 对于Hadoop初学者,一定要多动手实践,如果不知如何开始,那就从搭建一个Hadoop集群开始吧,对于有一定基础的Hadoop学习者,如果想进一步学习Hadoop内部实现,可参考最新Hadoop畅销书籍《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》(前三章试读已经放到群共享里了。该书链接:http://955.cc/dYzX)

【每日一讨论】之如何规划属于自己的Hadoop发展道路(2013-6-3)

这次仅是我个人片面之词,供Hadoop初学者和迷茫着借鉴。通常而言,选择Hadoop作为自己未来的方向,可有两个选择方向:Hadoop应用程序开发和Hadoop内核优化,前面侧重于Hadoop之上的应用,比如利用Hadoop进行数据分析,推荐和数据挖掘算法的开发等,后者侧重Hadoop系统本身,通常根据实际遇到的问题开发一些新特性或者修复Hadoop bug等,当然也会为应用开发者提供技术指导。不管选择哪一个方向,都需要从Hadoop基础学习,而Hadoop是一个实践性很强的技术,因此必须多实践,如果你还不知道从何学起,那么就先从搭建一个Hadoop集群开始吧,然后使用它,玩弄它,感受它,之后可以尝试编写MapReduce程序,阅读一些入门书籍,比如Hadoop权威指南等,学习过程中,一定要多实践多交流,努力给自己创造一个良好的Hadoop学习氛围。如果你已经入门了,不管是Hadoop应用开发还是Hadoop内核开发,都要努力了解Hadoop内部实现原理(技术内幕)。

【每日一讨论】之Hadoop 2.0离稳定到底还有多远?(2013-6-6)

Hadoop 2.0(对应版本为apache 0.23.x,2.x和cdh4)是下一代Hadoop,采用了全新的架构和软件设计,目前apache官方仍处于alpha版,而cloudera早就发布了cdh4系列,并声称是稳定版,可以线上使用。实际上,cdh4的所有代码和补丁来自apache官方,只不过是提前将一些补丁打入自己的版本,但它并没有经过严格的测试,cloudera声称cdh4稳定是不太可靠的,毕竟apache版本才处于alpha版(而apache每次发布版本时,都会说明在多少节点的线上集群上得到试用)。究其原因,可能是Hadoop发行版之间竞争过于激烈,都想第一时间抢夺市场导致的。据Hadoop负责人介绍(http://955.cc/evdX),hadoop 2.0 beta版将在2个月后发布,而稳定版将在3个月后发布,按照软件总是延期的理论,我们可以乐观推测6个月后,也就是年底,2.0版本可以稳定,届时可以在线上环境中使用。

【每日一讨论】之常见开源系统的问题域(2013-6-7)

在Hadoop生态系统或者周边开源系统中,存在大量的数据计算相关的系统,包括MapReduce、Hive、Pig、Impala、Storm、Spark等,它们之间到底什么关系,是替代还是互补呢?个人认为,这些系统共同构建了一个良好的生态系统,他们各有自己对应的问题域,互补解决各类问题。根据Cloudera对系统的划分,按照时间指标可分为四个种类,划分标准与对应的系统分别是(1)实时应用场景(0~5s):Storm、S4、Cloudera Impala,Apache Drill等;(2)交互式场景(5s~1m):这种场景通常能要求必须支持SQL,则可行系统有:Cloudera Impala、Apache Drill、Shark等;(3)非交互式场景(1m~1h):通常运行时间较长,处理数据量较大,对容错性和扩展性要求较高,可行系统有:MapReduce、Hive、Pig、Stinger等;(4)批处理场景(1h+):通常运行时间很长,处理数据量很大,对容错性和扩展性要求很高,可行系统有:MapReduce、Hive、Pig、Stinger等。

【每日一讨论】几个学习Hadoop必须知道的资料(2013-6-8)

今天给大家介绍几个学习Hadoop必须知道的资料,这些资料大部分是英文的。(1)博客:cloudera和hortonworks的官方博客,从这两个博客里,你可以了解最新的Hadoop动态,博客地址:http://blog.cloudera.com/blog/和 http://hortonworks.com/blog/(也可以参考我的博客:http://dongxicheng.org/ ) ,(2)Hadoop书籍:入门级《Hadoop权威指南 》和《Hadoop实战》(外国人写的那本,有中文翻译版),进阶的是《Hadoop技术内幕》书籍。(3)Hadoop源代码下载地址,Apache下载:http://hadoop.apache.org/releases.html(仅包含最新的alpha版、beta版和稳定版下载包 )、Hadoop SVN:http://svn.apache.org/repos/asf/hadoop/common/branches/(包含Apache 各个版本,可直接导入eclipse),CDH版本下载:http://archive.cloudera.com/cdh/3/(CDH3系列) 和http://archive.cloudera.com/cdh4/cdh/4/(CDH4系列), (4)Hadoop jira(Hadoop项目管理工具,可下载各种patch,跟踪每个问题的解决思路和进展,也可以自己提交问题和patch):https://issues.apache.org/jira/browse/YARN,https://issues.apache.org/jira/browse/HDFS。

【每日一讨论】认识Hadoop jira的重要性(2013-6-13)

很多人没有意识到Hadoop jira(Hadoop项目管理工具)的作用,jira的作用非常的不可小觑,首先,每次Hadoop版本发行的时候,在release文件(比如http://hadoop.apache.org/docs/r2.0.5-alpha/hadoop-project-dist/hadoop-common/releasenotes.html)中,会注明增加的特性或者修复的bug,里面每条会带一个 jira链接,你如果对哪个特性感兴趣,可以查看或者打补丁(jira链接里有补丁) ,其次,每个jira链接记录了每个特性的来龙去脉,你可以了解这个问题是怎么产生的,怎么解决的,整个过程,尽管不是直接的研发人员,但是你可以清楚的了解到,比如HADOOP-7206记录了如何将google的snappy压缩算法集成到Hadoop中,链接是https://issues.apache.org/jira/browse/HADOOP-7206。在我的Hadoop新书《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》中引用了大量的jira链接(这些都是最重要的jira链接,经过我筛选的,节省了大家很多时间),全部在最后的附录中罗列出来了,有兴趣的可以阅读每个jira链接。最后,尽管我们大部分人无法参与Hadoop源代码的编写,但是可以参与讨论每个特性,你可以在jira网站(https://issues.apache.org/jira/)上 注册一个账号,并点击你感兴趣jira页面中的watch按钮,这样,该jira链接中有任何改动,均会发到你的邮箱,你可以参与讨论,甚至贡献patch。总之,学会利用Hadoop jira是一个Hadoop程序员必备的能力之一。

【每日一讨论】计算框架之上的SQL引擎(2013-6-14)

当前开源届有很多计算框架,包括MapReduce、Tez、Storm、Spark等,你可以直接在这些计算框架上编写应用程序(低效、难度较大),也可以通过结构化或者脚本语言(简单,易于上手)解决一些大数据问题。我们重点谈一下后一种。MapReduce之上的SQL引擎是Hive和Pig(Pig是一种脚本语言,功能比SQL更强大);Tez正在发展中,将来也会用于Hive上,该新系统被命名为Stinger;Spark之上的SQL引擎为Shark;Storm目前没有可用的开源SQL引擎,阿里巴巴内部实现了一个,但是不支持开源版本。还有其他两种系统,对SQL有非常迫切要求,第一个是HBase,目前开源届没有支持SQL的版本,但是有商业公司已经做出来了;第二个是Impala这种类google dremel的系统,这种系统是传统数据库与HDFS的杂种,它几乎支持所有传统数据库的SQL语法,而其他系统,包括Hive、Shark、SQL-On-HBase等则只支持ANSI-92 SQL语法的一个子集,这主要是由于大数据时代特殊的计算模型和扩展性、容错性要求导致的,比如Hive只支持查询语句,不支持修改和删除,而SQL-On-HBase则支持各种语句,但是仅能有限的支持,尤其是Join难以支持。对于以上知识,传统公司(采用传统数据库存储和解决问题的公司)向Hadoop解决方案转型时,应当十分注意。

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/mapreduce-nextgen/hadoope-every-day/

作者:Dong,作者介绍:http://dongxicheng.org/about/

本博客的文章集合:http://dongxicheng.org/recommend/


Copyright © 2013
This feed is for personal, non-commercial use only.
The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:
)

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。