安装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依赖的版本也是不一样的。

image-20210115232809697

CDH和CM支持的操作系统

注意:

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

image-20210115233159726

文件系统要求

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必须要安装。

image-20210115234308874

Java版本要求

使用64位的Java版本

image-20210115234516484

image-20210115234556806

准备工作

安装Centos 7

安装网络工具:

yum install -y net-tools.x86_64 
yum install -y wget

安装VIM编辑器

yum install -y vim

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

下载包以及规划

参考:https://docs.cloudera.com/documentation/enterprise/6/latest/topics/installation_reqts.html#pre-install

1、下载CM 6.3.1

2、下载CDH 6.3.2

3、环境配置

image-20210117191633817

创建安装用户

# 添加组
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 -version
java 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:$PWD
scp -r jdk1.8.0_181/ root@cdh6-slave2:$PWD
scp -r jdk1.8.0_181/ root@cdh6-slave3:$PWD

scp /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.repo
sudo 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.jar
sudo 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 mariadb
sudo 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.rpm
sudo yum localinstall -y mysql57-community-release-el7-11.noarch.rpm
sudo yum repolist enabled | grep "mysql.*-community.*"

安装MySQL

sudo yum install -y mysql-community-server

启动MySQL服务

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

查看mysql初始密码

sudo grep 'temporary password'  /var/log/mysqld.log
2021-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

# 重启MySQL
sudo systemctl restart mysqld

修改MySQL密码

# 用前面的初始密码登录到MySQL
mysql -uroot -p
set 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工具从外部连接,测试是否有效。

创建数据库

image-20210116225331559

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 server
cd /home/hadoop/cm6.3.1/RPMS/x86_64
sudo 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-server
cd /opt/cloudera/cm
# 查看安装是否成功
rpm -qa | grep cloudera-manager

[hadoop@cdh6-master cm]$ rpm -qa|grep cloudera-manager
cloudera-manager-server-6.3.1-1466458.el7.x86_64
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64

配置数据库连接

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

com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=localhost
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.setupType=EXTERNAL
com.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配置域名映射:

image-20210117114003320

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

使用admin/admin登陆

image-20210117114510232

安装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

image-20210117115401493

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

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

image-20210117120024181

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

通过向导安装组件

配置CM

1、配置集群名称为:MyCDH

image-20210117114641403

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

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

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

image-20210117120349818

image-20210117120307184

4、选择cdh6.x版本

等待下载Parcel

image-20210117124107096

耐心等待下载、分配、解压、激活完成。这个过程大概需要(40-60分钟)

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。

image-20210117125141503

下载过程中如果出现: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掉,不必理会。

等待解压完成。

image-20210117131558001

继续配置

image-20210117133724001

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

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

image-20210117135305509

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

配置MySQL元数据库

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

image-20210117135748394

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

配置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

点击「继续」

等待安装/启动完成

image-20210117140207016

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

image-20210117142222998

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

参考文献:

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

https://www.cnblogs.com/dengbangpang/archive/2020/07/02/13224244.html

posted @ 2021-02-19 09:20  斜杠代码日记  阅读(725)  评论(0编辑  收藏  举报