一、准备工作
-
安装jdk
-
修改host文件并且主机之间配置SSH连接
-
所有节点创建 /data01 目录
-
主节点 /data01 放入以下4个文件
cloudera-manager-centos7-cm5.7.2_x86_64.tar
CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha
CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel
manifest.json -
所有从节点 /data01 放入 cloudera-manager-centos7-cm5.7.2_x86_64.tar 文件
二、关闭防火墙
所有节点 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/sysconfig/selinux
cat /etc/selinux/config|grep SELINUX=
如果cat /etc/selinux/config|grep SELINUX=最下面行显示为:SELINUX=disabled 说明Selinux禁用成功
三、设置时区与集群时间同步
timedatectl set-timezone "Asia/Shanghai"
所有节点 安装ntp服务
yum -y install ntp
所有节点 备份原始配置文件
cp /etc/ntp.conf /etc/ntp.conf.bak
修改 主节点 配置文件
vim /etc/ntp.conf
将其他server都注释掉,加入以下语句
server 127.127.1.1
在 主节点 上启动ntp服务
systemctl restart ntpd
systemctl enable ntpd
在 其他节点 上和主节点同步时间,并开启ntp服务
ntpdate kinhood00
systemctl start ntpd
修改 其他节点 上的配置文件
vim /etc/ntp.conf
加入以下语句,让其他节点与主节点同步时间
server 10.110.200.155
更改完毕之后重启 其他节点 ntp服务
systemctl restart ntpd
systemctl enable ntpd
四、排除CDH集群性能影响因素
以下操作针对于 所有节点
-
关闭THP
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
-
修改swappiness
echo "vm.swappiness=0" >> /etc/sysctl.conf sysctl -p #让配置生效 cat /proc/sys/vm/swappiness
五、安装MariaDB
在 主节点 上安装MariaDB,执行以下命令。(凡是涉及数据库的操作,未经说明都是在 主节点 上进行)
yum -y install mariadb-server mariadb
systemctl start mariadb.service
systemctl enable mariadb.service
进入数据库设置root用户的登录权限 mysql -uroot -p (第一次登录没有密码)
use mysql;
update user set password=password( '123456' ) where user= 'root' ;
grant all privileges on *.* to root@'%' identified by '123456';
grant all privileges on *.* to root@'kinhood00' identified by '123456';
grant all privileges on *.* to root@'localhost' identified by '123456';
FLUSH PRIVILEGES;
修改 mariadb 数据目录
##先停掉进程(服务)
systemctl stop mariadb.service
##复制原来的配置到硬盘(挂载在/data01)
cp -r /var/lib/mysql/ /data01/
##备份原来的配置
mv /var/lib/mysql/ /var/lib/mysql.bak/
##修改硬盘中配置文件夹的权限
chown -R mysql:mysql /data01/mysql
##创建软链接
ln -s /data01/mysql/ /var/lib/mysql
##重启mariadb
systemctl restart mariadb
设置数据库编码
# 备份配置文件
cp /etc/my.cnf /etc/my.cnf.bak
# 修改配置文件
vim /etc/my.cnf
在 [mysqld] 下加入
character_set_server = utf8
重启数据库
systemctl restart mariadb
重新登录数据库,查看编码是否设置成功
SHOW VARIABLES LIKE 'character%';
SHOW VARIABLES LIKE 'collation_%';
所有节点 安装同一版本的mysql-connector驱动
yum -y install mysql-connector-java
所有节点 安装其他依赖
yum -y install psmisc
yum -y install perl
yum -y install nfs-utils portmap
systemctl start rpcbind
systemctl enable rpcbind
登录mariadb创建 **hive **和 oozie 的数据库,执行以下sql
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;
CREATE USER 'hive'@'localhost' IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost';
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%';
CREATE USER 'hive'@'kinhood00'IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'kinhood00';
CREATE USER 'oozie'@'localhost' IDENTIFIED BY 'oozie';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'localhost';
CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'%';
CREATE USER 'oozie'@'kinhood00'IDENTIFIED BY 'oozie';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'kinhood00';
CREATE USER 'monitor'@'localhost' IDENTIFIED BY 'monitor';
GRANT ALL PRIVILEGES ON monitor.* TO 'monitor'@'localhost';
CREATE USER 'monitor'@'%' IDENTIFIED BY 'monitor';
GRANT ALL PRIVILEGES ON monitor.* TO 'monitor'@'%';
CREATE USER 'monitor'@'kinhood00'IDENTIFIED BY 'monitor';
GRANT ALL PRIVILEGES ON monitor.* TO 'monitor'@'kinhood00';
FLUSH PRIVILEGES;
六、安装CM
所有节点 进入 /data01 目录,并解压 cdh 安装包
cd /data01
tar -zxvf cloudera-manager-centos7-cm5.7.2_x86_64.tar.gz -C /opt/
所有节点 创建cloudera-scm用户授予sudo权限
useradd --system --home=/opt/cloudera-manager/cm-5.7.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
usermod -aG wheel cloudera-scm
所有节点 设置agent向server发送心跳
sed -i "s/^server_host=.*/server_host=kinhood00/g" /opt/cm-5.7.2/etc/cloudera-scm-agent/config.ini
然后确认是否修改成功,如果为server_port = kinhood00 则修改成功
cat /opt/cm-5.7.2/etc/cloudera-scm-agent/config.ini|grep server_host
主节点 设置数据库驱动
ln -s /usr/share/java/mysql-connector-java.jar /opt/cm-5.7.2/share/cmf/lib/mysql-connector-java.jar
主节点 创建文件夹
mkdir /var/cloudera-scm-server
chown -R cloudera-scm:cloudera-scm /var/cloudera-scm-server
chown -R cloudera-scm:cloudera-scm /opt/cloudera*
所有节点 创建文件夹
mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/*
主节点 从 /data01 下复制所有安装文件
cp /data01/CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel /opt/cloudera/parcel-repo/
cp /data01/CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha /opt/cloudera/parcel-repo/CDH-5.7.2-1.cdh5.7.2.p0.18-el7.parcel.sha
cp /data01/manifest.json /opt/cloudera/parcel-repo/
chown -R cloudera-scm:cloudera-scm /opt/cloudera*
ll /opt/cloudera/parcel-repo
所有节点 修改 CDH 在线安装过程中的报错脚本
vim /opt/cm-5.7.2/lib64/cmf/agent/build/env/lib/python2.7/site-packages/cmf-5.7.2-py2.7.egg/cmf/client_configs.py
# 442行开始(每台主机都修改):
for line in output.splitlines():
if line.startswith("/"):
if len(line.rstrip().split(" "))<=4:
path, _, _, priority_str = line.rstrip().split(" ")
# Ignore the alternative if it's not managed by CM.
if CM_MAGIC_PREFIX not in os.path.basename(path):
continue
try:
priority = int(priority_str)
except ValueError:
THROTTLED_LOG.info("Failed to parse %s: %s", name, line)
key = ClientConfigKey(name, path)
value = ClientConfigValue(priority, self._read_generation(path))
ret[key] = value
else:
pass
return ret
主节点 初始化数据库
/opt/cm-5.7.2/share/cmf/schema/scm_prepare_database.sh mysql -hkinhood00 -uroot -pSkycaster357 --scm-host kinhood00 scmdbn scmdbu scmdbp
如果出现 All done,your SCM database is configured correctly!表明以上步骤全部正确
主节点 上启动 CM server
/opt/cm-5.7.2/etc/init.d/cloudera-scm-server start
/opt/cm-5.7.2/etc/init.d/cloudera-scm-server status
所有节点 启动 cloudera-scm-agent
/opt/cm-5.7.2/etc/init.d/cloudera-scm-agent start
/opt/cm-5.7.2/etc/init.d/cloudera-scm-agent status
停止CM的命令,直接在 所有节点 上执行以下命令
/opt/cm-5.7.2/etc/init.d/cloudera-scm-agent stop
/opt/cm-5.7.2/etc/init.d/cloudera-scm-server stop
七、安装CDH和相关服务
-
通过kinhood00:7180 进入CDH在线安装界面,默认用户名和密码为 admin, admin
-
选择对应免费版本,如下图
-
为CDH集群安装指定主机,这里选择全部的主机。
-
选择本地Parcel进行安装。
-
然后等待主机分发 parcel 包并解压激活完成。
-
等待检查主机正确性,如有警告则按照说明去解决即可。
-
安装服务,这里我们选择自定义服务,包含HBase、HDFS、Yarn、Zookeeper,然后点击下一步。
-
分配集群角色,分配规则是
-
HMaster分配在内存多的两台主节点上,HBase其他服务分配到其他节点上。RegoinServer和DataNode保持一致。
-
NameNode分配在主节点上,SecondaryNameNode分配置其他节点,然后HDFS其他服务在其他节点分配,DataNode在所有主机上都分配。且DataNode起码得保证有三个节点。
-
Zookeeper在所有主机上都分配,且最好保持单数。
-
-
分配好角色之后点击下一步,配置DataNode和NameNode的数据目录。
DN为:/data01/dfs/dn,/data02/dfs/dn。
NN为:/data01/dfs/nn,/data02/dfs/nn。
-
配置完成后,CDH会自动开始安装服务,包括初始化的工作都是自动完成。如图表示安装成功:
-
大功告成。