CDH5.15搭建四之二(微播易公司搭建手册-基础部分)

1. 安装总概

1.1. 软件环境

本文将介绍Centos7.5(首先用cat /proc/version和getconf LONG_BIT) 离线安装CDH和Cloudera Manager过程,软件版本如下表1-1所示:
表1-1 软件版本选取

NO. 软件名称 版本
1 操作系统 Centos7.5 64 位
2 JDK jdk-8u171-linux-x64
3 Clouder Manager 5.15.0
4 CDH 5.15.0
5 数据库 Mysql 5.7

1.2. 配置规划

本次安装共7台服务器,服务器配置及用途如下表1-2所示:
表1-2 服务器基本规划配置

NO. 机器名称 内网IP 核/内存/硬盘 用途
1 prd-pg-cdh-mysql_slave-195 192.168.1.195 2C/4G/500GB Mysql备份
2 prd-pg-cdh-mysql_master-194 192.168.1.194 8C/32G/500GB CM,Mysql主
3 prd-pg-cdh-scm-115 192.168.1.115 8C/32G/4TB AG,Cluster-M
4 prd-pg-cdh-node-190 192.168.1.190 40C/64G/32TB AG,Cluster-N
5 prd-pg-cdh-node-191 192.168.1.191 40C/64G/32TB AG,Cluster-N
6 prd-pg-cdh-node-192 192.168.1.192 40C/64G/32TB AG,Cluster-N
7 prd-pg-cdh-node-193 192.168.1.193 40C/64G/32TB AG,Cluster-N

1.3. CheckList

本部分是讲述,安装过程的checklist,也就是安装步骤总览,如表1-3所示:

类别 项目 当前进度
资源 校核操作系统 Centos7.5 64 位
资源 资源下载 Jdk+cm+cdh
Linux Hostname-Hosts 互ping
Linux Net-tools 能够使用ifconfig和netstat
Linux 防火墙,selinux 关闭成功
Linux NTP对时 全主时间硬件更新
Linux SSH免密 SSH两两(包含127)
Linux Swappiness小于10 修改成功
Linux 文件句柄改大 修改成功
Linux 透明大页面关闭 修改成功
Soft 依赖包 安装成功
Soft Jdk 安装成功
Soft MySQL root#root, navicat连接成功
CM-资源 JDBC,CM,CDH 移到/data/cdh
CM-资源 解压,传包 包含Mysql-jar
CM-安装 Linux用户创建 完成
CM-安装 CDH-数据库初始化 Navicat查看
CM-安装 Parcel目录 主从完成
CM-安装 配置 修改config.ini
CDH-基本 基本组件(包含kudu) 安装完成
散件 Pig,hive 独立运行成功
各组件调配 各组件 满足需求

2. 基础环境

2.1. 所需要的软件资源

2.1.1. JDK环境:

JDK版本:jdk-8u171-linux-x64
jdk-8u171-linux-x64.rpm
下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
scala环境:
scala-2.11.8.rpm
下载地址:
https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.rpm

2.1.2. CM包:

CM版本:5.15.0
cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
下载地址:
http://archive-primary.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz

2.1.3. CDH包

CDH版本:5.15.0,
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
manifest.json
下载地址:
http://archive-primary.cloudera.com/cdh5/parcels/5.15.0/ /manifest.json
http://archive-primary.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
http://archive-primary.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1

2.1.4. JDBC连接jar包:

jar包版本:5.1.43,
mysql-connector-java-5.1.43.jar
下载地址:
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar
下载Mysql JDBC包:
wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar
2.2. 修改机器名(所有节点)
2.2.1. 修改机器名称

hostnamectl set-hostname prd-pg-cdh-mysql-master-194 //设置机器名
hostname // 查看本机名

这种方式,在Centos7中可以永久性改变主机名称。
2.2.2. 每个节点机器,都要配置hosts
vim /etc/hosts
内容都改为:

127.0.0.1 localhost //建议保留此行
192.168.1.194 prd-pg-cdh-mysql-master-194
192.168.1.195 prd-pg-cdh-mysql-slave-195
192.168.1.115 prd-pg-cdh-scm-115
192.168.1.190 prd-pg-cdh-node-190
192.168.1.191 prd-pg-cdh-node-191
192.168.1.192 prd-pg-cdh-node-192
192.168.1.193 prd-pg-cdh-node-193

