CDH5.13.3部署并升级Spark2.x

前言:网上也有很多关于CDH部署的相关文档,但由于基础环境的差异和软件安装方式的不同,其部署方式也大同小异,每篇文章都值得借鉴,但都不能完全照搬,只有自己亲自做了才知道所以然。建议在部署的时候遇到问题第一时间不是搜索而是先去看日志,提高自己解决问题的能力。
唯有实践才能出真理!!!

一、基础环境规划

1.1 软件版本

操作系统: Centos7.4 64位 
JDK:jdk1.8.0_181
Clouder Manager: 5.13.3
CDH:5.13.3
Mysql:5.7.25
JDBC: mysql-connector-java-5.1.46-bin.jar

1.2 配置规划

192.168.50.7	ha-0001  主节点  MySQL   ClouderManager
192.168.50.14	ha-0002  从节点
192.168.50.21	ha-0003  从节点
192.168.50.16	ha-0004  从节点

根据自己资源合理规划,主节点需要配置好一点的机器。

二、修改系统字符集配置主机名和hosts文件

以下配置所有节点都做

1.1 修改系统字符集

[root@ha-0001 ~]# echo $LANG
en_US.UTF-8  # 显示为此就不用更改,否则修改为以下
[root@ha-0001 ~]# vim /etc/locale.conf
LANG=en_US.UTF-8

1.2 永久修改各节点的主机名

[root@ha-0001 ~]# hostnamectl set-hostname ha-0001  # 不同节点修改对应的主机名
[root@ha-0001 ~]# hostname #查看主机名
ha-0001

1.3 配置各节点的hosts文件

[root@ha-0001 ~]# vim /etc/hosts
127.0.0.1       localhost       localhost.localdomain   localhost4      localhost4.localdomain4
127.0.0.1       localhost       localhost
# 保留以上原有配置,添加以下记录
127.0.0.1       localhost.ha-0001
192.168.50.7    ha-0001
192.168.50.14   ha-0002
192.168.50.21   ha-0003
192.168.50.16   ha-0004

127.0.0.1 localhost.ha-0001 此行在其它节点配置对应的主机名,如果没有配置,可能在初始化mysql数据库的时候会报没有权限的错误(本次实践出现的问题)

三、关闭防火墙以及selinux

以下配置所有节点都做

1.1 先临时关闭selinux,再在配置文件中配置永久关闭

[root@ha-0001 ~]# sentenforce 0
[root@ha-0001 ~]# vim /etc/selinux/conf
# 修改原有配置为disabled
SELINUX=disabled

2.2 关闭防火墙,配置开机不启动

[root@ha-0001 ~]# firewall-cmd --state # 查看状态
[root@ha-0001 ~]# systemctl stop firewalld.service # 停止防火墙
[root@ha-0001 ~]# systemctl disable firewalld.service # 禁用防火墙

四、配置免密登陆

在所有节点都生成自己的密钥对分别添加到其它主机的认证文件中

[root@ha-0001 ~]# ssh-keygen -t rsa 
[root@ha-0001 ~]# ls .ssh/
authorized_keys  id_rsa           id_rsa.pub       known_hosts

以上操作会在用户家目录下隐藏的.ssh文件夹下生成密钥对,将公钥文件id_rsa.pub通过以下命令添加到其它主机的authorized_keys文件中,这是非对称密钥的加密认证体制,这里需要注意给本机自己也要做添加。

