安装CM 6.3.1和CDH 6.3.2


操作系统要求

在安装CDH之前,我们来看看平台对系统有什么样的要求。通过官方文档,我们可以看到有5个方面的要求:

  • 软件依赖
  • CDH和CM支持的依赖
  • 文件系统要求
  • nproc配置
  • Kudu所要求的nscd

软件依赖

Python

操作系统带的Python是支持的(Hue和Spark会有一点问题),但Python 3.0或者更高版本是不兼容的。CDH 6要求OS需要Python 2.7或者更高的版本,而Spark 2需要Python 2.7或者更高版本的支持,但Spark 3只支持Python 3。

Perl

Cloudera Manager是要求Perl的。

python-psycopg2

CM6是依赖python-psycopg2的,Hue依赖更高的python-psycopg2版本。

iproute

CM6需要依赖iproute包。所有运行CM agent的节点都需要这个软件包。而不同的操作系统,对iproute依赖的版本也是不一样的。

安装CM 6.3.1和CDH 6.3.2_docker

CDH和CM支持的操作系统

注意:

  • 所有的CDH节点都需要在同一个OS的major版本。例如:都是CentOS 7.8或者都是CentOS 7.7。Cloudera建议我们都使用相同的操作系统版本,避免额外的风险。
  • Cloudera是不能把CDH集群部署在Docker上的

安装CM 6.3.1和CDH 6.3.2_数据库_02

文件系统要求

CDH支持的文件系统有:ext3、ext4、xfs(CentOS7的默认版本)、s3。Kudu要求使用:ext4或者xfs。Linux文件系统默认会保存每个文件的访问时间元数据,所以读文件也会写元数据,Cloudera建议 /etc/fstab 禁用noattime。

/dev/sdb1 /data1 ext4 defaults,noatime 0
mount -o remount /data1

nproc配置

应该确保nproc限制设置大一点,例如:65536或者262144

为Kudu配置nscd

建立使用nscd为Kudu配置DNS域名解析缓存

数据库要求

CM和CDH都嵌入了PostgreSQL数据库,在非生产环境可以用。但生产环境不可以使用它,必须要为它配置外部的数据库。要使用与操作系统匹配的数据库版本,MySQL必须要使用UTF-8编码方式。MySQL 5.7必须安装MySQL-shared-compact或者MySQL-shared软件包。CM Agent必须要安装。

安装CM 6.3.1和CDH 6.3.2_docker_03

Java版本要求

使用64位的Java版本

安装CM 6.3.1和CDH 6.3.2_数据库_04

安装CM 6.3.1和CDH 6.3.2_数据库_05

准备工作

安装Centos 7

安装网络工具:
yum install -y net-tools.x86_64 
yum install -y wget
安装VIM编辑器
yum install -y vim

当前系统默认的Python版本为2.7.5

下载包以及规划

1、下载CM 6.3.1

2、下载CDH 6.3.2

3、环境配置

安装CM 6.3.1和CDH 6.3.2_postgresql_06

创建安装用户

# 添加组
groupadd hadoop
# 创建用户并设置到组
adduser -g hadoop hadoop -d /home/hadoop -m
# 设置密码
passwd hadoop
sudo授权
vim /etc/sudoers
hadoop  ALL=(ALL) NOPASSWD: ALL

配置域名映射

所有节点上配置域名映射

sudo vim /etc/hosts
192.168.88.100 cdh6-master
192.168.88.101 cdh6-slave1
192.168.88.102 cdh6-slave2
192.168.88.103 cdh6-slave3

配置SSH免密登录

配置master到其他slave节点配置免密登录

# 生成ssh key,一路回车生成
ssh-keygen

ssh-copy-id hadoop@cdh6-master
ssh-copy-id hadoop@cdh6-slave1
ssh-copy-id hadoop@cdh6-slave2
ssh-copy-id hadoop@cdh6-slave3

关闭防火墙

所有节点关闭防火墙

# 查看防火墙状态
sudo firewall-cmd --state
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service

关闭SELINUX

sudo setenforce 0
sudo vim /etc/selinux/config 

SELINUX=disabled

安装依赖

所有节点安装以下依赖

