之前研究过Apache Ambari 编译安装与使用方法,这次就来研究CDH,CDH是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,全称Cloudera’s Distribution, including Apache Hadoop。CDH提供了Hadoop的核心可扩展存储(HDFS)和分布式计算(MR),还提供了WEB页面进行管理、监控。
本次我就选择了新版的CM和CDH 6.2.0版来安装。
Cloudera 官网:https://www.cloudera.com
Cloudera 官方文档: https://www.cloudera.com/documentation/enterprise/latest.html
1.环境配置
master | linux centos 7 | 30 core,64g,500g |
slave1 | linux centos 7 | 30 core,64g,500g |
cm默认安装目录是cdh,建议把所有机器最大的硬盘挂到/opt目录
时间同步:linux集群所有节点时间同步
关闭防火墙:linux centos7设置防火墙开放端口
免密登录:linux服务器之间ssh免密码访问配置
安装jdk:linux centos 安装java jdk及环境变量配置
配置hosts:vi /etchosts(配置ip对应hostname)
配置hostname:linux修改hostname永久生效
2.安装mysql
mysql就是用来存Cloudera Manager 的站点信息的,当然也可以使用其他数据库
参考:linux centos 安装 mysql 并设置开机启动 、linux centos yum安装mysql
3.安装Cloudera Manager
3.1下载Cloudera Manager和CDH
下载cm的压缩包:https://archive.cloudera.com/cm6/6.2.0/repo-as-tarball/cm6.2.0-redhat7.tar.gz
你也可以直接下载rmp:https://archive.cloudera.com/cm6/6.2.0/redhat7/yum/RPMS/x86_64/(所有rpm都要下载)
上面cm6.2.0-redhat7.tar.gz就是包含了下面地址中的所有rmp,我最后是本地迅雷下载完了,再上传到服务器的,因为直接下载太慢了
下载CDH
https://archive.cloudera.com/cdh6/6.2.1/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
https://archive.cloudera.com/cdh6/6.2.1/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1
https://archive.cloudera.com/cdh6/6.2.1/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha256
下载后放入到master服务器的/opt/cloudera/parcel-repo目录
3.2 解压并安装CM
cm的默认安装文件夹是/opt
tar xzvf cm6.2.0-redhat7.tar.gz
cd cm6.2.0/RPMS/x86_64
先安装cloudera-manager-daemons(所有节点),cloudera-manager-daemons是cm server和agent的基础
yum install cloudera-manager-daemons-6.2.0-1281944.el7.x86_64.rpm
再安装cloudera-manager-server(主节点)
yum install cloudera-manager-server-6.2.0-1281944.el7.x86_64.rpm
安装cloudera-manager-agent(所有节点)
yum install cloudera-manager-agent-6.2.0-1281944.el7.x86_64.rpm
这个时候可以看到文件都安装进/opt了
3.3初始化CM并启动(master节点)
3.3.1下载mysql jar,mysql-connector-java-5.1.25.jar(根据自己版本下载),并放入/opt/cloudera/cm/lib
3.3.2初始化cm数据库
cd /opt/cloudera/cm/schema
./scm_prepare_database.sh -h 192.168.1.133 -P 3306 mysql cm root 123456
#参数说明: -h MysqlHost -P MysqlPort dbType dbName dbUser dbPasswd
按照你安装好的数据库来填你自己的用户密码等
3.3.3启动cm
#systemctl start cloudera-scm-server
#systemctl enable cloudera-scm-server
现在就能访问master:7180页面了
先不急,再启动agent
3.4配置并启动cm-agent(所有节点)
修改agent对应的服务器
vi /etc/cloudera-scm-agent/config.ini
修改server_host为你的master
server_host=master133
启动agent
# systemctl start cloudera-scm-agent
# systemctl enable cloudera-scm-agent
4.安装CDH
4.1选择版本
进入到master:7180,并登录,默认用户密码:admin/admin
登录后进入到欢迎页,点击继续,然后同意条款继续
选择60天试用版,看看免费和收费的区别
4.2集群安装向导
4.2.1欢迎界面
点击继续后进入到安装集群欢迎界面
点击继续填写集群名称
4.2.2 选择主机
继续下一步选择主机,由于我们前几个步骤事先在各节点安装了agent,因此可以看到这些机器,选择已有的主机,并继续
4.2.3选择cdh
下一步选择cdh,注意cdh版本(其实我是先看到这里版本再下载cdh,再重启cm-server从新来到这一步的)
4.2.4解决主机运行状况不良的错误
因为之前就把cdh的三个文件文件放入了/opt/cloudera/parcel-repo,所以这里直接就是已下载100%
但有个主机运行状况不良的错误-这是由于server和agent的id标识不一致导致的
删除agent的cm_guid并重启(有问题的都进行这个操作)
rm -rf /var/lib/cloudera-scm-agent/cm_guid
systemctl restart cloudera-scm-agent
重启agent后不勇任何操作,界面上会发现正在进行一下部,分配
然后自动进入检查集群界面,选择I understand the risks, let me continue with cluster creation.并继续
4.2.5选择服务
选择所有服务并继续
接着选择服务分配,根据自己的需求选择好了,点击继续
4.3.6 填写mysql
然后进行数据库设置,选择mysql,并配置之前安装好的mysql即可,不过要新建好各个数据库,填完所有的库后,点击测试然后点击
4.3.7 审核
我把地址都改到/opt/cdh里面,点击继续 进行运行安装界面
出现hive和oozie创建mysql表Failed to load driver的错误,需要把mysql驱动报复制进去
cp mysql-connector-java-5.1.25.jar /opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774/lib/hive/lib/
cp mysql-connector-java-5.1.25.jar /opt/cloudera/parcels/CDH-6.2.1-1.cdh6.2.1.p0.1425774/lib/oozie/lib
注意:如果有失败的情况重新resume之前,要删掉你在上个界面配置namenode的目录
4.3.8 解决oozie数据表创建失败(坑的是错误信息不能正确显示)
错误信息 Completed only 4/5 steps. First failure: Command (Create Oozie Database Tables (99)) has failed Process oozie-OOZIE-SERVER-createdbtables (id=63) on host master133 (id=1) exited with 1 and expected 0 $>oozie/oozie.sh ["db-command","create"]
点击Show All Steps 来查看详细错误,有时候能看到,有时后点了看不到,所以我就点击链接进入到oozie服务,再重新创建oozie数据库表
stderr显示如下:这肯定就是mysql driver文件复制的路径不对了
Stack trace for the error was (for debug purposes):
--------------------------------------
java.lang.Exception: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:963)
at org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:192)
at org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:135)
at org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:83)
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.apache.oozie.tools.OozieDBCLI.createConnection(OozieDBCLI.java:952)
at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:959)
... 3 more
stdout显示如下:
Fri Sep 27 16:18:48 CST 2019
JAVA_HOME=/usr/java/jdk1.8.0_77
using 6 as CDH_VERSION
CONF_DIR=/var/run/cloudera-scm-agent/process/66-oozie-OOZIE-SERVER-createdbtables
CMF_CONF_DIR=
Copying JDBC jar from /usr/share/java/mysql-connector-java.jar to /var/lib/oozie
Validate DB Connection
按照提示复制mysql jar就可以了
cp mysql-connector-java-5.1.25.jar /var/lib/oozie
然后删除namenode目录,resume重新来一次
4.3.8安装成功
经过一段时间的等待终于安装成功,感觉成功需要缘分呀,不过一步步来还是能成功的!!!
本文参考:CDH大数据集群环境搭建完整教程