We believe that during 2012, enterprise distributions of Hadoop will mature enough that enterprises will accelerate production deployments and begin to yield tangible organizational value.
— Ben Woo, VP, Storage and Big Data, IDC
随着大数据之说日渐人心,越来越来多的企业把目光投向了Hadoop,希望采用Hadoop来建立其数据驱动平台。因此,如何让Hadoop能更好地满足企业需求,就成为众多Hadoop产商争夺用户的焦点。
一般来说,企业的需求体现在如下几个方面:
-和企业已有的IT系统的结合,以保护企业已有的投资。
-数据和访问安全性,保护商业价值
-可扩展性,允许系统随着企业需求的增长而增长,而无需一次性投入建立一个庞大的系统
-高可靠性,尽量降低或消除down time
- 简易的安装和部署,目前Hadoop人才紧缺,经验普遍欠缺,而系统往往涉及大量的软硬件资源,如何降低管理成本,同时又能达到最优的系统性能,非常关键
-高质量和快速的支持和服务
对此,Cloudera和Hortonworks这两家提供100%开源Hadoop发行版的公司都在于近期结束的Hadoop Summit召开之前及时推出了其Hadoop产品和解决方案。Cloudera推出了CDH4 GA版 (General Availability)以及Cloudera Enterprise 4,而Hortonworks则推出了Hortonworks Data Platform 1.0 。这显示了2012年将是Hadoop企业版走向成熟的一年,也将是Hadoop厂商一决雌雄的关键一年。奇怪的是,我注意到,作为纯Hadoop厂商三驾马车之一的MapR这一次却在Hadoop Summit召开期间及前后没有推出更新的稳定版本;更加费解的是,他们也没有派出Speaker参加Summit做主题演讲或技术产品报告,听由这次Summit变成Cloudera和Hortonworks两家你唱罢我登台的走秀场(两个公司在这次峰会上均有多达10人左右的speaker )。但愿这可能是由于其产品开发档期不同,或者是由于其忙于推出Hadoop-as-a-service而不代表MapR退出Hadoop发行版的竞争(update: MapR于28日公布了和Google合作-在Google Compute Engine上部署运行MapR,加上不久前MapR公布的和Amazon的合作,看来其市场策略更偏重于在云服务市场上的竞争。不过,这些市场应该在可以预见的相当长的时间里跟绝大多数国人无关,至少在争夺中国这个大市场上,是不是意味着MapR拜GFW所赐输在了起跑线上呢)。
作为Hadoop领域里的“老大”和生力军,Cloudera新近推出的CDH4突出的新特性包括以下三方面:
- High Availability/HA
这主要包括Name Node High Availability,以及允许在同一个Cluster里运行CDH3和CDH4(所谓的"Heterogeneous Cluster")。
- Security
除了已经 为HDFS提供的Kerberos,现在可以允许对HBase的表和列进行访问控制;另外,CDH4加入了对Fair Scheduler ACL的支持,对管理和递交到Fair Scheduler Pool的作业进行控制。以往像张三那样可以随心所欲地把作业递交到李四pool里的日子可能一去不复返了 :-)
- Extensibility
这主要是通过加入co-processor和MPv2,允许用户运行更多定制的程序和使用不同的计算平台。
下面对CDH4 GA版的更新做一些概括性的介绍,详细信息可以参考Cloudera网站上的相应文档,下面是其相关Blog报道: http://www.cloudera.com/blog/2012/06/cdh4-and-cloudera-enterprise-4-0-now-available。
CDH4采用了新的版本记法。在CDH4之前,CDH按照CDHxUy来命名,譬如CDH3u0, CDH3u1等等。从CDH4开始,版本号命名格式为CDH X.Y.Z。其中X是主版本号,意味着重大变更;Y是次版本号,类似于之前的“update”版本号;Z是点版本号,对应于一些critical fixes。下面是CDH4发行版所包括的组件版本号。
Component | Description | CDH3u4 Version | CDH4u0 Version |
Apache Hadoop | Reliable, scalable distributed storage and computing | hadoop-0.20.2+923.256 | hadoop-2.0.0+73 |
HDFS | The Hadoop Distributed File System | hadoop-0.20.2+923.256 | hadoop-2.0.0+73 |
Fuse-DFS | Module for mounting HDFS as a traditional file system | hadoop-0.20.2+923.256 | hadoop-2.0.0+73 |
MapReduce | Distributed computing framework for Apache Hadoop | hadoop-0.20.2+923.256 | mr1-0.20.2+1213 |
MapReduce 2 | The next-generation of the MapReduce framework | -- | hadoop-2.0.0+73 |
Hadoop Common | A set of utilities that support the Hadoop subprojects | hadoop-0.20.2+923.256 | hadoop-2.0.0+73 |
Apache Flume | Distributed service for collecting and aggregating log and event data | flume-0.9.4+25.43, flume-1.1.0 | flume-1.1.0 |
Apache HBase | Scalable record and table storage with real-time read/write access | hbase-0.90.6+84.29 | hbase-0.92.1+37 |
Apache Hive | SQL-like language and metadata repository | hive-0.7.1+42.43 | hive-0.8.1+59 |
Apache Mahout | Library of machine learning algorithms for Hadoop | mahout-0.5+9.5 | mahout-0.6+15 |
Apache Oozie | Workflow engine to coordinate Hadoop activities | oozie-2.3.2+27.19 | oozie-3.1.3+153 |
Apache Pig | High-level data flow language | pig-0.8.1+28.32 | pig-0.9.2+25 |
Apache Sqoop | Data transport engine for integrating Hadoop with relational databases | sqoop-1.3.0+5.76 | sqoop-1.4.1+27 |
Apache Whirr | Library for deploying and running Hadoop in the cloud | whirr-0.5.0+4.12 | whirr-0.7.1+14 |
Apache Zookeeper | Highly-reliable distributed coordination service | zookeeper-3.3.5+19.1 | zookeeper-3.4.3+14 |
Hue | Browser-based interface for interacting with Hadoop | hue-1.2.0.0+114.35 | hue-2.0.0+49 |
譬如fs.default.name现在变成了fs.defaultFS。不过不用担心的是,老的名字还能继续被使用。
CDH4及以后版本将主打Flume NG (next generation Flume)。Flume NG被重新设计和改写,极大地降低了内存的消耗。目前CDH4仍然包含Flume OG(original Flume),不过将逐渐被淘汰掉。需要注意的是,Flume NG和Flume OG在API上是不兼容的。
NameNode Federation 允许配置多个name space在多个Name Node上,而这些Name Node之间是相互独立的,不互相通信。这给Hadoop集群带来了更好的伸缩性,更好的性能和容错性。在客户端则可以通过ViewFS从多个Name Space中选取全部或者部分来组建所需的文件系统视图来使用HDFS。这好比在Linux 系统中使用/etc/fstab来安装文件系统到当前运行的系统中。
譬如在下图中,可能有两个Name Node,第一个负责/users,另一个负责/reports。而所有Name Node存储的实际数据(block)则可以存储在任意一个slave node上,也就是说所有的slave nodes为所有的Name Nodes所共享。
![[转载]CDH4简介 [转载]CDH4简介](https://img6.php1.cn/3cdc5/98a6/696/8b18221d62d56450.gif)
- Name Node HA (High Availability)
以前版本里的Name Node是SPOF(Single Point Of Failure)。CDH4则包含了Apache Hadoop 0.23.x引进的HDFS HA特性。通过部署两个Name Node,一个active,另一个standby。HDFS客户(包括Data Node )只与active NN联系,standby NN仍然给active NN做Check Pointing (所以Secondary Name Node不再需要了),同时通过维护active NN的状态来在active NN失效的情况下接管active NN的角色。CDH4支持两种FailOver,自动和手动。
![[转载]CDH4简介 [转载]CDH4简介](https://img6.php1.cn/3cdc5/98a6/696/8b18221d62d56450.gif)
值得提出的是,Name Node HA和Name Node Federation是不互相牵制的。你可以只有HA或者只有Federation,也可以两个都配置。
MapReduce Version 2, 简称MRv2,也被称为YARN (Yet Another Resource Negotiator),起始于Hadoop 0.23分支。使用CDH4,可以选择运行MRv1或者MRv2,但两者不能在一个集群里同时运行。MRv2 和新旧MapReduce API 没有关系,仅指MapReduce体系结构上的变化。MRv1和MRv2应用在源代码上是兼容的。这意味着以前为MRv1 编写的MapReduce程序不需要改写。但如果需要运行在CDH4部署的系统上,不管选择运行MRv1还是MRv2,都需要重新编译生成代码。需要提请注意的是,MRv2 目前还不是Production Ready,所以不要用于生产环境。
在MRv1里的一个Job,在MRv2 里则被称为一个Application。 每个Cluster拥有一个Resource Manager。每个Slave Node则运行一个Node Manager,来监控和管理该节点上的资源使用情况。在运行Job的时候,和MRv1相似,每个Slave Node运行Map和/或者Reduce Task。对应每个Job(application),有一个Application Master(运行在某个Slave Node上),负责管理application的生命周期,向resource manager申请资源,以及监控task的状态等(譬如重启出错任务)。这种体系结构相当于解脱了MRv1 里JobTracker繁忙的管理所有资源及调度管理Job/Task状态的职责,使得MRv2能支持在更大的集群上运行更多的MapReduce应用。
![[转载]CDH4简介 [转载]CDH4简介](https://img6.php1.cn/3cdc5/98a6/696/8b18221d62d56450.gif)
MRv2重新设计了MapReduce的体系结构,其设计目的是不仅仅支持运行MapReduce,还支持很多其他计算系统,包括有:
Hamster: MPI @ Hadoop
Hama: Bulk Synchronous Parallel (BSP) processing
Giraph: Graph processing framework
当然,以上只是一些简介,更多的了解可以参考Cloudera网站,并下载和实际使用CHD4。
最后,Cloudera把CH4+CM4(Cloudera Manager)号称为最完整最先进的基于Hadoop的企业解决方案,所以,我就顺带简单列举一下作为Hadoop安装部署和管理监控工具的CM4的几个优势,供参考。
-易用性
3-step HA configuration
Multi-cluster management
Backward compatibility
- 功能强大
Heatmaps
Federated NN management
- 易于扩充和集成
Cloudera manager API
LDAP authentication,login against Active Directory
etc.