CDH是Cloudera公司提供的Hadoop发行版,它在原生开源的Apache Hadoop基础之上,针对特定版本的Hadoop以及Hadoop相关的软件,如Zookeeper、HBase、Flume、Sqoop等做了兼容性开发,我们在安装CDH发行版的Hadoop时就无需进行额外繁琐的兼容性测试。

以往安装配置使用Apache Hadoop时,完全需要手动在服务器上,通过命令和脚本进行安装配置,比较复杂而繁琐。使用CDH,我们可以通过Cloudera提供的CM(Cloudera Manager)来进行安装,CM是一个面向Hadoop相关软件的强大SCM工具,它提供了通过Web界面向导的方式进行软件的安装配置,此外还提供了比较基础、友好的监控、预警功能,通过Web UI展示各种已安装软件的资源使用情况、系统运行状态等等。
如果使用CM来管理CDH平台,因为CM使用了监控管理、运行状态数据采集、预警等等很多服务,所以在集群服务器资源使用方面也会比通常的Apache Hadoop版本多很多,如果所需要的Hadoop集群规模超大,比如成百上千个节点,使用CM来安装管理CDH集群能够节省大量时间,而且节省了对整个集群基本的监控的配置管理;如果集群规模比较小,如5~10个节点左右,建议对这类集群最好单个节点的资源(内存、CPU、磁盘、网络)比较充足一些为好。

软件准备

我们通过离线的方式,基于Parcels进行CDH的安装配置,所以首先需要找到并下载相应的软件包。下面是我们当前安装配置的系统软件、应用软件的版本情况,如下所示:

  • CentOS 7.2
  • jdk-7u80-linux-x64.tar.gz
  • http://archive.cloudera.com/cdh5/parcels/5.12.2/

环境准备

  • CDH集群节点规划集群

CDH集群节点规划,如下表所示:

IP地址 主机名 节点角色
192.168.152.128 linux_128 NameNode、SecondaryNameNode、ResourceMaster、cloudera-scm-server、cloudera-scm-agent、MySQL
192.168.152.129 linux_129 DataNode、NodeManager、cloudera-scm-agent
     
  • 关闭防火墙

在集群中的所有节点上,关闭防火墙,执行如下命令:

1
2
systemctl stop firewalld
systemctl disable firewalld

  

  • 修改hostname

redhat6以下,修改文件/etc/sysconfig/network中的HOSTNAME=XXX,重启

redhat7,修改文件/etc/hostname,写入XXX,重启

  • 修改hosts,配置域名和IP

192.168.152.128 namenode.com linux_128

192.168.152.129 datanode.com linux_129

验证:python -c 'import socket; print socket.getfqdn(), socket.gethostbyname(socket.getfqdn())'

基础环境配置

  • JDK安装配置

下载JDK安装文件jdk-7u80-linux-x64.tar.gz,解压缩到目录/usr/local/java/中,然后在/etc/profile中增加如下配置:

1
2
3
export JAVA_HOME=/usr/local/java/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar

然后使配置生效,执行如下命令:

1
source /etc/profile
  • ssh免密码配置

为了方便安装软件文件在集群中各个节点中进行拷贝,首先在集群中每个节点上单独创建了一个hadoop账户,如下所示:

1
2
useradd hadoop
Passwd hadoop 12345678

在NameNode上生成密钥和公钥-----------ssh-keygen -t rsa

将公钥文件传输到DataNode--129配置文件authorized_keys中-----------ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@192.168.152.129

现在hadoop用户可免密码登录----------ssh 'hadoop@192.168.152.129'

有root权限用root用户打通即可

然后,配置在NameNode上通过ssh免密码登录到集群其它节点,在所有节点上执行如下命令生成秘钥和公钥:

1
ssh-keygen -t rsa

接着在NameNode上,将公钥文件拷贝到集群中所有的DataNode节点上,执行如下命令:

1
2
3
4
scp ~/.ssh/id_rsa.pub 172.16.117.63:~/.ssh/id_rsa.pub.master
scp ~/.ssh/id_rsa.pub 172.16.117.64:~/.ssh/id_rsa.pub.master
scp ~/.ssh/id_rsa.pub 172.16.117.65:~/.ssh/id_rsa.pub.master
cp ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub.master

继续在CDH集群中的NameNode及每个DataNode节点上,将公钥添加到authorized_keys文件中,执行如下命令:

1
2
cat ~/.ssh/id_rsa.pub.master >> ~/.ssh/authorized_keys
chmod g-w ~/.ssh/authorized_keys