2.3. 设置防火墙(所有节点)

注:为了简便,可以先关闭防所有节点火墙,安装完成后,再按照下面步骤设置。
防火墙常用命令:

firewall-cmd –state(查询防火墙状态)
systemctl stop firewalld.service (关闭防火墙)
systemctl start firewalld.service (开启防火墙)
systemctl disable firewalld.service (禁止firewall开机启动)
//设置防火墙策略,在所有节点执行下面脚本(执行前要启动防火墙):
//集群机器间可以相互访问
firewall-cmd –permanent –add-rich-rule=”rule family=’ipv4’ source address=’172.16.3.168’ port protocol=’tcp’ port=’0-65535’ accept”
firewall-cmd –permanent –add-rich-rule=”rule family=’ipv4’ source address=’172.16.3.169’ port protocol=’tcp’ port=’0-65535’ accept”
firewall-cmd –permanent –add-rich-rule=”rule family=’ipv4’ source address=’172.16.3.170’ port protocol=’tcp’ port=’0-65535’ accept”
firewall-cmd –permanent –add-rich-rule=”rule family=’ipv4’ source address=’172.16.3.171’ port protocol=’tcp’ port=’0-65535’ accept”
firewall-cmd –permanent –add-rich-rule=”rule family=’ipv4’ source address=’172.16.3.172’ port protocol=’tcp’ port=’0-65535’ accept”
//设置可以访问的端口
firewall-cmd –permanent –add-port=0-65535/tcp
firewall-cmd –reload

注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时开放所有端口是为了安装起来方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。

2.4. 配置免密码登录SSH(两两)

将子节点设置为从主节点ssh无密码登陆(主节点访问从节点需要无密码互通,否则后面会出现问题)
在主节点上执行:

cd~ //进入到 根目录
ssh-keygen -t rsa
cat id_rsa.pub >> ~/.ssh/authorized_keys

一路回车,生成无密码的密钥对。

把公钥的内容追加到authorized_keys文件末尾(这个文件也在隐藏文件夹.ssh下,如果没有可以新建,下图是115,190-193的密钥):
CDH5.15搭建四之二(微播易公司搭建手册-基础部分)_第1张图片
并设置authorized_keys的访问权限:

chmod 600 ~/.ssh/authorized_keys

测试:在190点上执行ssh 192,正常情况下,不需要密码就能直接登陆进去了。
在190节点出现下面表示成功登录192节点:
互相登陆以下(包括localhost和127.0.0.1),让.ssh/known_hosts有如下内容,这样ssh的时候没有yes提示。
CDH5.15搭建四之二(微播易公司搭建手册-基础部分)_第2张图片

2.5. 关闭SELINUX(所有节点)

关闭linux SELINUX安全内核

setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
vi /etc/selinux/config
内容增加:
SELINUX=disabled
重启后生效:
reboot
查看SELINUX 是否关闭:
sestatus
(在Centos7中遇到SELINUX无法关闭的问题,重新启动机器恢复正常)

2.6. 修改Linux内核参数(所有节点)

为避免安装过程中出现的异常问题,首先调整Linux内核参数。

2.6.1. 设置swappiness,控制换出运行时内存的相对权重,Cloudera 建议将 swappiness 设置为 10:

查看swappiness
cat /proc/sys/vm/swappiness
//永久性修改,执行下面两条命令
sysctl -w vm.swappiness=10
echo vm.swappiness = 10 >> /etc/sysctl.conf

2.6.2. 关闭透明大页面:

自CentOS6版本开始引入了Transparent Huge Pages(THP),从CentOS7版本开始,该特性默认就会启用。尽管THP的本意是为提升内存的性能,不过某些数据库厂商还是建议直接关闭THP,否则可能会导致性能出现下降。
首先查看透明大页是否启用,[always] never表示已启用,always [never]表示已禁用:

cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

以上状态就说明是启用的。

临时关闭(重启机器会变回默认开启状态):
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
永久关闭:
//编辑/etc/rc.d/rc.local
vim /etc/rc.d/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
保存退出,然后赋予rc.local文件执行权限:
chmod +x /etc/rc.d/rc.local
重启系统,以后再检查THP状态,显示状态被禁用了。

