概述

CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。

Cloudera Manager则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。

公司最近新搭建了一套CDH的集群,记录一下。

CM安装步骤

1. 下载资源

现在官网不让下了,后续有需要我把离线包传上来。

img

2. 安装依赖环境

2.1 安装JDK

官方推荐使用jdk_1.8.0_181,建议直接使用安装包里带的cloudera版本

2.2 MySQL

主节点安装MySQL

使用5.7版本

在MySQL中创建所需库

CDH元数据库用来管理元数据

create database cmf DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
grant all on cmf.* TO 'cmf'@'%' IDENTIFIED BY '123456';
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY '123456';
flush privileges;

主节点安装MySQL数据库驱动

mkdir -p /usr/share/java/ 

重命名为不带版本号

cp mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar 

3. 各节点创建目录并解压

sudo mkdir /opt/cloudera-manager  

sudo tar -zxvf cm6.3.1-redhat7.tar.gz -C /opt/cloudera-manager/

4. 主节点部署

cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64

部署server服务

rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force 
rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm --nodeps --force

修改server配置

vim  /etc/cloudera-scm-server/db.properties

配置数据库信息

com.cloudera.cmf.db.type=mysql 
com.cloudera.cmf.db.host=noed1
com.cloudera.cmf.db.name=cmf 
com.cloudera.cmf.db.user=cmf 
com.cloudera.cmf.db.password=123456 
com.cloudera.cmf.db.setupType=EXTERNAL

5. 所有节点部署

cd /opt/cloudera-manager/cm6.3.1/RPMS/x86_64

部署agent服务

rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm --nodeps --force 
rpm -ivh cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm --nodeps --force

所有节点修改agent的配置

指向server节点

sed -i "s/server_host=localhost/server_host=vplc01/g" /etc/cloudera-scm-agent/config.ini

6. 主节点部署parcel源

两种安装方法,一种是使用数据包,一种是使用httpd部署离线parcel源

使用数据包

复制 parcel 文件到 /opt/cloudera/parcel-repo 目录

cp CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel /opt/cloudera/parcel-repo

离线parcel源

安装httpd服务

yum install -y httpd 

部署离线parcel源

mkdir -p /var/www/html/cdh6_parcel 
cp CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel /var/www/html/cdh6_parcel/ 
cp CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha /var/www/html/cdh6_parcel/ 
cp manifest.json /var/www/html/cdh6_parcel/

注意:

CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1要改名为CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha

启动httpd

systemctl start httpd

浏览器访问测试

http://172.16.5.90/cdh6_parcel/

img

7. 启动服务

启动server服务

启动服务

systemctl start cloudera-scm-server

查看日志

tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

出现7180端口,表示成功

img

启动agent服务

所有节点启动agent服务

sudo systemctl restart cloudera-scm-agent

8. 访问主节点7180端口登录

http://172.16.5.90:7180

admin/admin

img

9.安装集群

登录后安装提示一步一步走即可。

选择存储库这一步时,需要将Parcel地址更改为本地搭建的Parcel源

img

img

等待安装完成即可。

此次若出现“主机运行状况不良”,说明之前有过安装失败的情况。

解决方法:

删除有问题节点下的/var/lib/cloudera-scm-agent/cm_guid文件,然后重启agent

Q&A

1.找不到JDK

问题描述

clouderamanager-server启动时会报类似于以下的错误:

| Error: Unable to find a compatible version of Java on this host,    |
| either because JAVA_HOME has not been set or because a              |
| compatible version of Java is not installed.                        |
±---------------------------------------------------------------------+
| Please install either:                                              |
| - a supported version of the Oracle JDK from the Oracle Java web    |
| site:                                                               |
| > http://www.oracle.com/technetwork/java/javase/index.html <        |
| OR                                                                  |
| - a supported version of the OpenJDK from your OS vendor. Help for  |
| some OSes are available at:                                         |
| > http://openjdk.java.net/install/ <                                |
|                                                                     |
| Cloudera Manager requires Oracle JDK or OpenJDK 1.8 or later.       |
| NOTE: Cloudera Manager will find the Oracle JDK when starting,      |
| regardless of whether you installed the JDK using a binary          |
| installer or the RPM-based installer.                               |

解决方案

对于以上问题,是CM对当前JDK不支持,或者找不到JAVA_HOME环境变量。

  1. 确认jdk版本

通过官方文档我们得知,CM6.3.1版本推荐使用jdk_1.8.0_181版本,查看本地版本是否正确。

  1. 确认jdk安装路径

CM会去/usr/java目录下加载jdk,对于使用yum/rpm安装的jdk,/usr/java是默认路径,不会有问题。但对于使用二进制文件手动安装的jdk,可能不在这个路径下,解决方法是使用软连接将java路径连接到/usr/java下。

ln /export/jdk_1.8.0_131/ /usr/java/

注: 如果没有/usr/java这个路径,可以手动创建,但要注意目录权限,要设置为755或更高。

2.找不到mysql驱动

问题描述

CM-server启动失败,查看日志发现找不到MySQL驱动。

JDBC driver cannot be found. Unable to find the JDBC database jar on host

解决方案

MySQL驱动jar包要放在/usr/share/java目录下,并将jar包重命名,去掉版本号。

mv mysql-connector-java-5.1.33-bin.jar mysql-connector-java.jar

然后注意/usr/share/java各级目录的权限,注意每一级目录是否都是755或以上的权限,否则权限不足也是会报cannot be found的。

3.agent启动时报错No supervisor config present

问题描述

在agent启动失败,报错:

 MainThread supervisor   ERROR    Failed! trying again in 2 second(s): No supervisor config present

解决方案

通过ps -ef | grep supervisord 查找supervisord进程,找到/usr/bin/python2 /opt/cloudera/cm-agent/bin/../bin/supervisord -n进程号,通过kill -9 进程号杀死进程后,重启agent:systemctl restart cloudera-scm-agent