CDH-5.12.2安装教程

摘要:
过去,当Apache Hadoop用于安装和配置时,完全需要通过命令和脚本在服务器上手动安装和配置,这既复杂又麻烦。软件准备我们将基于Parcels离线安装和配置CDH,因此我们需要先找到并下载相应的软件包。安装MySQL我们的MySQL数据库服务器直接安装在NameNode节点上,专用于CDH。

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.128linux_128NameNode、SecondaryNameNode、ResourceMaster、cloudera-scm-server、cloudera-scm-agent、MySQL
192.168.152.129linux_129DataNode、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
exportJAVA_HOME=/usr/local/java/jdk1.7.0_80
exportPATH=$PATH:$JAVA_HOME/bin
exportCLASSPATH=.:$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar

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

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

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

1
2
useraddhadoop
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
chmodg-w ~/.ssh/authorized_keys

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

1
sshhadoop@ali-bj01-tst-cluster-001.xiweiai.cn

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

1
2
3
sshhadoop@ali-bj01-tst-cluster-002.xiweiai.cn
sshhadoop@ali-bj01-tst-cluster-003.xiweiai.cn
sshhadoop@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
tarxvf 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
scpCDH-5.7.0-1.cdh5.7.0.p0.45-el7.parcel* hadoop@172.16.117.62:~/
scpcloudera-manager-centos7-cm5.7.0_x86_64.tarhadoop@172.16.117.62:~/
scpmysql-connector-java-5.1.43-bin.jar hadoop@172.16.117.62:~/
scpmanifest.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~/
mvCDH-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
cpCDH-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/
cpmysql-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/

可能出现拒绝访问错误:

CDH-5.12.2安装教程第1张

是由于没有该目录的操作权限,默认的是在/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-serverstart

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

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-agentstart

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

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管理界面,如下图所示:
cloudera-manager-webconsole
配置好Hadoop相关软件后,就可以使用相关的服务了,例如下面是我们测试用的Spark Application程序的提交脚本,如下所示:

1
2
exportSPARK_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安装教程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NGINX+keepalived数据库(DB)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySql通过Data恢复数据库数据

公司的服务器开不了机,把硬盘装在其他机器上面,文件是没有丢失,可是数据库开不了了。上网查了下,用DATA恢复了数据。 1、先通过MYSQL目录下的my.ini配置文件找到 datadir的文件夹地址。data里面的文件就是数据库的信息,备份复制出来。 2、重新安装相同版本的mysql数据库,找到新安装的mysql数据库Data的地址,用之前备份的替换掉D...

MYSQL管理----数据库删除恢复

(1) 如果备份了,就好解决了。略。 (2)如果日志打开,使用mysqlbinlog来恢复。 mysqlbinlog工具的使用,大家可以看MySQL的帮助手册。里面有详细的用,在这个例子中,重点是--start-position参数和--stop-position参数的使用。•--start-position=N从二进制日志中第1个位置等于N参量时的事件开...

hbase1.3.1安装

下载:    hadoop@master:~$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz解压到/opt/Hadoop,    hadoop@master:~$ sudo tar -zxvf hbase-1.3.1-bin.tar.g...

MySQL中使用replace into语句批量更新表数据

作为示例,我们在这里使用名为testdb的数据库,并且在其中创建两张一模一样的表: drop table if exists test_table_1; create table test_table_1 ( name varchar(30) primary key, age integer ); drop table if exists...

MySQL的WAL(WriteAhead Logging)机制

MySQL 里经常说到的 WAL技术,也就是先写日志,再写磁盘。 当内存数据页跟磁盘数据页内容不一致的时候,我们成这个内存页为“脏页”。内存数据写入磁盘后,内存和磁盘上的数据页内容就一致了,称为“干净页”。 MySQL 从 内存更新到磁盘的过程,称为刷脏页的过程(flush)。 InnoDB 刷脏页的时机: 内存中的redo log 写满了,这时系统...

mysql备份还原

1,  用 mysqldump 命令进行备份:     在命令提示符窗口(注意不是 MySQL 的 MySQL Command Line Client 窗口)中输入,     mysqldump -hlocalhost -uroot -proot        temp  > temp_2011.sql     mysqldump -hlocalho...