sudo yum install -y bind-utils psmisc libxslt cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs httpd mod_ssl openssl-devel python-psycopg2 MySQL-python /lib/lsb/init-functions libpq.so.5
sudo wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
# 或者直接从本地上传,然后安装
sudo rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm

安装NTP

所有机器安装NTP服务

# 安装
sudo yum -y install ntp
# 配置时间服务器
sudo vim /etc/ntp.conf
## 加入时间服务器:
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org

# 启动NTP时间服务器
sudo systemctl start ntpd.service
# 设置NTP开机自动启动
sudo systemctl enable ntpd.service

安装JDK

下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

# 授权hadoop用户 /opt拥有者权限sudo chown -R hadoop /opt配置环境变量# 上传JDK压缩包 sudo mkdir /usr/java sudo tar -xvzf /home/hadoop/jdk-8u181-linux-x64.tar.gz -C /usr/java  vim ~/.bash_profile  export JAVA_HOME=/usr/java export PATH=$JAVA_HOME/bin:$PATH export JRE_HOME=$JAVA_HOME/jre  source /home/hadoop/.bash_profile查看Java版本号:[root@cdh6-master opt]# java -versionjava version "1.8.0_181"Java(TM) SE Runtime Environment (build 1.8.0_181-b13)Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)分发到另外几台服务器scp -r jdk1.8.0_181/ root@cdh6-slave1:$PWDscp -r jdk1.8.0_181/ root@cdh6-slave2:$PWDscp -r jdk1.8.0_181/ root@cdh6-slave3:$PWDscp /home/hadoop/.bash_profile hadoop@cdh6-slave1:/home/hadoop/scp /home/hadoop/.bash_profile hadoop@cdh6-slave2:/home/hadoop/scp /home/hadoop/.bash_profile hadoop@cdh6-slave3:/home/hadoop/全部加载环境变量source ~/.bash_profile

注意:

  • JDK一定要安装在 /usr/java目录,否则会报错找不到JDK

安装CDH 6.3 YUM源

sudo curl -o /etc/yum.repos.d/cloudera-manager.repo https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/cloudera-manager.reposudo rpm --import https://archive.cloudera.com/cm6/6.3.0/redhat7/yum/RPM-GPG-KEY-cloudera 

所有节点安装MySQL驱动

wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.46.tar.gz# 或者直接从本地上传# 解压tar -xvzf mysql-connector-java-5.1.46.tar.gz# 放到指定目录,一定要改名为mysql-connector-java.jarsudo mkdir -p /usr/share/java/sudo cp mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /usr/share/java/mysql-connector-java.jar# 复制到每个节点sudo scp /usr/share/java/mysql-connector-java.jar root@cdh6-slave1:/usr/share/java/sudo scp /usr/share/java/mysql-connector-java.jar root@cdh6-slave2:/usr/share/java/sudo scp /usr/share/java/mysql-connector-java.jar root@cdh6-slave3:/usr/share/java/

安装mysql 5.7

检查系统自带的MySQL服务。

清理机器上安装的mariadb

sudo rpm -qa | grep mariadbsudo rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

安装libaio

sudo rpm -qa | grep libaio# 如果没有则用yum安装sudo yum install libaio -y

安装MySQL源

sudo wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpmsudo yum repolist enabled | grep "mysql.*-community.*"

安装MySQL

sudo yum install -y mysql-community-server

启动MySQL服务

sudo systemctl start mysqldsudo systemctl status mysqld# 设置开机启动sudo systemctl enable mysqld# 重载所有修改过的配置文件sudo systemctl daemon-reload

查看mysql初始密码