2.6.3. 修改文件句柄数:

注意:修改limits.conf这类限制资源使用的文件,一定要备份配置文件,并进行测试,最好能多开一个终端,在当前终端不可使用的时候,用来执行补救措施。否则可能所有远程连不上,就要去机房了。

//查看文件句柄数,显示1024,显然太小
ulimit -n
1024
//修改系统文件句柄数限制
vim /etc/security/limits.conf
//在文件后加入下面内容:
* soft nofile 100000
* hard nofile 100000
修改后需要重启机器。

2.7. 配置NTP服务

注意:(如果使用kudu,确保服务开启,而不是一主三从)
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体建设过程如下:

2.7.1. 所有节点安装相关组件:

yum install ntp ntpdate -y
编辑 /etc/ntp.conf:
vi /etc/ntp.conf
//在文件中输入上面网页内容:1.5是内部ntp服务器
server 192.168.1.5
然后在命令行执行
ntpdate 192.168.1.5 && /sbin/hwclock -w

2.7.2. 启动ntp服务(主节点):

systemctl start ntpd

2.7.3. 配置开机启动:

systemctl enable ntpd.service
注意:如果ntpd 开机启动失效,有可能是因为安装了chronyd 并且是开机自启状态,所以导致ntpd开机自启失败。
查看 chronyd设置状态
systemctl status chronyd
显示如下:
以面表明,chronyd显示为开机启动状态。
将chronyd设为禁用状态:
systemctl disable chronyd.service
此时,NTP的服务开机自启动完成!
检查是否设置成功:
关于设置参考:https://www.jianshu.com/p/fb32239ccf2b
ntpq -p
//更新时间
timedatectl set-timezone Asia/Shanghai
timedatectl set-ntp yes
hwclock –systohc
timedatectl && /sbin/hwclock -w
CDH5.15搭建四之二(微播易公司搭建手册-基础部分)_第3张图片

2.8. 安装依赖包(所有)

yum install -y chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb mod_ssl unzip
注意这里加了一个mod_ssl用来解决hue问题,unzip是livy解压用的。
yum -y install lrzsz #为了上传下载方便,安装这个软件

2.9. 安装oracle JDK1.8 (所有节点)

下载rpm 安装包jdk-8u171-linux-x64.rpm 
CentOS系统一般自带OpenJdk,需要卸载掉自带的OpenJdk,使用
 rpm -qa | grep java
查询java相关的包,使用
 rpm -e –nodeps +包名
强制卸载掉,下面安装oralce JDK
rpm -ivh jdk-8u171-linux-x64.rpm #jdk
rpm -ivh scala-2.11.8.rpm  #scala
scp 192.168.1.193:/opt/scala-2.11.8.rpm ./ && rpm -ivh scala-2.11.8.rpm && rm -f  scala-2.11.8.rpm
配置JAVA_HOME环境变量:
修改/etc/profile文件配置环境变量,  执行命令:
vi /etc/profile   
在profile文件最后,输入下面内容,保存并退出。
export JAVA_HOME=/usr/java/ jdk1.8.0_171-amd64
export PATH=$PATH:$JAVA_HOME/bin 
或者使用:
echo "export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64">>/etc/profile
echo "export PATH=\$PATH:\$JAVA_HOME/bin">>/etc/profile
执行下面命令,让配置生效
source /etc/profile   //使修改立即生效
echo $PATH   //查看PATH值
echo $JAVA_HOME   //查看JAVA_HOME值
在Centos7中修改/etc/profile文件配置环境变量,机器启动后有时不生效,可以修改/etc/ bashrc文件配置环境变量:
echo "export JAVA_HOME=/usr/java/jdk1.8.0_171-amd64">>/etc/bashrc
echo "export PATH=\$PATH:\$JAVA_HOME/bin">>/etc/bashrc
source /etc/bashrc

vi /etc/bashrc 
//在文件最后加入:
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin 
//使修改立即生效
source /etc/bashrc 
//查看JAVA_HOME值
echo $JAVA_HOME 

2.10. Mysql安装(主备节点)