最后,我们验证一下在NameNode本地可以免密码访问自己:

1
ssh hadoop@ali-bj01-tst-cluster-001.xiweiai.cn

同时在NameNode上,也可以直接免密码登录到所有其他的DataNode节点上:

1
2
3
ssh hadoop@ali-bj01-tst-cluster-002.xiweiai.cn
ssh hadoop@ali-bj01-tst-cluster-003.xiweiai.cn
ssh hadoop@ali-bj01-tst-cluster-004.xiweiai.cn

这样,就可以在配置CDH安装文件过程中,非常方便地拷贝分发安装包和配置文件了。

  • 安装MySQL

我们的MySQL数据库服务器,直接安装在NameNode节点,为CDH专用。
下载MySQL软件包,并解压缩,如下所示:

1
2
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
tar xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar

然后,安装MySQL数据库,执行如下命令:

1
2
3
4
rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

进行MySQL数据库的初始化,执行如下命令:

1
mysqld --initialize --user=mysql

可以在/var/log/mysqld.log文件中,获取到MySQL的初始临时密码,比如我的临时密码为k6i6u!Kl0)ex。
启动MySQL数据库服务器,执行如下命令:

1
systemctl start mysqld.service

然后登录到MySQL数据库服务器:

1
mysql -uroot -p

输入上述临时密码,便可以成功登录,修改默认root用户的密码,自行如下命令:

1
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

该密码会在后面安装CDH的过程中使用到。

安装配置CM、CDH

这里,做为开发环境使用,我们没有安装配置NameNode、ResourceManager的高可用(HA),如果需要可以参考官网文档进行配置。下面,为了更清晰描述,我们划分为多个步骤并按顺序进行描述,如下所示:

  • 在NameNode上准备所需软件包

将所有需要的软件包,拷贝到NameNode节点上:

1
2
3
4
scp CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel* hadoop@172.16.117.62:~/
scp cloudera-manager-centos7-cm5.7.0_x86_64.tar hadoop@172.16.117.62:~/
scp mysql-connector-java-5.1.43-bin.jar hadoop@172.16.117.62:~/
scp manifest.json hadoop@172.16.117.62:~/

注意,因为通过CM安装CDH,需要使用到MySQL数据库存储相关数据,所以用到了MySQL的JDBC驱动包。

  • 准备CM、CDH软件包

在NameNode节点上,将CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha1文件重命名:

1
2
cd ~/
mv CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha1 CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha

解压缩cloudera-manager-centos7-cm5.7.0_x86_64.tar到/opt/cdh/目录下,如下所示:

1
2
3
4
5
tar -xvf cloudera-manager-centos7-cm5.7.0_x86_64.tar -C /opt/cdh/
ll /opt/cdh/
total 8
drwxr-xr-x 4 hadoop hadoop 4096 Apr  2  2016 cloudera
drwxr-xr-x 9 hadoop hadoop 4096 Apr  2  2016 cm-5.12.2

将parcel相关文件,拷贝到/opt/cdh/cloudera/parcel-repo/目录中:

1
2
cp CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel CDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel.sha1 manifest.json /opt/cdh/cloudera/parcel-repo/
cp mysql-connector-java-5.1.43-bin.jar /opt/cdh/cm-5.12.2/share/cmf/lib/

修改/opt/cdh/cm-5.12.2/etc/cloudera-scm-agent/config.ini配置文件,修改后的内容如下所示:

1
2
server_host=ali-bj01-tst-cluster-001.xiweiai.cn
cloudera_mysql_connector_jar=/opt/cdh/cm-5.12.2/share/cmf/lib/mysql-connector-java-5.1.43-bin.jar

另外,还需要创建如下目录:

1
mkdir /opt/cdh/cm-5.12.2/run/cloudera-scm-agent

否则,在启动SCM agent时会报如下错误:

1
CM agent Unable to create the pidfile.
  • 准备MySQL数据库账号

登录到数据库里,切换用户:use mysql;

创建scm用户,可以访问cm数据库,如下所示:

1
2
GRANT ALL ON cm.* TO 'scm'@'localhost' IDENTIFIED BY 'scm';
FLUSH PRIVILEGES;

可执行sql查看是否添加成功:select host, user from user;

  • 安装文件拷贝分发

将在NameNode上准备好的所有软件包,拷贝到集群中所有的DataNode上节点上:

1
2
3
scp -r /opt/cdh/cm-5.12.2 hadoop@ali-bj01-tst-cluster-002.xiweiai.cn:/opt/cdh/
scp -r /opt/cdh/cm-5.12.2 hadoop@ali-bj01-tst-cluster-003.xiweiai.cn:/opt/cdh/
scp -r /opt/cdh/cm-5.12.2 hadoop@ali-bj01-tst-cluster-004.xiweiai.cn:/opt/cdh/

可能出现拒绝访问错误:

是由于没有该目录的操作权限,默认的是在/tmp有权限,可以先把文件放到tmp文件目录下,然后在进行mv 或者scp到其他目录

或者可以对当前用于的目录进行权限的修改,增加写的权限

  • 创建cloudera-scm用户

在NameNode、所有DataNode节点上,使用root用户创建cloudera-scm用户,执行如下命令:

1
useradd --system --home=/opt/cdh/cm-5.12.2/run/cloudera-scm-server  --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

如果不创建该用户,在启动cloudera-scm-server时会报如下错误:

1
2
install: invalid user ‘cloudera-scm’
Starting cloudera-scm-server: [FAILED]
  • 初始化MySQL数据库

在NameNode上,为CM初始化创建MySQL数据库cm中的相关表,使用root用户执行如下命令:

1
/opt/cdh/cm-5.12.2/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -P3306 -uroot -proot --scm-host localhost scm scm

可以看到,初始化过程的信息,如下所示:

1
2
3
4
5
6
7
8
JAVA_HOME=/usr/local/java/jdk1.7.0_80
Verifying that we can write to /mnt/bd/installations/cdh/cm-5.12.2/etc/cloudera-scm-server
Thu Aug 31 10:25:52 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Creating SCM configuration file in /mnt/bd/installations/cdh/cm-5.12.2/etc/cloudera-scm-server
Executing:  /usr/local/java/jdk1.7.0_80/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/mnt/bd/installations/cdh/cm-5.12.2/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /mnt/bd/installations/cdh/cm-5.12.2/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
Thu Aug 31 10:25:53 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

启动验证

在NameNode上启动CM server,在NameNode和DataNode上启动CM agent,都需要使用root用户。

  • 启动cloudera-scm-server

启动cloudera-scm-server,在NameNode节点上执行如下命令:

1
/opt/cdh/cm-5.12.2/etc/init.d/cloudera-scm-server start

如果启动成功,显示如下信息:

1
Starting cloudera-scm-server:                              [  OK  ]

如果有失败,可以查看日志:

1
/opt/cdh/cm-5.12.2/log/cloudera-scm-server/cloudera-scm-server.log
  • 启动cloudera-scm-agent

启动cloudera-scm-agent,在所有节点(NameNode和DataNode)上执行如下命令:

1
/opt/cdh/cm-5.12.2/etc/init.d/cloudera-scm-agent start

如果启动成功,显示如下信息:

1
Starting cloudera-scm-agent:                              [  OK  ]

如果有失败,可以查看日志:

1
/opt/cdh/cm-5.12.2/log/cloudera-scm-agent/cloudera-scm-agent.log
  • 查看CM Web管理控制台

通过浏览器,打开链接http://192.168.152.128:7180/,就可以看到Web界面,根据配置向导进行配置即可。下图是我配置好的CM管理界面,如下图所示:

配置好Hadoop相关软件后,就可以使用相关的服务了,例如下面是我们测试用的Spark Application程序的提交脚本,如下所示:

1
2
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
spark-submit --class org.shirdrn.robot.advisor.etl.InitialBatchDataSplittingByDate --master yarn --deploy-mode cluster --executor-memory 2g --num-executors 12 /var/lib/hadoop-hdfs/robot-advisor-etl_2.10-0.0.1-SNAPSHOT.jar 2 /tmp/fund_batch_price_file /tmp/output

提交成功后,可以通过CM Web控制台上的YARN中对应的Web UI(ResourceManager Web UI)来查看上述提交的Spark Application的运行状态,链接示例:http://ali-bj01-tst-cluster-001.xiweiai.cn:8088/cluster/app/application_1505441596298_0360

参考链接