sudo grep 'temporary password'  /var/log/mysqld.log2021-01-17T02:34:12.450842Z 1 [Note] A temporary password is generated for root@localhost: O6uldhGK(F9,

修改MySQL密码要求级别

sudo vim /etc/my.cnf# 添加下面一行plugin-load=validate_password.so validate-password=OFF# 重启MySQLsudo systemctl restart mysqld

修改MySQL密码

# 用前面的初始密码登录到MySQLmysql -uroot -pset password for 'root'@'localhost'=password('123456'); 

创建scm用户

mysql -uroot -p# 新建scm用户CREATE USER 'scm'@'%' IDENTIFIED BY '123456';grant all privileges on *.* to root@'%'identified by '123456';grant all privileges on *.* to 'scm'@'%' with grant option;flush privileges;

尝试使用MySQL工具从外部连接,测试是否有效。

创建数据库

安装CM 6.3.1和CDH 6.3.2_postgresql_07

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;grant all privileges on *.* to 'scm'@'%' identified by '123456' with grant option;flush privileges; 

安装CM

安装Cloudera Manager Server

在Master节点上安装Cloudera Manager Server。

cd /home/hadoop# 上传cm压缩包并解压缩tar -xvzf cm6.3.1-redhat7.tar.gz# 安装cm daemon、cm servercd /home/hadoop/cm6.3.1/RPMS/x86_64sudo yum -y localinstall cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-servercd /opt/cloudera/cm# 查看安装是否成功rpm -qa | grep cloudera-manager[hadoop@cdh6-master cm]$ rpm -qa|grep cloudera-managercloudera-manager-server-6.3.1-1466458.el7.x86_64cloudera-manager-daemons-6.3.1-1466458.el7.x86_64

配置数据库连接

sudo vim /etc/cloudera-scm-server/db.propertiescom.cloudera.cmf.db.type=mysqlcom.cloudera.cmf.db.host=localhostcom.cloudera.cmf.db.name=scmcom.cloudera.cmf.db.user=scmcom.cloudera.cmf.db.setupType=EXTERNALcom.cloudera.cmf.db.password=123456

Master执行初始化脚本

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

启动CM Server

sudo systemctl start cloudera-scm-server# 查看状态sudo systemctl start cloudera-scm-server

查看启动日志

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

Slave节点安装Agent

在所有Slave节点安装agement

sudo yum localinstall cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm  cloudera-manager-agent  -y

所有Slave节点修改CM Server地址

sudo vim /etc/cloudera-scm-agent/config.ini# 将server_host修改为CM-Server所在的主机名server_host=cdh6-master

启动Agent

sudo systemctl start cloudera-scm-agent# 查看agent状态sudo systemctl status cloudera-scm-agent

查看日志

sudo tail -100f /var/log/cloudera-scm-agent/cloudera-scm-agent.log

登录CM

在window配置域名映射:

安装CM 6.3.1和CDH 6.3.2_docker_08

http://cdh6-master:7180/cmf/login

使用admin/admin登陆

安装CM 6.3.1和CDH 6.3.2_postgresql_09

安装CDH组件

下载CDH安装包

Master安装Apache HTTP Server

http server是用来存放Parcel文件的

sudo yum install httpd# 启动sudo systemctl start httpd# 查看httpd状态sudo systemctl status httpd# 创建CDH安装包库位置sudo mkdir /var/www/html/cloudera-repos# 将parcel文件和sha1上传到上面的目录中[hadoop@cdh6-master cloudera-repos]$ ll总用量 2033428-rw-r--r--. 1 root root 2082186246 1月  17 11:57 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel-rw-r--r--. 1 root root         40 1月  17 11:55 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha-rw-r--r--  1 root root      33887 1月  17 12:37 manifest.json# 将.sha1后缀名改为.sha[hadoop@cdh6-master cloudera-repos]$ sudo mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha[hadoop@cdh6-master cloudera-repos]$ ll总用量 2033392-rw-r--r--. 1 root root 2082186246 1月  17 11:57 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel-rw-r--r--. 1 root root         40 1月  17 11:55 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

安装CM 6.3.1和CDH 6.3.2_docker_10

测试Apache服务,在浏览器中输入:

http://cdh6-master/cloudera-repos/

安装CM 6.3.1和CDH 6.3.2_mysql_11

这样,其他Agent就可以从Apache Server下载Parcel了。

通过向导安装组件

配置CM

1、配置集群名称为:MyCDH

安装CM 6.3.1和CDH 6.3.2_数据库_12

2、扫描主机(安装过CM Agent,且配置正确的服务器会直接显示出来)

3、配置本地远程Parcel url地址(就是前面的Apache HTTP Server地址)

配置为:http://cdh6-master/cloudera-repos/

安装CM 6.3.1和CDH 6.3.2_数据库_13

安装CM 6.3.1和CDH 6.3.2_mysql_14

4、选择cdh6.x版本

等待下载Parcel

安装CM 6.3.1和CDH 6.3.2_cloudera_15

耐心等待下载、分配、解压、激活完成。这个过程大概需要(1个小时左右)

1、CM会先将Apache Server上的parcel下载到/opt/cloudera/parcel-repo目录

[hadoop@cdh6-master parcel-repo]$ ll总用量 2035912-rw-r----- 1 cloudera-scm cloudera-scm    2496640 1月  17 12:39 CDH-5.16.2-1.cdh5.16.2.p0.8-el7.parcel.part-rw-r----- 1 cloudera-scm cloudera-scm 2082186246 1月  17 12:50 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel-rw-r----- 1 cloudera-scm cloudera-scm         41 1月  17 12:50 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha-rw-r----- 1 cloudera-scm cloudera-scm      79610 1月  17 12:51 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.torrent

你会发现,CM制作了torrent种子,方便其他agent下载。

2、每个slave从master上下载parcel。

安装CM 6.3.1和CDH 6.3.2_postgresql_16

下载过程中如果出现:org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection异常。查看日志发现:

2021-01-17 12:53:04,933 INFO JvmPauseMonitor:com.cloudera.enterprise.debug.JvmPauseMonitor: Detected pause in JVM or host machine (e.g. a stop the world GC, or JVM not scheduled): paused approximately 5938ms: no GCs detected.2021-01-17 12:53:29,214 WARN C3P0PooledConnectionPoolManager[identityToken->1hgeickaf4288e9wu8vq|46d8f407]-AdminTaskTimer:com.mchange.v2.async.ThreadPoolAsynchronousRunner: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@7fdfa5b3 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks!2021-01-17 12:53:29,217 WARN JvmPauseMonitor:com.cloudera.enterprise.debug.JvmPauseMonitor: Detected pause in JVM or host machine (e.g. a stop the world GC, or JVM not scheduled): paused approximately 22360ms: no GCs detected.2021-01-17 12:53:29,602 WARN scm-web-107:org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver: Resolved [org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection] to ModelAndView: materialized View is [com.cloudera.server.web.common.JamonModelAndView$JamonView@6ee3400a]; model is {}2021-01-17 12:53:43,479 INFO JvmPauseMonitor:com.cloudera.enterprise.debug.JvmPauseMonitor: Detected pause in JVM or host machine (e.g. a stop the world GC, or JVM not scheduled): paused approximately 1022ms: no GCs detected.

这个问题是由于Full GC,是由于Master内存紧张导致。CM会Resolve掉,不必理会。

等待解压完成。

安装CM 6.3.1和CDH 6.3.2_cloudera_17

继续配置

安装CM 6.3.1和CDH 6.3.2_cloudera_18

选择安装需要的组件,此处我安装了以下几个组件:

  • HDFS
  • YARN
  • ZK
  • Kudu
  • Impala
  • Hive
  • Spark
  • Hue

安装CM 6.3.1和CDH 6.3.2_docker_19

给所有组件分配角色。配置好后,点击「继续」。等待片刻。

配置MySQL元数据库

在MySQL创建一个hive和hue、activity_monitor的数据库,用于存放Hive的元数据。

安装CM 6.3.1和CDH 6.3.2_mysql_20

注意:主机名称、数据库名、用户名、密码都要配置正确。否则需要等待较长时间。

配置Kudu

配置WAL目录:

1、Kudu Master WAL Directory

/kudu/master/wal

2、Kudu Master Data Directories

/kudu/master/data

3、Kudu Tablet Server WAL Directory

/kudu/tablet/wal

4、Kudu Tablet Server Data Directories

/kudu/tablet/data

点击「继续」

等待安装/启动完成

安装CM 6.3.1和CDH 6.3.2_docker_21

到此为止,CM和CDH就已经安装好了。

安装CM 6.3.1和CDH 6.3.2_postgresql_22

大家可以根据实际情况,来安装其他的服务,以及对现有运行的服务管理。

所有的安装资源都已经上传,大家可以关注我的公众号,并回复 cdh_6.3.2,自行获取。

参考文献:

https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rgosrequirements.html#c63supportedos