环境及软件准备

环境准备

Ubuntu16.04 Server x 3

HostNameIPServerAgent
node1192.168.8.101
node2192.168.8.201
node3192.168.8.202

下载安装的软件

  • 下载 cloudera manage
    1
    wget http://archive.cloudera.com/cm5/cm/5/cloudera-manager-xenial-cm5.16.2_amd64.tar.gz
  • 下载离线资源包(parcels):
    1
    2
    3
    wget http://archive.cloudera.com/cdh5/parcels/5.16.2/CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel.sha1
    wget http://archive.cloudera.com/cdh5/parcels/5.16.2/CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel
    wget http://archive.cloudera.com/cdh5/parcels/5.16.2/manifest.json
    将资源包移动到 /opt/cloudera/parcels-repo 目录
    1
    2
    3
    4
    5
    # 首先创建目录(所有节点)
    sudo mkdir /opt/cloudera /opt/cloudera/parcels /opt/cloudera/parcel-repo
    # 将 parcel 文件移动到 parcel-repo 目录(主节点)
    sudo mv CDH-5.16.2-1.cdh5.16.2.p0.8-xenial.parcel* /opt/cloudera/parcel-repo/
    sudo mv manifest.json /opt/cloudera/parcel-repo/
  • Mysql驱动Jar包:
    1
    2
    3
    wget https://maven.aliyun.com/repository/public/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
    # 然后将下载的 jar 移动到 /usr/share/java 下
    sudo mv mysql-connector-java-8.0.16.jar /usr/share/java/mysql-connector-java.jar

主机的环境配置

修改hostname(所有节点)

  • 主节点 node1 - 修改 /etc/hostnamenode1
  • 从节点 node2 - 修改 /etc/hostnamenode2
  • 从节点 node3 - 修改 /etc/hostnamenode3
  • 使 hostname 生效 - 执行命令 sudo /etc/init.d/hostname.sh start

修改hosts(所有节点)

/etc/hosts 文件添加以下内容:

1
2
3
192.168.8.101 node1
192.168.8.201 node2
192.168.8.202 node3

更新软件包(所有节点)

更新软件包之前修改为国内镜像源,修改 /etc/apt/source.list 文件为以下内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main

deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main

deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe

deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe

更新源:

1
sudo apt-get update

关闭防火墙(所有节点)

1
2
sudo ufw disable
sudo apt-get remove iptables

python2.7(所有节点)

如果未安装 python2.7 服务则先进行安装(所有节点)

1
sudo apt-get install python2.7 -y

创建cloudera-scm用户(所有节点)

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

ssh服务配置(所有节点)

  • 如果未安装 ssh 服务则先进行安装(所有节点)
    1
    sudo apt install openssh-server openssh-client -y
  • 修改 /etc/ssh/sshd_config 配置文件(所有节点)
    1
    2
    PermitRootLogin yes
    PasswordAuthentication yes
  • 然后重启 ssh 服务
    1
    sudo /etc/init.d/ssh restart
  • 配置各节点之间的免密登陆(主节点)
    1
    2
    3
    4
    ssh-keygen -t rsa
    ssh-copy-id node1
    ssh-copy-id node2
    ssh-copy-id node3

配置ntpdate服务(所有节点)

1
2
3
sudo apt-get install ntp ntpdata -y # 安装 ntp服务
sudo ntpdate -u ntp.aliyun.com # 使用阿里云时间同步服务器
sudo hwclock -w # 将osclock写入hwclock

安装jdk(所有节点)

  • jdk-8u271-linux-x64.tar.gz 上传到服务器上
  • 解压到 /usr/local/java
  • 配置环境变量,在 /etc/profile 添加如下配置:
    1
    2
    3
    4
    export JAVA_HOME=/usr/local/java/jdk1.8.0_271
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    export PATH=$PATH:${JAVA_HOME}/bin:{JRE_HOME}/bin
  • 执行 source /etc/profile 使配置生效

安装配置mysql(主节点)

1
sudo apt-get install mysql-server-5.7 -y

配置CM数据库账户

