Hadoop每日一讨论整理版

这是我在几个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/YARNhttps://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页面中的watchbutton。这样,该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/

原文地址:https://www.cnblogs.com/lxjshuju/p/7185092.html