Hadoop的发行版除了社区的Apache hadoop外,cloudera,hortonworks,mapR,EMC,IBM,INTEL,华为等等都提供了自己的商业版本。商业版主要是提供了专业的技术支持,这对一些大型企业尤其重要。2008 年成立的 Cloudera 是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support。
1 CDH是Cloudera的hadoop发行版,完全开源,比Apache hadoop在兼容性,安全性,稳定性上有增强。
2 Cloudera Manager是集群的软件分发及管理监控平台,可以在几个小时内部署好一个hadoop集群,并对集群的节点及服务进行实时监控。
3 Cloudera Support即是对hadoop的技术支持,cloudera的标价为每年每个节点4000美元。
目前cloudera的hadoop发行版已经到CDH5了,不过为了和已有的CDH4集中方便管理,所以接下来的文章都是以CDH 4.5.0为基础的。Cloudera推出的CDH4突出的新特性包括以下三方面:
1 High Availability/HA
这主要包括Name Node High Availability,以及允许在同一个Cluster里运行CDH3和CDH4
2 Security
除了已经 为HDFS提供的Kerberos,现在可以允许对HBase的表和列进行访问控制;另外,CDH4加入了对Fair Scheduler ACL的支持,对管理和递交到Fair Scheduler Pool的作业进行控制。以往像张三那样可以随心所欲地把作业递交到李四pool里的日子可能一去不复返了
3 Extensibility
主要是通过加入co-processor和YARN,允许用户运行更多定制的程序和使用不同的计算平台。
从CDH4开始,版本号命名格式为CDH X.Y.Z。其中X是主版本号,意味着重大变更;Y是次版本号,类似于之前的“update”版本号;Z是点版本号,对应于一些critical fixes。
关于cloudera的介绍就上面那么多,更多信息可以阅读cloudera官网
下面我就从零开始捣鼓起Hadoop了,CDH版本选用4.5.0,操作系统为ubuntu12.04,总共五台Kvm虚拟机,开始慢慢折腾路......
节点IP及功能信息如下:
IP Hostname MRv1 HDFS YARN 192.168.1.10 U-1 Jobtracker Namenode RM 192.168.1.20 U-2 Tasktracker Datanode NM 192.168.1.30 U-3 Tasktracker Datanode NM 192.168.1.40 U-4 Tasktracker Datanode NM 192.168.1.50 U-5 Tasktracker Datanode NM1 因为Hadoop的运行依赖java环境,所以在所有机器安装Oracle Java7。
apt-get install software-properties-common python-software-properties add-apt-repository ppa:webupd8team/java apt-get update apt-get install oracle-java7-installer
为啥强调Oracle Java7呢?在linux下你除了选择Oracle JDK外,还可以选择openjdk系列,jdk版本最好使用7。之前都是使用openjdk的,这次换个Oracle jdk试试。Oracle jdk6在之前是可以在各个linux发行版用包管理工具直接安装的,但是在jdk7的时候在官方不再提供了,所以只能使用外部源来通过包管理工具安装jdk7了。上面的安装过程比较慢,得十几分钟,你也可以直接在官网下载tar包来安装,我这种懒人必然是选择apt来安装了。
2 在U-1机器可以ssh无密码登陆其他四台机器
在U-1上执行ssh-keygen命令,一路回车,不用填写信息,把~/.ssh/id_rsa.pub文件拷贝到U-2/3/4/5的相关用户的.ssh/authorized_keys文件中。authorized_keys文件默认没有,需要自己手动创建。因为hadoop程序在和各个节点通讯同步信息时需要该功能。
3 关于安装CDH4的方法,多种多样,一般有如下:
1 使用cloudera manager来自动化安装,web界面很炫
2 一键安装方法也有三种:
1 使用官方的CDH4 repo
2 构建你自己的CDH4 repo,可以从官方仓库来同步
3 使用官方的CDH4 tar包来安装,由于hadoop组件很多,所以包比较大,2G多。
我嘛,肯定使采用官方repo来安装了,后期上规模后可以搭建自己的repo。
4 从官网下载cdh4-repository,里面包含了apt源信息,然后
dpkg -i cdh4-repository_1.0_all.deb #官方源信息加入apt配置文件后,因为默认安装版本是4,而我们需要cdh4.5.0,所以在cdh4后面加上4.5.0的版本号,从而指定安装4.5.0版本,嘿嘿官方支持这个功能,通过版本号指定要安装的版本 vi /etc/apt/sources.list.d/cloudera-cdh4.list deb [arch=amd64] http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh precise-cdh4.5.0 contrib deb-src http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh precise-cdh4.5.0 contrib curl -s http://archive.cloudera.com/cdh4/ubuntu/precise/amd64/cdh/archive.key | sudo apt-key add - apt-get update
5 Hadoop主要由HDFS+MapReduce两个组件构成,在CDH4中已经开始支持下一代的MapReduce(MRv2/YARN),也就是你可以搭建HDFS+MRv1或者HDFS+YARN两种架构的平台。
5.1 关于mapreduce的版本
new mapreduce2.0(MRv2)-->YARN
old mapreduce-->MRv1
5.2 它们的区别如下(默认调度规则不一样):
MRv1:
– Cloudera Manager sets the default to Fair Scheduler.
– CDH4 sets the default to Fair Scheduler, with FIFO and Fair Scheduler on the classpath by default.
MRv2(YARN):
– Cloudera Manager sets the default to FIFO.
– CDH4 sets the default to FIFO, with FIFO, Fair Scheduler, and Capacity Scheduler on the classpath by default.
5.3 HDFS+MRv1中各个组件的名称及安装方法
#组件 安装命令 组件所属平台 JobTracker apt-get install hadoop-0.20-mapreduce-jobtracker MRv1 NameNode apt-get install hadoop-hdfs-namenode HDFS Secondary NameNode apt-get install hadoop-hdfs-secondarynamenode HDFS TaskTracker/DataNode apt-get install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode MRv1、HDFS Hadoop client apt-get install hadoop-client
1 MRv1版本目前支持NameNode和JobTracker的HA方案,后面会有篇幅专门讲解,YARN在CDH4中暂时不支持HA。
2 部署NameNode,Secondary NameNode和JobTracker程序时,一般遵守以下规则:
1 NameNode和JobTracker一般运行在同一台机器上,除非你的集群非常大。 在NameNode和JobTracker节点上不应该运行Secondary NameNode,DataNode和TaskTracker服务
2 在一个大的集群中,Secondary NameNode服务使有必要和NameNode服务运行在不同的机器上的,注意Secondary NameNode并不是NameNode的热备,不要被名字迷惑。它只是阶段性的合并edits和fsimage,以缩短集群启动的时间。当NameNode失效的时候,Secondary NameNode并无法立刻提供服务,Secondary NameNode甚至无法保证数据完整性:如果NameNode数据丢失的话,在上一次合并后的文件系统的改动会丢失。
3 集群中的机器除了NameNode和JobTracker外,都需要运行 DataNode和 TaskTracker
注意:如果你要为NameNode设置HA方案,请不要安装hadoop-hdfs-secondarynamenode。
注意:YARN && MRv1 你可以把两个版本的mapreduce安装到同一个节点上,但是在任意时刻你只能启动其中某一个版本。
5.4 HDFS+YARN中各个包的名称及安装方法
#组件 安装命令 组件所属平台 Resource Manager(JobTracker) apt-get install hadoop-yarn-resourcemanager YARN NameNode apt-get install hadoop-hdfs-namenode HDFS Secondary NameNode apt-get install hadoop-hdfs-secondarynamenode HDFS DataNode/Node Manager(TaskTracker) apt-get install hadoop-yarn-nodemanager hadoop-hdfs-datanode hadoop-mapreduce HDFS/YARN HistoryServer/ProxyServer apt-get install hadoop-mapreduce-historyserver hadoop-yarn-proxyserver YARN Hadoop client apt-get install hadoop-clientMRv2介绍:
MapReduce Version 2, 简称MRv2,也被称为YARN,起始于Hadoop 0.23分支。使用CDH4,可以选择运行MRv1或者MRv2,但两者不能在一个集群里同时运行。MRv2 和新旧MapReduce API 没有关系,仅指MapReduce体系结构上的变化。MRv1和MRv2应用在源代码上是兼容的。这意味着以前为MRv1编写的MapReduce程序不需要改写。但如果需要运行在CDH4部署的系统上,不管选择运行MRv1还是MRv2,都需要重新编译生成代码。需要提请注意的是,Cloudera recommends that you use MRv1 unless you have particular reasons for using MRv2, which should not be considered production-ready。YARN在CDH4中还不建议上生产环节(只是官方的建议),但是CDH5已经出来很久了,也支持有YARN的HA方案,所以如果要用YARN就用CDH5吧。我这是由于历史原因才使用CDH4的。
在MRv1里的一个Job,在MRv2 里则被称为一个Application。 每个Cluster拥有一个Resource Manager。每个Node则运行一个Node Manager,来监控和管理该节点上的资源使用情况。在运行Job的时候,和MRv1相似,每Node运行Map和Reduce Task。对应每个Job(application),有一个Application Master(运行在某个Node上),负责管理application的生命周期,向resource manager申请资源,以及监控task的状态等(譬如重启出错任务)。这种体系结构相当于解脱了MRv1 里JobTracker繁忙的管理所有资源及调度管理Job/Task状态的职责,使得MRv2能支持在更大的集群上运行更多的MapReduce应用。
6 最后的基础检查工作
1 确保U-1可以无密码ssh登陆其他机器
2 确保五台机器时间一致,可以部署NTP服务
3 确保五台机器对域名的解析一致,一般采用手动修改/etc/hosts文件,本集群如下:
192.168.1.10 U-1 192.168.1.20 U-2 192.168.1.30 U-3 192.168.1.40 U-4 192.168.1.50 U-57 这样基础环境的配置就已经OK了。