2.10.1. 所有节点

到官网https://dev.mysql.com/downloads/file/?id=469456选择对应安装包:

1) 下载安装包
wget https://cdn.mysql.com//archives/mysql-5.7/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar
2) 解压安装包
tar -xvf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar

解压后文件列表:

mysql-community-embedded-devel-5.7.18-1.el7.x86_64.rpm
mysql-community-devel-5.7.18-1.el7.x86_64.rpm
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-embedded-5.7.18-1.el7.x86_64.rpm
mysql-community-embedded-compat-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-server-minimal-5.7.18-1.el7.x86_64.rpm
mysql-community-test-5.7.18-1.el7.x86_64.rpm
mysql-community-minimal-debuginfo-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm

3) 按次序安装

按common–>libs–>client–>server的顺序安装:
rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.18-1.el7.x86_64.rpm
//安装下面包,否则Hue安装报连接错误
rpm -ivh mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm

4) 启动数据库

systemctl start mysqld

查看状态:

systemctl status mysqld

5) 修改MySQL初始密码
1、先修改配置文件/etc/my.cnf令MySQL跳过登录时的权限检验,在[mysqld]下加入一行:

skip-grant-tables

2、重启MySQL

systemctl restart mysqld

3、免密码登录MySQL。

mysql

4、mysql客户端执行如下命令,修改root密码

mysql> use mysql;
mysql> UPDATE user SET authentication_string = password(‘root’) WHERE host = ‘localhost’ AND user = ‘root’;
mysql> select host,user, authentication_string, password_expired from user;
mysql> update user set password_expired=’N’ where password_expired=’Y’ //密码不过期
mysql> update user set host=’%’ where user=’root’ and host=’localhost’; //远程可访问
mysql> flush privileges; //刷新
mysql> exit;//退出

5、修改配置文件/etc/my.cnf删除此前新增那一行skip-grant-tables,并重启MySQL(这一步非常重要,不执行可能导致严重的安全问题)

systemctl restart mysqld

2.10.2. 主备节点

主备复制是mysql在3.23版本以后才提供的功能,原理如下:
1 首先,Mysql主库在事务提交时会把数据变更作为事件Events记录在二进制日志文件Binlog中;MYSQL主库上的sync_binlog参数控制Binlog日志刷新到磁盘。
2 主库推送二进制日志文件binlog中的事件到从库的中继日志relay log,之后从库根据中继日志重做数据变更操作,通过逻辑复制以此来达到主从数据一致。
这里涉及3个线程:主库上的Binlog Dump;从库上的I/O和SQL。
主备脚本如下:
准备两个机器:一台为主master、一台为备salve
第一步:主服务器(matser)配置如下:

vim /etc/my.cnf
server –id(主从机器的server-id要不一样)
log-bin=mysql-bin ###打开注释
/etc/init.d/mysqld restart
mysql -uroot -proot -e “show variables like ‘log_bin’;” ####判断是否打开
mysql -uroot -proot
mysql>grant replication slave on . to ‘rep’@’192.168.1.195’ identified by ‘waQ,qR%be2(5’;
mysql>flush privileges;
mysql>flush table with read lock;
mysql>show master status;
+——————+———–+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+——————+———–+————–+——————+
| mysql-bin.000109 | 592 | | |
+——————+———–+————–+——————+
mysqldump -uroot -proot -A -B –events –master-data=2 |gzip >/data0/backup.sql.gz
unlock tables;
scp -P22678 /data0/backup.sql.gz [email protected]:/data0/

————

从服务器(matser)配置如下:

gunzip < /data0/backup.sql.gz | mysql -uroot -proot
mysql -uroot -ph47Ny0GR3A
change master to
master_host=’192.168.1.194’,
master_port=3306,
master_user=’rep’,
master_password=’waQ,qR%be2(5’,
master_log_file=’mysql-bin.000002’,
master_log_pos=592;
start slave;
show slave status\G;

3. 安装CM

3.1. 传包,解包(所有)

在主节点上下载相关软件包,这里将软件包下载到/data/ cdh/目录下。

cd /data/cdh

下载Mysql JDBC包:

wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.43/mysql-connector-java-5.1.43.jar

CM,CDH移到/data/cdh
拷贝两个jar到所有Server、Agent节点

scp /data/cdh/mysql-connector-java-5.1.43.jar [email protected]:/data/cdh
scp /data/cdh/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz [email protected]:/data/cdh

在所有节点将CM解压到/opt/目录:

tar -zxvf /data/cdh/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz -C /opt2/
ls /opt/
cloudera cm-5.15.0

3.2. 创建用户(所有)

在所有节点上执行:

useradd –system –home=/opt/cm-5.15.0/run/cloudera-scm-server –no-create-home –shell=/bin/false –comment “Cloudera SCM User” cloudera-scm

3.3. 拷贝mysql-jar包(主从)

在所有节点上:
//如果没有/usr/share/java/目录,则创建
cp /data/cdh/mysql-connector-java-5.1.43.jar /usr/share/java/mysql-connector-java.jar
在主节点上:
//将mysql JDBC jar 包拷贝到 /opt/cm-5.15.0/share/cmf/lib/ 目录
cp /data/cdh/mysql-connector-java-5.1.43.jar /opt/cm-5.15.0/share/cmf/lib/

3.4. 创建数据库(主节点)

在主节点上:

mysql -h127.0.0.1 -uroot -p //加参数-h127.0.0.1 指定本机方式,否则可能不允许执行grant
Enter password: \输入数据库密码
//在MariaDB [(none)]>命令状态输入下面脚本:
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database monitor DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
grant all privileges on . to root@localhost identified by ‘root’ with grant option;
grant all on . to root@”%” Identified by “root”;
flush privileges;
exit;
//初始化CM,执行下面脚本
/opt/cm-5.15.0/share/cmf/schema/scm_prepare_database.sh mysql -h prd-pg-cdh-mysql-master-194 -uroot -proot –scm-host prd-pg-cdh-mysql-master-194 scm scm scm
(对应于:数据库类型、数据库服务器、用户名、密码、CMServer所在节点…….)
注意:上面的指令是数据库服务器在194,cm在115的指令
//如果出现下面错误:
java.sql.SQLException: Access denied for user ‘root’@’localhost’ (using password: YES)
//解决办法:
在/etc/hosts 文件中,加上
127.0.0.1 localhost.prd-pg-cdh-scm-115
脚本/scm_prepare_database.sh 执行成功界面:
如下是正确结果
CDH5.15搭建四之二(微播易公司搭建手册-基础部分)_第4张图片

3.5. 制作本地Parcel目录(主从)

Manager节点

创建目录/opt/cloudera/parcel-repo,执行:
mkdir -p /opt/cloudera/parcel-repo
chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo
//进入软件包目录
cd /data/cdh
//拷贝三个文件到/opt/cloudera/parcel-repo/目录
cp CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 manifest.json /opt/cloudera/parcel-repo/
//进入/opt/cloudera/parcel-repo/目录
cd /opt/cloudera/parcel-repo/
//修改文件名
mv CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1 CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha

Agent节点

Agent节点创建目录/opt/cloudera/parcels,执行:
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

3.6. 修改cloudera-scm-agent配置(所有)

修改/opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini文件:
//将config.ini server_host=localhost 内容改为server_host=192.168.1.194
sed -i “s/server_host=localhost/server_host=192.168.1.194/” /opt/cm-5.15.0/etc/cloudera-scm-agent/config.ini

3.7. 启动CM Server和Agent(主从)

在主节点上,启动cloudera-scm-server:

/opt/cm-5.15.0/etc/init.d/cloudera-scm-server start

启动过程较慢,可通过/opt/cm-5.15.0/log/cloudera-scm-server日志,查看启动过程。
在所有节点上,启动cloudera-scm-agent:

/opt/cm-5.15.0/etc/init.d/cloudera-scm-agent start

3.8. 访问CM

地址:http://主节点IP:7180
用户名、密码:admin

CDH5.15搭建四之二(微播易公司搭建手册-基础部分)_第5张图片

好了,文章分节上传如下:亲测可用,如果有问题,联系18192015917(叫我:涵哥,白哥,帅哥。。都行)

之一:概要

之二:基础

之三:组件

之四:踩坑

你可能感兴趣的:(CDH)