CDH-5.12.2安装教程的更多相关文章

  1. LoadRunner 12.02 安装教程及中文语言包安装

    注意事项: 安装前,把所有的杀毒软件和防火墙关闭. 若以前安装过LoadRunner,则将其卸载. 安装路径不要带中文字符. LoadRunner 12已经不再支持xp系统,仅支持win7和win8系 ...

  2. Ubuntu 12.04安装教程详细步骤(图解)

    1.选择你所想要的语言,如图. 2.选择安装Ubuntu(I). 3.进入Ubuntu安装等待 4.设置处理器信息 5.同意选择的语言 6.配置键盘信息 7.键盘布局选择汉语 8.配置键盘选择汉语 9 ...

  3. magento 12 配置安装教程

    Magento (麦进斗) 是一套专业开源的电子商务系统.Magento设计得非常灵活,具有模块化架构体系和丰富的功能.易于与第三方应用系统无缝集成.其面向企业级应用,可处理各方面的需求,以及建设一个 ...

  4. Ubuntu 13.04/12.10安装Oracle 11gR2图文教程(转)

    Ubuntu 13.04/12.10安装Oracle 11gR2图文教程 原文标题:How to Install Oracle 11G R2 Enterprise Edition Database U ...

  5. 黑苹果macOS Sierra 10.12 安装教程(venue11 pro测试)

    黑苹果macOS Sierra 10.12 安装教程(venue11 pro测试) 2017-03-12 03:46:24 by SemiconductorKING PS:刚刚装好黑苹果,来记录一篇折 ...

  6. Ubuntu Server 12.04安装图解教程

                                                                                                Ubuntu S ...

  7. MySQL 8.0.12 基于Windows 安装教程(超级详细)

    MySQL 8.0.12 基于Windows 安装教程(超级详细) (一步一步来,装不了你找我!) 本教程仅适用Windows系统,如果你原本装了没装上,一定要先删除原本的数据库,执行:mysqld ...

  8. MySql-8.0.12 安装教程

    MySql-8.0.12 安装教程随笔https://www.cnblogs.com/CrazyDemo/p/9409995.html MySQL 安装https://m.runoob.com/mys ...

  9. 4 cdh 5.12 centos 6.10三节点安装

    4 cdh 5.12  centos 6.10 三节点安装 [root@hadoop1 opt]# cat /etc/redhat-release CentOS release 6.10 (Final ...

随机推荐

  1. 【转载】Mini6410启动过程

    这段时间在尝试使用uBoot来替代友善的Superboot,让板子支持从SD卡启动,所以就仔细研究了一下友善提供的内核和它的启动参数,发现 友善真的蛮聪明,把电脑的启动方式借鉴到它们自己的开发板上了. ...

  2. Pressed状态和clickable,duplicateParentState的关系

    做Android开发的人都用过Selector,可以方便的实现View在不同状态下的背景.不过,相信大部分开发者遇到过和我一样的问题,本文会从源码角度,解释这些问题. 首先,这里简单描述一下,我遇到的 ...

  3. Sql-简单分页

    create proc proc_searchuser( @username varchar(12), @page int=1, @pagesize int=3, @totalcount int ou ...

  4. postgres访问认证配置文件pg_hba.conf

    pg_hba.conf(默认位于/var/lib/pgsql/10/data/pg_hba.conf)是设置访问认证的主要文件,格式为每条记录一行,每行指定一条访问认证. 设定一条访问认证包含了5个部 ...

  5. C#之Hello World(入门 )

    C#是一种简单.现代.面向对象和类型安全的编程语言. C#由C和C++发展而来.C#(英文发音C sharp)牢固地植根于C和C++语言族谱中,是Microsoft专门为使用.NET平台而创建的. • ...

  6. windows下硬盘的逻辑结构

    共有五部分组成: MBR:主引导分区(硬盘启动记录) DBR:DOS启动记录 FAT: 文件分配表 DIR:根目录区 DATA:数据区

  7. jsp标签、 项目全路径引用${ctx}

    请根据自己的需要选择以下标签. <%@ taglib uri="/struts-tags" prefix="s"%> <%@ taglib u ...

  8. [Python爬虫] 之二十五:Selenium +phantomjs 利用 pyquery抓取今日头条网数据

    一.介绍 本例子用Selenium +phantomjs爬取今日头条(http://www.toutiao.com/search/?keyword=电视)的资讯信息,输入给定关键字抓取资讯信息. 给定 ...

  9. 从C转到JAVA学习路之基本知识对比(转)

    转自:http://blog.csdn.net/andywxf01/article/details/53502615 我一直在用C开发,想转到Java时最容易想到的事就是把C里写的代码和功能用JAVA ...

  10. JavaScript对象深复制

    1.原理 使用JSON,当然需要JSON安全的格式,JSON安全请参考:http://www.cnblogs.com/mengfangui/p/8257269.html 2.示例 <!DOCTY ...