执行 mysql -uroot -p输入root` 用户密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
bennie@node1:~$ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 716
Server version: 5.7.32-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

执行创建数据库 sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 创建scm数据库,账户名为scm,密码为ok。
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'ok';
# 创建amon数据库,账户名为amon,密码为ok。
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'ok';
# 创建rman数据库,账户名为rman,密码为ok。
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'ok';
# 创建hue数据库,账户名为hue,密码为ok。
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'ok';
# 创建hive数据库,账户名为hive,密码为ok。
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'ok';
# 创建nav数据库,账户名为nav,密码为ok。
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'ok';
# 创建oozie数据库,账户名为oozie,密码为ok。
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'ok';

离线安装CM

本文采用的是离线安装方式,将下载的 cloudera-manager-xenial-cm5.16.2_amd64.tar.gz 解压到 /opt/cloudera 目录下

1
sudo tar -zxvf cloudera-manager-xenial-cm5.16.2_amd64.tar.gz -C /opt/cloudera/

修改agent.ini配置文件

1
sudo vim /opt/cloudera/cm-5.16.2/etc/cloudera-scm-agent/config.ini

修改为以下内容:

1
2
server_host=node1
server_port=7182

修改cloudera-scm-server

1
sudo vim /opt/cloudera/cm-5.16.2/etc/init.d/cloudera-scm-server 

在文件头部添加 JAVA_HOME 环境变量

1
export JAVA_HOME=/usr/local/java/jdk1.8.0_271

修改cloudera-scm-agent

1
sudo vim /opt/cloudera/cm-5.16.2/etc/init.d/cloudera-scm-agent 

在文件头部添加 CMF_VAR 变量

1
export CMF_VAR=/opt/cloudera/cm-5.16.2

分发到其他节点

复制 node1节点的 cm-5.16.2文件夹至 node2node3节点

1
2
scp -r /opt/cloudera/cm-5.16.2 node2:/opt/cloudera/
scp -r /opt/cloudera/cm-5.16.2 node3:/opt/cloudera/

复制 node1节点的 parcel-repo文件夹至 node2node3节点

1
2
sudo scp -r /opt/cloudera/parcel-repo node2:/opt/cloudera/
sudo scp -r /opt/cloudera/parcel-repo node3:/opt/cloudera/

初始化scm数据库(主节点)

初始化之前先添加 JAVA_HOME 环境变量

1
sudo vim /opt/cloudera/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh
1
export JAVA_HOME=/usr/local/java/jdk1.8.0_271
  • 重新配置时,防止 scm 数据库已经存在而终止执行命令可加参数 -f
  • 脚本用来创建和配置 CMS 需要的数据库。各参数是指:
    • mysql:数据库用的是 mysql,如果安装过程中用的 oracle,那么该参数就应该改为 oracle
    • 第一个scm:我们上面创建的数据库名。
    • 第二个scm:我们上面创建的数据库用户名。
    • ok: 我们上面创建的数据库密码。
  • 最后四个参数分别是:数据库类型,数据库名,数据库用户名,数据库密码。
1
sudo /opt/cloudera/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql scm scm ok

更改文件夹所有用户与用户组(所有节点)

1
2
3
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcels
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/cm-5.16.2

创建lib目录(主节点)

1
2
sudo mkdir /var/lib/cloudera-scm-server
sudo chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server

启动CMS(主节点)

node1 节点启动 Cloudera Manager Server

1
2
3
sudo /opt/cloudera/cm-5.16.2/etc/init.d/cloudera-scm-server start
# 查看日志
sudo tail -f /opt/cloudera/cm-5.16.2/log/cloudera-scm-server/cloudera-scm-server.log

创建run目录(所有节点)

分别在 node1node2node3 创建 /var/run/cloudera-scm-agent 目录

1
2
sudo mkdir /var/run/cloudera-scm-agent
sudo chown -R cloudera-scm:cloudera-scm /var/run/cloudera-scm-agent

启动CMA(所有节点)

分别在 node1node2node3 节点启动 Cloudera Manager Agent

1
2
3
sudo /opt/cloudera/cm-5.16.2/etc/init.d/cloudera-scm-agent start
# 查看日志
sudo tail -f /opt/cloudera/cm-5.16.2/log/cloudera-scm-agent/cloudera-scm-agent.log

apt源安装

添加Cloudera仓库(所有节点)

1
2
wget https://archive.cloudera.com/cm5/ubuntu/xenial/amd64/cm/cloudera.list
sudo mv cloudera.list /etc/apt/sources.list.d/cloudera-manager.list

安装仓库密钥(所有节点)

1
2
3
wget https://archive.cloudera.com/cm5/ubuntu/xenial/amd64/cm/archive.key
sudo apt-key add archive.key
sudo apt-get update

安装CMS(主节点)

1
sudo apt-get install cloudera-manager-server -y

安装CMA(所有节点)

1
sudo apt-get install cloudera-manager-agent -y

配置CMA(所有节点)

1
sudo vim /etc/cloudera-scm-agent/config.ini

修改为如下配置:

1
2
server_host=node1
server_port=7182 #若改端口被占用,改为其它端口

添加mysql连接库(主节点)

1
2
3
wget https://maven.aliyun.com/repository/public/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
# 然后将下载的 jar 移动到 /usr/share/java 下
sudo mv mysql-connector-java-8.0.16.jar /usr/share/cmf/lib

若之前已尝试过安装,会有遗留的文件,删除:

1
sudo rm -f /etc/cloudera-scm-server/db.* 

初始化数据库

为数据库初始化脚本添加环境变量

1
sudo vim /usr/share/cmf/schema/scm_prepare_database.sh

在文件头部添加 JAVA_HOME 环境变量

1
export JAVA_HOME=/usr/local/java/jdk1.8.0_271
1
sudo /usr/share/cmf/schema/scm_prepare_database.sh mysql scm scm ok

启动CMS(主节点)

1
sudo vim /etc/init.d/cloudera-scm-server 

在文件头部添加 JAVA_HOME 环境变量

1
export JAVA_HOME=/usr/local/java/jdk1.8.0_271
1
2
3
sudo systemctl start cloudera-scm-server.service
# 查看日志
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log

启动CMA(所有节点)

1
2
3
sudo systemctl start cloudera-scm-agent.service 
# 查看日志
sudo tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log

图形化安装

进入 CM 管理界面: 通过 http://node1:7180 进入

默认用户名密码都是 admin

选择安装的主机:如果没有启动 cloudera-scm-agent 服务会出现部分节点不在以管理的主机中

选择 cdh 的版本,选择自己下载在 parcels-repo 包中的 cdh 版本,这里应该选 CDH 5.16.2-1.cdh5.16.2.p0.4

集群安装检查主机正确性,确保所有验证都为绿色

集群安装配置

参考文献

Ubuntu16.0.4安装Cloudera Manager5.16.2