[CDH]企业数据仓库数据管理平台CDH6.2.1离线安装记录
一、搭建之前的准备
1.安装包下载
1.1 cm6.2.1下载
https://archive.cloudera.com/cm6/6.2.1/redhat7/yum/RPMS/x86_64/
1.2 cdh6.2.1下载
https://archive.cloudera.com/cdh6/6.2.1/parcels/
如果不会下载json文件和sha1文件,建议使用wget命令下载,很方便!
1.3 mysql下载
https://dev.mysql.com/downloads/mysql/
1.4 jdk下载
历史版本:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
最新版本:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2 集群初步规划
2.1 服务器配置(centos7)
arturo.cdh.dn01 IP(10.0.10.1) 初步角色分配(cm,agent,nn) 内存6G 磁盘40G
arturo.cdh.dn02 IP(10.0.10.2) 初步角色分配(agent,datanode) 内存2G 磁盘30G
arturo.cdh.dn03 IP(10.0.10.3) 初步角色分配(agent,datanode) 内存2G 磁盘30G
arturo.cdh.dn04 IP(10.0.10.4) 初步角色分配(agent,datanode) 内存2G 磁盘30G
3 环境准备
3.1 修改主机名
hostnamectl set-hostname arturo.cdh.dn01
echo hostname=arturo.cdh.dn01 > /etc/sysconfig/network
其余节点参照修改
3.2 配置服务器hosts
vi /etc/hosts
arturo.cdh.dn01 10.0.10.1
arturo.cdh.dn02 10.0.10.2
arturo.cdh.dn03 10.0.10.3
arturo.cdh.dn04 10.0.10.4
3.3 关闭NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
3.4 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3.5 关闭selinux和设置swap交换空间使用
1) 关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
2) 设置禁止使用交换内存
echo 'vm.swappiness=0' >> /etc/sysctl.conf
sysctl -p
3) 查看密码文件是否上锁
lsattr /etc/passwd /etc/shadow
如果存在上锁的话需要解锁,安装完成后再重新上锁(一般数仓客户的服务器环境都需要解锁,装完上锁)
chattr -i /etc/passwd /etc/shadow #上锁命令
chattr +i /etc/passwd /etc/shadow #解锁命令
3.6 禁用透明大页面
1) 执行命令
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
chmod +x /etc/rc.d/rc.local
2) 设置开机自动关闭
echo "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 " >> /etc/rc.d/rc.local
3.7 搭建本地私服
1) 创建目录
mkdir /media/iso
将镜像文件挂在到iso目录下(这里的镜像文件需要调整为现场的文件)
mount -o loop -t iso9660 /media/CentOS-7-x86_64-DVD-1908.iso /media/iso/
备份或者直接删除原有的操作系统repo
mkdir -p /etc/yum.repos.d/bak
cd /etc/yum.repos.d/
mv *.repo bak
rm -rf *.repo
2) 创建新的操作系统repo
vi /etc/yum.repos.d/cdrom.repo
[cdrom]
name=isofile
baseurl=file:///media/iso
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
3) 清除yum缓存
yum clean all
从新加载yum缓存
yum makecache
配置httpd服务器,并且使用本地私服的镜像文件
1) 主节点安装httpd
yum -y install httpd
修改/etc/httpd/conf/httpd.conf配置⽂件,在<IfModulemime_module>中修改以下内容
vi /etc/httpd/conf/httpd.conf
AddType application/x-gzip .gz .tgz .parcel
启动 httpd 服务并设置开机自启动:
systemctl start httpd
systemctl enable httpd
2) 主节点复制镜像源文件到私服下:
cp -r /media/iso /var/www/html
删除服务器可能存在的原有repo文件,创建本地服务器repo
vi /etc/yum.repos.d/cdrom.repo
[cdrom]
name=isofile
baseurl=http://172.16.39.2/iso
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
3) 其他服务器删除可能存在的原有repo文件(所有节点执行)
rm -rf /etc/yum.repos.d/*.repo
分发主节点cdrom.repo到其他服务器/etc/yum.repos.d/目录(所有datanode节点执行)
scp -r /etc/yum.repos.d/cdrom.repo arturo.hdp.dn02:/etc/yum.repos.d/
4) 所有服务器执行重新加载yum源命令
yum clean all
yum makecache
3.8 配置ntp时间同步
主节点配置时钟主机
1) 修正主节点时间,输入 date 命令,查看时间是否是当前时间
修改时区的命令:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2) 修改时间为当前时间 date -s "2020-07-24 11:09:27"
修改其他机器时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3) 安装ntpd
yum -y install ntp
4) 增加配置:(配置本地同步 )
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
5) 注释不需要的 server (加#号注释)
#restrict 127.0.0.1
#restrict ::1
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
6) 给指定的客户机访问 ntp server 的权限(restrict 后面的 arturo.hdp.dn01就是我 们的 ip 的前三个数字) 删除#号修改即可。
restrict arturo.hdp.dn01 mask 255.255.255.0 nomodify notrap
(允许那些机器可以和我同步)
7) 启动 ntpd 服务,并且设置 ntpd 开机自启动
systemctl start ntpd
systemctl enable ntpd
其他节点配置与主机同步
其他机器作为 ntpd 客户端,分别其它机器上执行如下的命令来配置 ntpd:
vi /etc/ntp.conf
1) 增加配置:
server arturo.hdp.dn01
2)注释不需要的 server
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
3) 启动 ntpd 服务,并且设置 ntpd 开机自启动
systemctl start ntpd
systemctl enable ntpd
4) 查看时间同步进度
使用命令 ntpq -p 来查看时间同步进度(时间同步 cdh-master 需要大概 10 分钟左右才能同步好)
查看同步状态 ntpstat
查看和谁同步ntpq -p
如果时间越差的太多,可以采用
date -s "2020-07-24 13:30:00" 和ntpd -u arturo.hdp.dn01
手动来尽快同步。
3.9 设置主节点与其他节点的免密登录
在 arturo.hdp.dn01 节点上在 worker 节点启动相关的组件服务的时候需要无**的登陆 worker 节点,所以我们需要配置 ajxt.hdp.dn01 到 worker 节点无**登陆。
1)生成**
ssh-****** -t rsa
连续回车3下
2)将自己的公钥发给每一台机器,包括自己
ssh-copy-id arturo.hdp.dn01
ssh-copy-id arturo.hdp.dn02
ssh-copy-id arturo.hdp.dn03
ssh-copy-id arturo.hdp.dn04
3)分发完成过后,ssh hostname 不输入密码跳转成就可以了。
3.10 JDK的安装
1) 卸载CentOS自带的openJDK:
查看openJDK命令:rpm -qa|grep java
卸载openJDK相关
执行命令:rpm -e --nodeps 文件名
2) 在所有节点创建 JDK 目录:
mkdir -p /usr/java
将上传的 jdk1.8.0_212.tar.gz 解压至/usr/java 目录
cd /usr/java
tar -xvf jdk1.8.0_212.tar.gz
3) 将 JDK 复制到所有节点,在所有节点创建目录:
scp -r /usr/java/jdk1.8.0_212 arturo.hdp.dn01:/usr/java/
scp -r /usr/java/jdk1.8.0_212 arturo.hdp.dn02:/usr/java/
scp -r /usr/java/jdk1.8.0_212 arturo.hdp.dn03:/usr/java/
scp -r /usr/java/jdk1.8.0_212 arturo.hdp.dn04:/usr/java/
在所有节点执行创建 JDK 目录的软链接(CDH 默认识别/usr/java/default 目录)
ln -s /usr/java/jdk1.8.0_212 /usr/java/default
所有节点添加环境变量
vi /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_231
JRE_HOME=/usr/java/jdk1.8.0_231/jre
CLASS_PATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
退出保存/etc/profile,执行命令命令使环境变量生效
source /etc/profile
4) 执行查看版本命令,出现下面的界面则表示成功
java -version
PS:生产环境出现搭建JDK环境后,cloudera-manager-agent依然无法找到java_home的情况,所以需要用yum的方式安装或者选择不卸载系统自带的1.8 oracle版本的jdk,不会影响系统的运行,具体看情况再定 。
3.11 MySQL的安装
1)在arturo.hdp.dn01节点上安装Mysql,卸载已有的mysql
rpm -qa | grep mysql
rpm -e --nodeps【包名】
卸载CentOS自带的mariadb,不然mysql装不进去
查看mariadb命令:rpm -qa|grep mariadb
卸载mariadb相关
执行命令:rpm -e --nodeps 文件名
执行安装:
rpm -ivh mysql-community-common-5.7.15-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-5.7.15-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-comp-5.7.15-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-5.7.15-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-5.7.15-1.el6.x86_64.rpm --force --nodeps
2)修改my.cnf的配置
vim /etc/my.cnf
[client]
default-character-set=utf8
[mysql]
skip-grant-tables
character_set_server=utf8
init_connect='SET NAMES utf8'
max_connections=2000
使用root用户免密登录mysql
3)修改 root 密码
systemctl restart mysqld
mysql -uroot
use mysql ;
update user set Authentication_string=PASSWORD('datanode01') where USER='root';
flush privileges;
退出mysql
quit;
注释掉skip-grant-tables免密登录
重启mysqld
systemctl restart mysqld
设置开机启动
systemctl enable mysqld
或者
chkconfig mysqld on
启动 mysql:
systemctl status mysqld
systemctl start mysqld
查看 mysql 日志:
tail -f /var/log/mysqld.log
4)设置mysql可远程访问权限(可按需求选配置)
set global validate_password_policy=0;
set global validate_password_length=0;
ALTER USER USER() IDENTIFIED BY 'datanode01';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'datanode01' WITH GRANT OPTION;
flush privileges;
5)手工创建目录,并权限归属于 Mysql
mkdir -p /var/run/mysqld
chown -R mysql:mysql /var/run/mysqld
放置mysql的jdbc驱动jar包
1)在所有机器上创建目录:
mkdir -p /usr/share/java
将 mysql 的 jdbc 的驱动 mysql-connector-java-5.1.47.jar 复制至/user/share/java 目录 下,然后执行:
cp /appinstall/cdh6/mysql-connector-java-5.1.47.jar /usr/share/java
设置软连接
ln -s mysql-connector-java-5.1.47.jar mysql-connector-java.jar
切换目录
cd /usr/share/java
2)复制至其他节点:
scp -r mysql-connector-java.jar ajxt.hdp.dn01:/usr/share/java
scp -r mysql-connector-java.jar ajxt.hdp.dn02:/usr/share/java
scp -r mysql-connector-java.jar ajxt.hdp.dn03:/usr/share/java
scp -r mysql-connector-java.jar ajxt.hdp.dn04:/usr/share/java
4 安装cm6.2.1
4.1 cm节点创建本地源
1)安装createrepo
yum -y install createrepo
上传 cdh6.2.1 至服务器/var/www/html/ 目录下,进入 cdh6.2.0 目录如下:
创建 /var/www/html/primary.ajxt.com.cn/cm6目录
2)进入目录 cm6 目录生成 RPM 元数据:
cd /var/www/html/cm6
createrepo .
创建 /var/www/html/parcels目录
进入目录 parcels 目录生成 RPM 元数据:
cd parcels
createrepo .
确保可以通过浏览器查看到这些 RPM 包
3)创建cm.repo
vi /etc/yum.repos.d/cm.repo
[cm.repo]
baseurl=http://10.0.10.1/cloudera/cm6/
gpgcheck=0
enabled=1
4) 复制cm.repo到其它数据节点
scp -r /etc/yum.repos.d/cm.repo arturo.cdh.dn02:/etc/yum.repos.d/
cm.repo
scp -r /etc/yum.repos.d/cm.repo arturo.cdh.dn03:/etc/yum.repos.d/
cm.repo
scp -r /etc/yum.repos.d/cm.repo arturo.cdh.dn04:/etc/yum.repos.d/
cm.repo
4.2 安装cloudera-manager-server
1)安装server客户端
yum -y install cloudera-manager-server
2) 初始化数据库到mysql中,打开mysql执行sql(用户名密码自定,记住从属关系就行)
set global validate_password_length=6;
set global validate_password_policy=0;
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 hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue 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 ON scm.* TO 'scm'@'%' IDENTIFIED BY 'cdh_scm';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'cdh_amon';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'cdh_rman';
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'cdh_hive';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'cdh_hue';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'cdh_sentry';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'cdh_nav';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'cdh_navms';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'cdh_oozie';
flush privileges;
3)初始化cm6的配置库
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -harturo.cdh.dn01 --scm-host arturo.cdh.dn01 scm root aaa@qq.com
4)启动cloudera-manager-server
systemctl start cloudera-scm-server
systemctl status cloudera-scm-server
5) 过一分钟左右监听7180端口是否启用,Cloudera Manager Server 启动,需要稍微等待,可以通过命令查看启动状态:
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
4.3 手动安装cloudera-manager-agent
1) 安装agent(所有节点执行)
yum -y install cloudera-manager-agent.x86_64
2) 修改配置文件,使所有agent指向cm节点(所有节点修改)
vi /etc/cloudera-scm-agent/config.ini
3) 启动agent
systemctl start cloudera-scm-server
systemctl status cloudera-scm-server
systemctl enable cloudera-scm-server
5 安装CDH6.2.1
1 配置安装文件
1) 上传CDH的parcel包到本地http服务器目录下,上传到/var/www/html/cloudera/cdh6目录即可
查看sha串
sha1sum CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel
对比官方下载下来的串是否正确
cat CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha1
修改sha文件
mv CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.pa4-el7.parcel.sha1 CDH-6.2.1-1.cdh6.2.1.p0.1425774-el7.parcel.sha
2 开始安装CDH
使用chrome进入10.0.10.1:7180页面,初始账户密码admin/admin
按操作一顿下一步,选择免费版
来到安装界面
设置一个集群名字(随意!)
因为已经手动安装过agent,所以只需要添加已经管理的机器即可
添加http服务器的parcel地址
这里“远程Parel存储库URL”,其余的删除,选择本地http服务器的cdh包目录
点击继续开始安装CDH
一般配置没什么问题,这里安装也不会出什么岔子
勾选一下配置
选择需要添加的组件,由于我做数仓,所以选择包含impala内核的组件
自定义角色分配,这些组件和角色后续都可以调整,不用太过纠结
测试通过后继续往下安装
分配路径都默认就行,后续可以调整,点击继续直接开始运行
PS:如果遇到创建某个库下的表失败的话,删除用户名和表重建即可(由于我是自己虚拟机的原因造成)
drop database hive;
drop user 'hive'@'%';
FLUSH PRIVILEGES;
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'cdh_hive';
FLUSH PRIVILEGES;
Resume继续安装
运行完成,进入cloudera-manager-service界面,(集群名称存在一点隐私取名,抱歉!)
至此,CDH6.2.1就安装完成了,已经写得很多了,后续的调整和集成LDAP,启用高可用配置等等调整,留着以后再记录吧!
下一篇: hive常见问题2