CDH集群离线安装与使用详细步骤

hadoop | 2020-10-10 10:02:59

之前研究过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大数据集群环境搭建完整教程

登录后即可回复 登录 | 注册
    
  • houyong
    houyong

    一定要把jdbc包放到/usr/share/java/mysql-connector-java.jar,否则会经常找不到驱动包,而且名字还必须是这个名字

  • houyong
    houyong

    cdh parcel.sha1 重命名为 parcel.sha这点必须注意,否则,系统会重新下载

关注编程学问公众号