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所共享。
- 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,自动和手动。
值得提出的是,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应用。
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.