[root@ha-0001 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@ha-0001
[root@ha-0001 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@ha-0002
[root@ha-0001 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@ha-0003
[root@ha-0001 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@ha-0004

在所有节点做同样的操作,做完后用ssh root@ha-0001命令验证是否可以直连到其它主机,如果不用ssh-copy-id命令也可以手动添加公钥到其它主机的authorized_keys认证文件中

五、修改一些必要的系统内核参数

所有节点做以下配置

1.1 关闭透明大页,旨在提升系统性能

# 通过cat查看是否开启,显示以下表示开启
[root@ha-0001 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never  
[root@ha-0001 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# 做临时时关闭操做
[root@ha-0001 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@ha-0001 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 确认是否关闭,显示以下则表示已关闭
[root@ha-0001 ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
[root@ha-0001 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# 配置永久关闭
[root@ha-0001 ~]# vim /etc/rc.d/rc.local
# 添加如下代码,rc.local文件是系统启动时默认会执行的脚本
if test -f /sys/kernel/mm/transparent_hugepage/enabled;
 then
	echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag;
 then
	echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

1.2 配置内存交换参数默认值

# 临时修改
[root@ha-0001 ~]# sysctl -w vm.swappiness=10
# 在配置文件中永久修改为10
[root@ha-0001 ~]# vim /etc/sysctl.conf
vm.swappiness=10

1.3 配置ulimit文件句柄数

[root@ha-0001 ~]#  ulimit -n  # 查看当前值,有些为1024太小需要修改
# 配置文件中修改为以下值即可
[root@ha-0001 ~]# vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535

以上三步做完后使用以下命令让其修改生效

[root@ha-0001 ~]# sysctl -p

五、配置ntp系统时钟同步服务

所有节点都做配置,主节点和从节点配置不一样

     原则上是配置主节点为系统时钟server,从外部互联网同步时间,其它从节点作为客户端去从主节点同步时间,但有些安全要求环境不能连接外网的可以主节点的系统时间为准。确保系统安装了ntp服务,没有安装的的化执行以下命令安装服务,如果不能连接外网可以手动下载相关rpm软件包,手动安装

[root@ha-0001 ~]# yum install ntp ntpdate -y
# 配置主节点从外部互联网同步时钟(可访问外网)
[root@ha-0001 ~] vim /etc/ntp.conf
restrict    default kod nomodify notrap nopeer noquery
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer noquery
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
# 配置主节点以本机系统时间做同步(内网)
[root@ha-0001 ~] vim /etc/ntp.conf
restrict    default kod nomodify notrap nopeer noquery
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer noquery
server 127.127.1.0
Fudge 127.127.1.0 stratum 10
# 配置从节点从主节点去同步时间,注释调其它server的配置
[root@ha-0002 ~] vim /etc/ntp.conf
server 192.168.50.7
fudge 192.168.50.7 stratum 10

各个节点启动ntp服务,配置开机自启,更新当前时间

[root@ha-0001 ~]# systemctl start ntpd
[root@ha-0001 ~]# systemctl enable ntpd.service
[root@ha-0001 ~]# ntpq -p
[root@ha-0001 ~]# ntpdate ha-0001

以上时钟同步未作验证,我安装使用用华为云机器,华为云已做时钟同步,这里简单说明如何配置。

六、安装JDK

所有节点都做安装配置

可以提前配置自定义安装JDK,也可通过CM安装界面来安装,这里建议自己安装,卸载系统自带的版本较低的JDK,安装JDK1.8.x

# 查询系统自带jdk,将其卸载
[root@ha-0001 ~]# rpm -qa|grep java
# 卸载
[root@ha-0001 ~]# rpm -e --nodeps xxx # xxx为查询到的jdk软件包

到oracle官网下载对应jdk-8u181-linux-x64.tar.gz版本进行安装

[root@ha-0001 ~]# tar -xzvf jdk-8u181-linux-x64.tar.gz -C /opt/
[root@ha-0001 ~]# mv /opt/jdk-8u181-linux-x64 jdk
# 配置JDK环境变量
[root@ha-0001 ~]# vim /etc/profile
# 末尾加入jdk配置
export JAVA_HOME=/opt/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
# 立即生效
[root@ha-0001 ~]# source /etc/profile

如果系统可联网,也可直接用yum的方式安装JDK1.8.x,省去环境变量的配置,在CM安装的时候也可以自动识别,自定义的后续要在界面中配置一下JDK的路径,安装步骤才可进行。

七、MySQL安装与配置

只在主节点上安装MySQL
卸载自带mysql,下载安装mysql5.7.25

# 查询并卸载系统自带相关mysql包,防止与当前安装的有冲突
[root@ha-0001 ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.64-1.el7.x86_64
[root@ha-0001 ~]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
[root@ha-0001 ~]# rpm -qa|grep mariadb
[root@ha-0001 ~]# rpm -qa|grep mysql
# 在可以访问外网的机器上执行wget
[root@ha-0001 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.25-el7-x86_64.tar.gz
[root@ha-0001 ~]# tar -xzvf mysql-5.7.25-el7-x86_64.tar.gz -C /opt/
[root@ha-0001 ~]# mv /opt/mysql-5.7.25-el7-x86_64 /opt/mysql

创建mysql用户和组,不给登陆系统的权限,递归修改mysql目录所属组和所属用户

[root@ha-0001 mysql]# groupadd mysql
[root@ha-0001 mysql]# useradd -r -s /sbin/nologin -g mysql mysql -d /opt/mysql
[root@ha-0001 mysql]# mkdir data logs pid server
[root@ha-0001 mysql]# chown -R mysql:mysql /opt/mysql

初始化数据库

[root@ha-0001 mysql]# ./bin/mysqld --initialize --user=mysql --basedir=/opt/mysql --datadir=/opt/mysql/data
2020-04-04T10:34:38.439147Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2020-04-04T10:34:39.282429Z 0 [Warning] InnoDB: New log files created, LSN=45790
2020-04-04T10:34:39.335749Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2020-04-04T10:34:39.412431Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e33577c9-765f-11ea-a4ba-fa163e8a2662.
2020-04-04T10:34:39.415764Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2020-04-04T10:34:39.416141Z 1 [Note] A temporary password is generated for root@localhost: 8__a+0aoIylO

注意以上操作会生成mysql数据库的root临时密码,在提示信息中最后一行。
我这里执行出现一个lib库的报错,根据错误提示安装缺少的包即可

./bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file:
#解决 下载安装以下包即可
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm

配置数据库基础配置文件my.cnf,在/etc/my.cnf中配置以下基础信息,没有该文件则手动创建,即使没有该文件,mysql也能以缺省值正常启动。

[root@ha-0001 mysql]# vim /etc/my.cnf
[client]
port = 3306
socket = /opt/mysql/server/mysql.sock

[mysql]
no-auto-rehash
default-character-set=utf8

[mysqld]
socket = /opt/mysql/server/mysql.sock
basedir = /opt/mysql
max_allowed_packet = 64M
datadir = /opt/mysql/data
pid-file = /opt/mysql/pid/mysqldb.pid
explicit_defaults_for_timestamp = true
skip-ssl
secure-file-priv = NULL
lower_case_table_names = 1
back_log = 300
max_connections = 3000
max_connect_errors = 100
table_open_cache = 4096
external-locking = FALSE
max_allowed_packet = 64M
sort_buffer_size = 32M
join_buffer_size = 32M
thread_cache_size = 16
query_cache_size = 128M
query_cache_limit = 4M
thread_stack = 512K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 128M
max_heap_table_size = 128M
character-set-server=utf8
long_query_time = 6
slow_query_log_file=/opt/mysql/logs/slow.log
log_error = /opt/mysql/logs/error.log
[mysqld_safe]
open-files-limit = 8192
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

启用SSL功能,保证数据加密传输,提升安全性

[root@ha-0001 mysql]# bin/mysql_ssl_rsa_setup  --datadir=/opt/mysql/data

拷贝服务启动文件到/etc/init.d目录下,并在mysql启动脚本中加入数据目录和基础目录的配置

[root@ha-0001 mysql]# cp /opt/mysql/support-files/mysql.server /etc/init.d/mysql
[root@ha-0001 mysql]# vim /etc/init.d/mysql
# 修改以下配置,更改数据目录和基础目录
basedir=/opt/mysql
datadir=/opt/mysql/data
# 启动mysql
[root@ha-0001 mysql]# /etc/init.d/mysql start
# 登陆mysql
[root@ha-0001 mysql]# /opt/mysql/bin/mysql -u root -p 8__a+0aoIylO
# 修改root的零时密码
set password=password('test@2020')
#配置root用户和scm用户可远程登陆以及相关权限,本地以及远程都要设置
mysql> grant all privileges on *.* to 'root'@'%' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'ha-0001' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'root'@'127.0.0.1' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'scm'@'%' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'scm'@'localhost' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'scm'@'ha-0001' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'scm'@'127.0.0.1' identified by 'test@2020' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
#创建CM用到的相关数据库
mysql> create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

mysql> create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

配置mysql命令的环境变量,方便直接操作,设置开机启动

[root@ha-0001 mysql] vim /etc/profile
# 末尾添加
export PATH=/opt/mysql/bin:$PATH
[root@ha-0001 mysql]# source /etc/profile
[root@ha-0001 mysql]# systemctl enable mysql
[root@ha-0001 mysql]# chmod 755 /etc/init.d/mysql

八、安装CDH需要的软件以及服务的依赖

这里强调以下,为了防止后面在CM页面上执行安装出现软件依赖的报错,提前需要安装一些依赖软件包,当然也可以不做,当安装出现报错后,再查看日志缺什么装什么,本人就是这么干的,也就大概明白了什么服务需要依赖那些软件和包。

1.1 安装HDFS依赖的nfs-utils和rpcbind

    该服务装在哪个机器上取决于后面在CM界面上安装时选择HDFS的NFS Gateway服务安装在哪台机器上决定,我这里选择了ha-0001主节点,所以nfs-utils和rpcbind需要安装在ha-0001上,默认选择的也是该主机。如果不清楚可以在所有节点上都安装(但是不建议这么做,减少运行不必要的服务),

[root@ha-0001 ~]# yum install nfs-utils rpcbind -y
# 启动rpcbind服务,并设置开机自启
[root@ha-0001 ~]# systemctl start rpcbind.service
[root@ha-0001 ~]# systemctl status rpcbind.service
[root@ha-0001 ~]# systemctl enable rpcbind

1.2 安装Hue依赖的httpd服务和mod_ssl模块
同样装在哪个机器上取决于CM界面上选择的Hue运行主机,默认时ha-0001,所以我在ha-0001上安装了该服务。
安装httpd服务和mod_ssl模块,配置httpd为开机自启

[root@ha-0001 ~]# yum install httpd mod_ssl -y
[root@ha-0001 ~]# systemctl start httpd.service
[root@ha-0001 ~]# systemctl status httpd.service
[root@ha-0001 ~]# systemctl enable httpd

1.3 安装MySQL必须的模块包
这里Hue采用python2.7的Django框架开发,如果没有MySQL一些基础模块会在CM安装界面配置Hue数据库测试连接时报错,从CM的日志文件cloudera-scm-server.log就可以看到缺少的模块,我这里缺少以下几个模块,我通过离线下载rpm包的形式安装,如果可以联网或者配置了yum本地源使用yum直接安装以下模块即可,建议在安装过程缺少什么模块装什么模块,遵循最小化安装的原则。

[root@ha-0001 ~]#  rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm mysql-community-libs-5.7.25-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm

这里顺便介绍一下当yum不能连接外网或者没有配置本地仓库时离线安装rpm软件包的方法。因为rpm都有包之间的依赖关系,有安装先后的顺序。
可以在可以上网的环境中使用yum-utils解决,先安装yum-utils,使用repotrack命令下载全量依赖包到本地目录,然后将整个目录拷贝到内网机器上,在内网机器的该目录下执行yum localinstall *.rpm即可安装,这样就解决了本地不能联网时的rpm包模块之间的依赖。以下以nfs-utils为例

# 这台机器是可联网的机器
[root@service1 ~]# yum install yum-utils
# 这样会下载nfs-utils的全量依赖包到当前tmp目录
[root@service1 tmp]# repotrack nfs-utils
# 将tmp整个目录压缩后上传到内网机器解压后在当前目录下执行安装即可
[root@ha-0001 ~]# yum localinstall *.rpm

九、下载CDH和CM相关软件包开始安装CM

1.1 从CDH官网下载以下四个文件包括CDH软件包和CM软件包
建立软件包存放目录install,将下载的文件上传到该目录下
如下:mysql-connector-java-5.1.46-bin.jar是后续用到的驱动包

[root@ha-0001 install]# ls
CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel       cloudera-manager-centos7-cm5.13.3_x86_64.tar.gz  mysql-connector-java-5.1.46-bin.jar
CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha1  manifest.json

解压cloudera-manager-centos7-cm5.13.3_x86_64.tar.gz到/opt下,会生成如下cloudera 和cm-5.13.3 这两个文件夹

[root@ha-0001 install]# tar -xzvf cloudera-manager-centos7-cm5.13.3_x86_64.tar.gz -C /opt/
[root@ha-0001 opt]# ls /opt/
cloudera  cm-5.13.3  jdk  mysql
# 拷贝mysql驱动包到/opt/cm-5.13.3/share/cmf/lib/下
[root@ha-0001 opt]# cp ~/install/mysql-connector-java-5.1.46-bin.jar /opt/cm-5.13.3/share/cmf/lib/

在各个节点上创建cloudera-scm用户

[root@ha-0001 opt] useradd --system --home-dir /opt/cm-5.13.3/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

在主节点上初始化cm数据库

# 这里好像用scm和root都可以,用-u指定
[root@ha-0001 opt]# cm-5.13.3/share/cmf/schema/scm_prepare_database.sh mysql cm -h ha-0001 -uscm -ptest@2020 --scm-host ha-0001 scm scm scm

如果出现如下报错,需要确认用户名和密码以及相关scm用户或者root用户在数据库中的登陆权限以及密码是否正确,还有需要检查在/etc/hosts文件中是否缺少127.0.0.1 localhost.ha-0001这一行配置以及该文件配置的正确性。

java.sql.SQLException: Access denied for user 'scm'@'localhost' (using password: YES)

1.2 在主节点上配置CM,将其/opt/cm-5.13.3目录分发到从节点各个机器

[root@ha-0001 opt]# vim cm-5.13.3/etc/cloudera-scm-agent/config.ini
# 修改server_host为主机点主机名
server_host=ha-0001
# 拷贝/opt/cm-5.13.3到其它三个节点/opt下
[root@ha-0001 opt]# scp -r /opt/cm-5.13.3 root@ha-0002:/opt/
[root@ha-0001 opt]# scp -r /opt/cm-5.13.3 root@ha-0003:/opt/
[root@ha-0001 opt]# scp -r /opt/cm-5.13.3 root@ha-0004:/opt/

1.3 用下载好的CDH软件包制作本地镜像

     旨在CM界面安装的时候直接用本地下载好的,只在主节点上做就可以,从节点上还没有/opt/cloudera目录以及相应文件,后续启动CM在安装过程会自动创建该目录以及相应文件。

[root@ha-0001 install]# cp CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha1 manifest.json /opt/cloudera/parcel-repo/
# 将CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha1重命名为CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha
[root@ha-0001 parcel-repo]# mv CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha1 CDH-5.13.3-1.cdh5.13.3.p0.2-el7.parcel.sha

1.4 启动cloudera-scm-server和cloudera-scm-agent

     启动主节点上的cloudera-scm-server,在各个从节点上启动cloudera-scm-agent,这里要注意,当安装CM的机器(也就是主节点)也作为一个节点时,在主节点上要同时启动cloudera-scm-server和cloudera-scm-agent服务,不然在CM安装界面会找不到这台机器即ha-0001主节点

[root@ha-0001 opt]# cm-5.13.3/etc/init.d/cloudera-scm-server start
Starting cloudera-scm-server:                              [  OK  ]
[root@ha-0001 opt]# cm-5.13.3/etc/init.d/cloudera-scm-agent start
Starting cloudera-scm-agent: 							   [  OK  ]
# 在所有从节点只启动cloudera-scm-agent
[root@ha-0002 opt]# cm-5.13.3/etc/init.d/cloudera-scm-agent start
Starting cloudera-scm-agent: 							   [  OK  ]

十、在CM界面开始安装部署CDH

1.1 内网访问http://192.168.50.7:7180。
登陆开始执行安装,默认用户名和密码为admin/admin
CDH5.13.3部署并升级Spark2.x_第1张图片
CDH5.13.3部署并升级Spark2.x_第2张图片
选择开源版本
CDH5.13.3部署并升级Spark2.x_第3张图片
正则搜索要管理安装的主机,ha-000[1-4]
CDH5.13.3部署并升级Spark2.x_第4张图片
上图显示当前三个主机的原因是主节点上我没有启动cloudera-scm-agent,应当是四个主机就合适,启动一下,各节点服务都重启后再次进入即可
以下界面四台全选(这里修改后四台的忘截图了,显示三个)
CDH5.13.3部署并升级Spark2.x_第5张图片
CDH5.13.3部署并升级Spark2.x_第6张图片
CDH5.13.3部署并升级Spark2.x_第7张图片
执行主机检查和配置检查,有警告和错误的修正后再次检查
CDH5.13.3部署并升级Spark2.x_第8张图片
CDH5.13.3部署并升级Spark2.x_第9张图片
选择所有服务全部安装也可选择性安装
CDH5.13.3部署并升级Spark2.x_第10张图片
以root用户执行,所有节点服务器密码相同
CDH5.13.3部署并升级Spark2.x_第11张图片
选择各种服务安装在哪些机器上,如没有特殊要求默认即可,实际中按自己的需求和机器配置来定,为避免影响性能是各个节点服务均匀分布或在性能好的机器上,其中运行hue和NFS Gateway要选择已经安装了httpd以及nfs-utils和rpcbind服务,否则可能会报错
CDH5.13.3部署并升级Spark2.x_第12张图片
配置各个组件依赖的mysql数据库,之前已经创建过的
CDH5.13.3部署并升级Spark2.x_第13张图片
这里hue测试连接过不去可能是因为缺少一些mysql的基础包和库文件,如有报错请查看日志文件/opt/cm-5.13.3/log/cloudera-scm-server/cloudera-scm-server.log,找到缺少的库或软件安装即可。
CDH5.13.3部署并升级Spark2.x_第14张图片
以上目录选择默认即可,后续可以按需配置修改
开始执行安装步骤,有约十个步骤,有些步骤可能都会出现报错,从CM页面查看日志并解决相应的问题即可,很多问题在前面已经提到过。这里有两个错误说明下
(1) 第一步就提示不能配置客户端之类的信息,是因为自己定义的JDK安装路径CM找不到,去找默认的安装路径。在另一个页面访问CM,修改JDK路径,有时需要重启CM。
CDH5.13.3部署并升级Spark2.x_第15张图片
(2)hive和oozie数据表不能创建,是因为在相应位置缺少mysql-jdbc驱动包
在各个节点复制驱动包到相应目录,重新执行resume即可
hive库无法创建

cp /opt/cm-5.13.3/share/cmf/lib/mysql-connector-java-5.1.46-bin.jar /opt/cloudera/parcels/CDH-5.13.3-1.cdh5.13.3.p0.2/lib/hive/lib/

oozie无法创建

cp /opt/cm-5.13.3/share/cmf/lib/mysql-connector-java-5.1.46-bin.jar /var/lib/oozie/

CDH5.13.3部署并升级Spark2.x_第16张图片
CDH5.13.3部署并升级Spark2.x_第17张图片
CDH5.13.3部署并升级Spark2.x_第18张图片
以上即完成所有安装。
Hue webUI访问地址
http://192.168.50.7:8888
默认用户名和密码 admin/admin
spark UI
http://192.168.50.7:8088/cluster
在任意一节点上切换hdfs用户运行hadoop测试程序,看是否执行正常

[hdfs@ha-0001 /]$ hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100

十一、升级CDH中的Spark1.6版本到Spark2.x

首先下载spark2.3版本对应的如下四个文件
在主节点做即可

[root@ha-0001 install]# ls spark2.3/
manifest.json                                            SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha1
SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel  SPARK2_ON_YARN-2.3.0.cloudera4.jar

将SPARK2_ON_YARN-2.3.0.cloudera4.jar拷贝到/opt/cloudera/csd

[root@ha-0001 csd]# ls
[root@ha-0001 csd]# cp /data/install/spark2.3/SPARK2_ON_YARN-2.3.0.cloudera4.jar ./

将其余三个文件拷贝到/opt/cloudera/parcel-repo下面,并将SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha1重命名为
SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha
这里注意要将之前/opt/cloudera/parcel-repo下的manifest.json重命名为其它,复制新的。其它安装包可不用删除

[root@ha-0001 parcel-repo]# cp /data/install/spark2.3/SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha1 ./
[root@ha-0001 parcel-repo]# cp /data/install/spark2.3/SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel ./
[root@ha-0001 parcel-repo]# cp /data/install/spark2.3/manifest.json ./
[root@ha-0001 parcel-repo]# mv SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha1 SPARK2-2.3.0.cloudera4-1.cdh5.13.3.p0.611179-el7.parcel.sha

重启主机点上的cloudera-scm-server

[root@ha-0001 opt]# cm-5.13.3/etc/init.d/cloudera-scm-server restart
Stopping cloudera-scm-server:                              [  OK  ]
Starting cloudera-scm-server:                              [  OK  ]

登陆CM web端,选在parcels
CDH5.13.3部署并升级Spark2.x_第19张图片
进去之后选择远程会出现spark包显示已下载,点击分配激活即可(忘截图)
然后回到cluster选择add service选择Spark2然后一步步完成spark2服务的添加
CDH5.13.3部署并升级Spark2.x_第20张图片
CDH5.13.3部署并升级Spark2.x_第21张图片
CDH5.13.3部署并升级Spark2.x_第22张图片
CDH5.13.3部署并升级Spark2.x_第23张图片
CDH5.13.3部署并升级Spark2.x_第24张图片
CDH5.13.3部署并升级Spark2.x_第25张图片
最好重启下依赖的服务即可

以上,欢迎指正!

你可能感兴趣的:(大数据,Linux,hadoop,spark,hdfs,cloudera,mapreduce)