一. 服务器准备
我这里是本地虚拟机搭建,共四台服务器主机,cdp01是管理节点,cdp01,02和03是数据节点.mysql是数据库节点.也可以把mysql节点放在集群内部,由于我这里搭建了c5和c7两个版本的集群,为了不重复搭建mysql就单独搭了一个mysql服务器,后面准备研究以下如何用docker来搭建集群.毕竟笔记本资源有限.
服务器配置分别如下:
主节点cdp01:
192.168.127.121
这里虽然克隆之后增加了磁盘空间到100g,但是有50g空间是未分配的,在另一篇文章里进行根目录扩容说明.
从节点cdp02,cdp03:
192.168.127.122
192.168.127.123
mariaDB服务器(单节点):
192.168.127.188
二. 预配置
由于我是从初始化好的虚拟机中克隆的cdp服务器,有一些配置是提前配置好的,比如静态ip和网络配置等.以下操作在此基础之上进行记录.
本次搭建过程是可以连接外网的环境,一般公司环境没有外网需自行配置公司内部yum源仓库
我这里配置的是网易的yum仓库,可以下载网易或者阿里云的镜像文件进行配置
这里可以先准备以下后面会用到的一些脚本和安装集群需要用到的安装包.放一台机器即可,我这里是放在cdp01的/soft目录下.
cdp01主机上创建一个文件夹用于存放脚本和安装包,上传安装包和脚本.
mkdir /soft
1. 配置ip和hostname
配置ip
# 这里修改自己的网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改好ip后,保存退出.重启网络服务
systemctl restart network
重启好之后可以用xshell远程连接进行后续操作.
配置主机名
hostnamectl set-hostname cdp01
hostnamectl set-hostname cdp02
hostnamectl set-hostname cdp03
然后修改hosts文件
vim /etc/hosts
分发hosts文件,在myshell文件夹下执行
./batch_scp.sh node.list /etc/hosts /etc/
2. 安装jdk(3台)
2.1 解压tar包
# 1. 创建文件夹
mkdir /usr/java
# 2. 解压tar包至1中创建的文件夹
tar -zxvf /soft/jdk-8u141-linux-x64.tar.gz -C /usr/java/
2.2 配置环境变量
# 1. 添加环境变量
vim /etc/profile
# 2. 在文件末尾添加以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_141/
export PATH=$JAVA_HOME/bin:$PATH
# 3. 生效配置文件
source /etc/profile
验证结果如下:
2.3 更换jar包,避免在后面配置kerberos认证时报错(不配置kerberos可以忽略此步骤)
在/soft目录下执行
cp local_policy.jar US_export_policy.jar /usr/java/jdk1.8.0_141/jre/lib/security/
注意:安装完java之后,要替换/usr/java/jdk1.8.0_131/jre/lib/security目录下的local_policy.jar和US_export_policy.jar,主要是解决再后面安装kerberos的时候报如下的错误:
GSSException: Failure unspecified at GSS-API level (Mechanism level: Encryption type AES256
CTS mode with HMAC SHA1-96 is not supported/enabled)
2.4 分发文件夹,并配置环境变量
cdp01上执行分发命令
scp /usr/java root@cdp02:/usr/
按照提示输入yes和root用户密码,可以看到拷贝过程如下
cdp02,cdp03配置环境变量,并生效配置
./batch_scp.sh node.list /etc/profile /etc/
# 生效配置文件
source /etc/profile
3. 关闭selinux(3台)
selinux是一种安全子系统,它能控制程序值访问特定的文件,使用selinux可能会导致安装失败,这里将所有节点的selinux关闭即可.
vim /etc/selinux/config
SELINUX=disabled
保存退出
改完后分发配置文件
4. 关闭防火墙(3台)
先检查以下防火墙状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
# 并关闭防火墙开机自启
systemctl disable firewalld
5. 调整linux系统参数
5.1 关闭交换空间
这里设置swappiness=1,最大限度的使用物理内存,尽量不使用交换空间
echo 1 > /proc/sys/vm/swappiness
echo "vm.swappiness=1" >> /etc/sysctl.conf
echo "echo 1 > /proc/sys/vm/swappiness" >> /etc/rc.d/rc.local
cat /proc/sys/vm/swappiness
如果是现有集群需要关闭交换空间,则按以下步骤操作:
-
echo 0 > /proc/sys/vm/swappiness
-
查看交换分区信息swapon -s
-
关闭交换空间swapoff 第二步中查询的交换分区
注意:在centos6中swappiness=0表示尽量不使用交换分区,centos7中swappiness=0表示禁用交换分区,如果完全禁用交换分区,可能会引起内存溢出的问题,在centos7中可以将该值设置为1
5.2 禁用透明大页面
透明大页面可能会带来cpu占用率过高的问题。将这个参数设置为never,为了保证重启生效,要把命令写到/etc/rc.d/rc.local中。
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.d/rc.local
echo "echo never > /sys/kernel/mm/transparent_hugepage/defrag" >> /etc/rc.d/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
5.3 修改LINUX最大文件数句柄(LINUX默认是1024)
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
6. 配置时间同步
在所有安装CDH集群的设备中需要统一设置时间同步服务,这里选择将三台主机中的其中一台主机作为NTP时间同步服务器,对nta001进行ntp服务器配置,其他服务器来同步这台服务器的时钟
6.1 安装ntp服务
yum install ntp -y
6.2 配置主服务器(cdp01)
vim /etc/ntp.conf
#删除默认配置并添加以下内容:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
6.3 配置从服务器(cdp02,cdp03)
vim /etc/ntp.conf
# 删除默认配置并添加以下内容
server cdp01 iburst
6.4 开启时间同步服务,设置开机启动(3台)
service ntpd start或者systemctl start ntpd.service
chkconfig ntpd on或者systemctl enable ntpd.service
# 查看服务状态
systemctl status ntpd.service
6.5 验证时间同步(3台)
查看时间同步状态
ntpq -p
cdp01:
cdp02:
cdp03:
7. 安装http服务(3台)
安装httpd服务
yum install httpd -y
开启httpd服务
systemctl start httpd.service
开机自动启动httpd服务
chkconfig httpd on
三. mysql安装和建库
1. 安装mysql
rpm安装包方式安装
tar -zxvf MySQL-5.7.23-1.el7.x86_64.rpm-bundle.tar -C /opt/software/mysql/
cd /opt/software/mysql/
chmod u+x *.rpm
# 安装Mysql-shared-compat替换系统自带的mysql-libs
rpm -qa | grep -I mysql
rpm -ivh MySQL-shared-compat-5.7.23-1.el7.x86_64.rpm
yum remove mysql-libs
rpm -ivh MySQL-server-compat-5.7.23-1.el7.x86_64.rpm
rpm -ivh MySQL-client-compat-5.7.23-1.el7.x86_64.rpm
安装完要进行基础配置,改密码,设置远程登陆等等...
我这里是在192.168.127.188服务器上提前安装好了mariadb, 这里就不作详细说明了, 安装教程网上很多, 另外一般企业中配置mysql主主同步, 提升MySQL可用性
2. 拷贝驱动
# 创建文件夹:(3台)
mkdir -p /usr/share/java
# 拷贝驱动jar包(cdp01)
cp /soft/mysql-connector-java-5.1.38.jar /usr/share/java/
cd /soft/myshell
./batch_scp.sh node.list /usr/share/java /usr/share/
# 创建软连接(3台)
cd /usr/share/java
ln -s mysql-connector-java-5.1.38.jar mysql-connector-java.jar
注意:如果不是创建软连接,用mv命令改名去掉版本号的方式要记得给驱动包添加可执行权限。
3. 创建搭建集群需要的用户和数据库
create database cdp7metastore default character set utf8;
CREATE USER 'hive'@'%' IDENTIFIED BY 'hive@2021';
GRANT ALL PRIVILEGES ON cdp7metastore.* TO 'hive'@'%';
create database cdp7cm default character set utf8;
CREATE USER 'cm'@'%' IDENTIFIED BY 'cm@2021';
GRANT ALL PRIVILEGES ON cdp7cm.* TO 'cm'@'%';
create database cdp7am default character set utf8;
CREATE USER 'am'@'%' IDENTIFIED BY 'am@2021';
GRANT ALL PRIVILEGES ON cdp7am.* TO 'am'@'%';
create database cdp7rm default character set utf8;
CREATE USER 'rm'@'%' IDENTIFIED BY 'rm@2021';
GRANT ALL PRIVILEGES ON cdp7rm.* TO 'rm'@'%';
create database cdp7hue default character set utf8;
CREATE USER 'hue'@'%' IDENTIFIED BY 'hue@2021';
GRANT ALL PRIVILEGES ON cdp7hue.* TO 'hue'@'%';
create database cdp7oozie default character set utf8;
CREATE USER 'oozie'@'%' IDENTIFIED BY 'oozie@2021';
GRANT ALL PRIVILEGES ON cdp7oozie.* TO 'oozie'@'%';
create database cdp7sentry default character set utf8;
CREATE USER 'sentry'@'%' IDENTIFIED BY 'sentry@2021';
GRANT ALL PRIVILEGES ON cdp7sentry.* TO 'sentry'@'%';
create database cdp7nas default character set utf8;
CREATE USER 'nas'@'%' IDENTIFIED BY 'nas@2021';
GRANT ALL PRIVILEGES ON cdp7nas.* TO 'nas'@'%';
create database cdp7nms default character set utf8;
CREATE USER 'nms'@'%' IDENTIFIED BY 'nms@2021';
GRANT ALL PRIVILEGES ON cdp7nms.* TO 'nms'@'%';
flush privileges;
创建好数据库后,赋完权限要记得刷新权限
四. 安装CM
1. 配置本地yum源(cdp01)
下载所需的安装包,配置本地的yum源,这样在后面安装集群时就不用去互联网下载,可以节省很多时间,步骤如下:
1.1 下载所需的软件包
1.2 将下载的安装包移动到/var/www/html/cm7.1.4/
mkdir -p /var/www/html/cm7.1.4
cp /soft/cloudera-* /soft/allkeys.asc /var/www/html/cm7.1.4/
1.3 安装createrepo
yum install createrepo
1.4 创建repo
cd /var/www/html/cm7.1.4
createrepo .
1.5 配置本地yum源
cd /etc/yum.repos.d
vim cm.repo
输入以下内容:
[cm]
name=cm,Version 7.1.4
baseurl=http://192.168.127.121/cm7.1.4/
enable=1
gpgcheck=0
然后保存退出。
执行以下命令:
yum clean all
yum makecache
yum list |grep cloudera
可以看到以下内容:
1.5 验证配置结果
浏览器访问 http://192.168.127.121/cm7.1.4 , 可以看到以下界面
1.6 相同的方式配置cdh的本地yum源
浏览器访问 http://192.168.127.121/cdh7.1.4 , 可以看到以下界面
1.7 分发到其他节点
在cdp01上配置好本地yum仓库之后,将repo文件分发到其他节点
# 1. 切换到分发脚本的目录
cd /soft/myshell/
# 2. 分发cm.repo
./batch_scp.sh node.list /etc/yum.repos.d/cm.repo /etc/yum.repos.d/
# 3. 分发cdh.repo
./batch_scp.sh node.list /etc/yum.repos.d/cdh.repo /etc/yum.repos.d/
分发后看其他节点能否访问,看到以下界面说明们问题了:
2. 安装cm server(cdp01)
在cdp01上安装cloudera-scm-server.service
yum install cloudera-manager-server -y
# 安装完后可以查看服务状态
systemctl status cloudera-scm-server
3. 初始化mysql
配置好cm之后,进行初始化cm元数据库
cd /opt/cloudera/cm/schema/
# 我这里直接用root用户进行数据库初始化,也可以用前面创建的cm用户
./scm_prepare_database.sh mysql -h 192.168.127.188 cdp7cm root root
注意:
在c7中,不需要提前创建cm数据库,我这里提前创建之后在初始化时报错了,说数据库已存在,根据提示删掉对应数据库后初始化成功.
初始化数据库时需要注意,本次mysql不在集群主机内部,如果是在本机的mysql,则可以不用指定-h参数,默认就是localhost,后面的--scm-host参数是指定cmserver所在的主机
执行上面命令后,如果出现以下内容,即说明初始化成功
进行到这一步之后,我这里拍了快照,因为c7没有免费版本,只有60天试用版的,为了以后试用过期后能迅速搭建cdp集群,所以拍摄了快照,重新搭建时,恢复快照,删除数据库,并重新初始化cm数据库即可
五. 安装CDH
1. 启动cmserver,查看日志
启动cm server
systemctl start cloudera-scm-server
systemctl status cloudera-scm-server
查看cm server日志
tail -100f /var/log/cloudera-scm-server/cloudera-scm-server.log
看到以下内容说明cm server启动成功:
2. 登陆cm界面
cm server启动成功后就可以访问cm界面了,地址是 http://cdp01:7180
输入初始账号密码 admin/admin 即可登陆.
登陆后选择试用版
3. 安装agent
进入集群安装欢迎界面,提示安装kerberos,我们后面自己进行手动搭建,所以这里直接下一步
设置集群名称,执行下一步
搜索主机,选中主机,执行下一步
选择自定义存储库和parcel版本
在选择parcel存储库时,可将默认的库删掉,并填上我们自己的库,保存退出后,执行下一步
选择手动管理jdk,执行下一步
输入root用户密码,这里需要注意集群中的所有主机必须保证root用户密码都是一样的,填好后,执行下一步
自动安装 cm agent服务,安装完成后执行下一步
可以点击详细信息查看agent安装过程
agent安装完成
4. 分发激活parcel安装包
下面是下载,分发和激活parcel的过程,时间会有点长,可以去日志中看看是不是用的本地的仓库进行下载的.
在cm server日志中可以看到是在我们配置的仓库下载parcel包
完成激活后如下如所示:
检查主机状况
5. 安装服务
选择自定义安装
我这里选择了以下这些组件
设置数据库
我这里就安装一些常用组件以供自己在后面进行开发学习使用.
安装过程在界面点一点就好了不做详细说明,下面是我安装好服务之后的集群状态.
组件服务如下图:
角色分配如下图:
组件版本如下图:
搭建完之后发现50g磁盘有点不够用,建议可以分100g给/root目录.至此集群安装就以完成,后面再补充集群高可用配置,和集成kerberos认证的过程.