资源描述
Cloudera大数据平台环境搭建
(CDH5.13.1版)
版本
v1.0
作者
郭维忠
发布日期
2018-03-10
Cloudera大数据平台环境搭建(CDH5.13.1)
目录
Cloudera大数据平台环境搭建 1
(CDH5.13.1版) 1
1. 基础环境 4
1.1. 软件环境 4
1.2. 配置规划 4
1.3. 所需要的软件资源 4
1.4. 修改机器名(所有节点) 5
1.5. 设置防火墙(所有节点) 5
1.6. 配置免密码登录SSH 6
1.7. 关闭SELINUX(所有节点) 8
1.8. 修改Linux内核参数(所有节点) 8
1.9. 其他安装与配置(所有节点) 10
1.10. 配置NTP服务 10
1.11. 安装oracle JDK1.8 (所有节点) 12
1.12. Mysql安装(主节点) 13
2. 安装CM 15
2.1. 传包,解包 15
2.2. 创建数据库 15
2.3. 创建用户 16
2.4. 制作本地YUM源 16
2.5. 拷贝jar包 17
2.6. 修改cloudera-scm-agent配置 17
2.7. 启动CM Server和Agent 18
2.8. 访问CM 18
3. 安装CDH 18
3.1. 登录后界面 18
3.2. 选择CM版本 19
3.3. 指定主机 20
3.4. 选择CDH版本 21
3.4.1. 出现 “主机运行状态不良”错误 22
3.5. 检查主机正确性 23
3.6. 选择安装的服务 23
3.7. 角色分配 24
3.8. 数据库设置 24
3.8.1. 测试连接报错: 25
3.9. 群集设置 26
3.10. 开始安装 28
3.11. 安装完成 29
3.11.1. 警告信息: 29
4. 常见错误 31
4.1. 初始化数据库错误: 31
4.2. 未能连接到 Host Monitor 32
模板发布部门:技术研发管理部–过程与质量管理部 第32页/共32页
模板编号:SD-TEM-01-201311
1. 基础环境
1.1. 软件环境
本文将介绍Centos7.4 离线安装CDH和Cloudera Manager过程,软件版本如下:
NO.
软件名称
版本
1.
操作系统
Centos7.4 64 位
2.
JDK
jdk-8u151-linux-x64
3.
Clouder Manager
5.13.1
4.
CDH
5.13.1
5.
数据库
Mysql 5.7
6.
JDBC
mysql-connector-java-5.1.43.jar
1.2. 配置规划
本次安装共5台服务器,服务器配置及用途如下:
NO.
机器名称
内网IP
配置
用途
1.
node168
172.16.3.168
8C/32Gb/1TB
主,CM,MysqlDB
2.
node169
172.16.3.169
8C/32Gb/1TB
从
3.
node170
172.16.3.170
8C/32Gb/1TB
从
4.
node171
172.16.3.171
8C/32Gb/1TB
从
5.
node172
172.16.3.172
8C/32Gb/1TB
从
1.3. 所需要的软件资源
1) JDK环境:
JDK版本:1.8.0_151
jdk-8u151-linux-x64.rpm
下载地址:
2) CM包:
CM版本:5.13.1
cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz
下载地址:http://archive-
3) CDH包
CDH版本:5.13.1,
CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel;
CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1;
manifest.json
下载地址:
http://archive-
http://archive-
http://archive-
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
1.4. 修改机器名(所有节点)
1) 修改机器名称
# hostnamectl set-hostname xxx //设置机器名
#hostname // 查看本机名
这种方式,在Centos7中可以永久性改变主机名称。
2) 每个节点机器,都要配置hosts
# vi /etc/hosts
内容都改为:
127.0.0.1 localhost //建议保留此行
172.16.3.168 node168
172.16.3.169 node169
172.16.3.170 node170
172.16.3.171 node171
172.16.3.172 node172
1.5. 设置防火墙(所有节点)
注:为了简便,可以先关闭防所有节点火墙,安装完成后,再按照下面步骤设置。
防火墙常用命令:
# 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
注意: 需要在所有的节点上执行,因为涉及到的端口太多了,临时开放所有端口是为了安装起来方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
1.6. 配置免密码登录SSH
将子节点设置为从主节点ssh无密码登陆(主节点访问从节点需要无密码互通,否则后面会出现问题)
在主节点上执行:
#cd~ //进入到 根目录
# ssh-keygen -t rsa
一路回车,生成无密码的密钥对。
把公钥拷贝至node169服务器上 :
# scp /root/.ssh/id_rsa.pub root@node169:~ //输入node169机器上root用户密码拷备成功
登录到node169服务器上:
然后在node169服务器上,把公钥的内容追加到authorized_keys文件末尾(这个文件也在隐藏文件夹.ssh下,如果没有可以新建):
# cat id_rsa.pub >> ~/.ssh/authorized_keys
如果提示下面信息,则需要创建./ssh目录:
-bash: /root/.ssh/authorized_keys: No such file or directory
//创建/.ssh目录,再追加公钥内容
# mkdir ~/.ssh
# cat id_rsa.pub >> ~/.ssh/authorized_keys
并设置authorized_keys的访问权限:
# chmod 600 ~/.ssh/authorized_keys
测试:在node168点上执行ssh node169,正常情况下,不需要密码就能直接登陆进去了。
在node168节点出现下面表示成功登录node169节点:
以同样的方式将公钥拷贝至其他节点服务器上。
1.7. 关闭SELINUX(所有节点)
关闭linux SELINUX安全内核
# setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重启后永久生效)
# vi /etc/selinux/config
内容增加:
SELINUX=disabled
重启后生效:
# reboot
查看SELINUX 是否关闭:
#sestatus
(在Centos7中遇到SELINUX无法关闭的问题,重新启动机器恢复正常)
1.8. 修改Linux内核参数(所有节点)
为避免安装过程中出现的异常问题,首先调整Linux内核参数。
1) 设置swappiness,控制换出运行时内存的相对权重,Cloudera 建议将 swappiness 设置为 10:
//查看swappiness
# cat /proc/sys/vm/swappiness
//永久性修改,执行下面两条命令
# sysctl -w vm.swappiness=10
# echo vm.swappiness = 10 >> /etc/sysctl.conf
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
# vi /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状态,显示状态被禁用了。
3) 修改文件句柄数:
修改系统文件句柄数限制:
//查看文件句柄数,显示1024,显然太小
# ulimit -n
1024
//修改限制
#vi /etc/security/limits.conf
//在文件后加入下面内容:
* soft nofile 100000
* hard nofile 100000
修改后需要重启机器。
1.9. 其他安装与配置(所有节点)
为避免安装过程中出现异常问题,安装相关依赖包:
# yum -y install psmisc MySQL-python at bc bind-libs bind-utils cups-client cups-libs cyrus-sasl-gssapi cyrus-sasl-plain ed fuse fuse-libs httpd httpd-tools keyutils-libs-devel krb5-devel libcom_err-devel libselinux-devel libsepol-devel libverto-devel mailcap noarch mailx mod_ssl openssl-devel pcre-devel postgresql-libs python-psycopg2 redhat-lsb-core redhat-lsb-submod-security x86_64 spax time zlib-devel
#yum install -y python-lxml
#yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel
# chmod +x /etc/rc.d/rc.local
# yum -y install rpcbind
# systemctl start rpcbind
# echo "systemctl start rpcbind" >> /etc/rc.d/rc.local
1.10. 配置NTP服务
集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。 具体建设过程如下:
所有节点安装相关组件:
# yum install ntp ntpdate -y
NTP服务端(主节点):
1) 查找时间同步服务器http://www.pool.ntp.org/zone/asia:
打开网址,内容如下:
2) 编辑 /etc/ntp.conf:
# vi /etc/ntp.conf
//在文件中输入上面网页内容:
server 0.asia.pool.ntp.org
server 1.asia.pool.ntp.org
server 2.asia.pool.ntp.org
server 3.asia.pool.ntp.org
3) 启动ntp服务:
# systemctl start ntpd
4) 配置开机启动:
# systemctl enable ntpd.service
注意:如果ntpd 开机启动失效,有可能是因为安装了chronyd 并且是开机自启状态,所以导致ntpd开机自启失败。
# 查看 chronyd设置状态
# systemctl status chronyd
显示如下:
以面表明,chronyd显示为开机启动状态。
将chronyd设为禁用状态:
# systemctl disable chronyd.service
此时,NTP的服务开机自启动完成!
5) 检查是否设置成功:
# ntpq -p
//更新时间
#timedatectl
NTP客户端(所有从节点):
6) 远程客户端时间同步测试
# date
# ntpdate 172.16.3.168
172.16.3.168是NTP服务端IP,显示如下信息,测试成功:
7) 客户端设置计划任务,每30分钟同步时间
#crontab -e
//加入内容:
0-59/30 * * * * /usr/sbin/ntpdate 172.16.3.168 && /sbin/hwclock -w
8) 设置定时任务开机启动
//设置开机启动
# systemctl enable crond.service
//查看状态
# systemctl status crond
1.11. 安装oracle JDK1.8 (所有节点)
下载rpm 安装包jdk-8u151-linux-x64.rpm
CentOS系统一般自带OpenJdk,需要卸载掉自带的OpenJdk,使用
# rpm -qa | grep java
查询java相关的包,使用
# rpm -e –nodeps +包名
强制卸载掉,下面安装oralce JDK
# rpm -ivh jdk-8u151-linux-x64.rpm
配置JAVA_HOME环境变量:
修改/etc/profile文件配置环境变量, 执行命令:
# vi /etc/profile
在profile文件最后,输入下面内容,保存并退出。
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$PATH:$JAVA_HOME/bin
执行下面命令,让配置生效
# source /etc/profile //使修改立即生效
# echo $PATH //查看PATH值
# echo $JAVA_HOME //查看JAVA_HOME值
在Centos7中修改/etc/profile文件配置环境变量,机器启动后有时不生效,可以修改/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
1.12. Mysql安装(主节点)
到官网
1) 下载安装包
#wget
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/f令MySQL跳过登录时的权限检验,在[mysqld]下加入一行:
skip-grant-tables
2、重启MySQL
#service mysqld restart
3、免密码登录MySQL。
#mysql
4、mysql客户端执行如下命令,修改root密码
mysql> use mysql;
mysql> UPDATE user SET authentication_string = password('your-password') 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/f删除此前新增那一行skip-grant-tables,并重启MySQL(这一步非常重要,不执行可能导致严重的安全问题)
#service mysqld restart //重启 Mysql
2. 安装CM
2.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:
#wget http://archive-
下载CDH:
#wget http://archive-
#wget http://archive-
#wget http://archive-
将CM解压到/opt/目录:
# tar -zxvf cloudera-manager-centos7-cm5.13.1_x86_64.tar.gz -C /opt/
# ls /opt/
cloudera cm-5.13.1
2.2. 创建数据库
在主节点上:
# 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;
//复制Mysql JDBC包到/opt/cm-5.13.1/share/cmf/lib/目录
#cp mysql-connector-java-5.1.43-bin.jar /opt/cm-5.13.1/share/cmf/lib/
//初始化CM,执行下面脚本
# /opt/cm-5.13.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode168 -uroot -proot --scm-host node168 scm scm scm
//如果出现下面错误:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
//解决办法:
在/etc/hosts 文件中,加上
127.0.0.1 localhost.node168
主节点/etc/hosts内容:
脚本/scm_prepare_database.sh 执行成功界面:
2.3. 创建用户
在所有节点上执行:
# useradd --system --home=/opt/cm-5.13.1/run/cloudera-scm-server --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
2.4. 制作本地YUM源
在主节点上:
//进入软件包目录
#cd /data/cdh
//拷贝三个文件到/opt/cloudera/parcel-repo/目录
#cp CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1 manifest.json /opt/cloudera/parcel-repo/
//进入/opt/cloudera/parcel-repo/目录
#cd /opt/cloudera/parcel-repo/
//修改文件名
#mv CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1 CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha
此时/opt/cloudera/parcel-repo/目录下文件:
2.5. 拷贝jar包
在所有节点上:
//如果没有/usr/share/java/目录,则创建
# cp mysql-connector-java-5.1.43-bin.jar /usr/share/java/mysql-connector-java.jar
在主节点上:
//将mysql JDBC jar 包拷贝到 /opt/cm-5.13.1/share/cmf/lib/ 目录
#cp mysql-connector-java-5.1.43-bin.jar /opt/cm-5.13.1/share/cmf/lib/
2.6. 修改cloudera-scm-agent配置
在主节点上,修改/opt/cm-5.13.1/etc/cloudera-scm-agent/config.ini文件:
//将config.ini server_host=localhost 内容改为server_host=172.16.3.168
# sed -i "s/server_host=localhost/server_host=172.16.3.168/" /opt/cm-5.13.1/etc/cloudera-scm-agent/config.ini
在主节点上:
//将cm-5.13.1 打包,并复制到其他节点
#cd /opt
#tar czf cm-5.13.1.tar.gz cm-5.13.1/
//复制到其他节点
#scp cm-5.13.1.tar.gz node169:/opt/
#scp cm-5.13.1.tar.gz node170:/opt/
#scp cm-5.13.1.tar.gz node171:/opt/
#scp cm-5.13.1.tar.gz node172:/opt/
在所有从节点上解压:
//将cm-5.13.1 包解压
#cd opt
#tar -xzvf cm-5.13.1.tar.gz
//解压后删除
#rm -rf cm-5.13.1.tar.gz
2.7. 启动CM Server和Agent
在主节点上,启动cloudera-scm-server:
# /opt/cm-5.13.1/etc/init.d/cloudera-scm-server start
启动过程较慢,可通过/opt/cm-5.13.1/log/cloudera-scm-server日志,查看启动过程。
在所有节点上,启动cloudera-scm-agent:
# /opt/cm-5.13.1/etc/init.d/cloudera-scm-agent start
2.8. 访问CM
地址:http://主节点IP:7180
用户名、密码:admin
3. 安装CDH
3.1. 登录后界面
接受协议:
3.2. 选择CM版本
本文档选择Cloudera Express免费版。
3.3. 指定主机
在搜索主机名和IP地址框输入node[169-172],这里输入的内容支持正则表达式。输入后点【搜索】按钮,出现机器列表:
选择“当前管理的主机“选择项卡,点【继续】。
3.4. 选择CDH版本
这里需要选择制作本地源时的版本,如果选择别的版本的就会去官网下载,那样安装速度会很慢。
点【继续】按钮,进入安装界面。
3.4.1. 出现 “主机运行状态不良”错误
遇到节点“主机运行状态不良”的提示,解决办法是删除故障节点Agent服务cm_guid文件:
#rm -rf /opt/cm-5.13.1/lib/cloudera-scm-agent/cm_guid
重新启动故障节点Agent服务:
#/opt/cm-5.13.1/etc/init.d/cloudera-scm-agent restart
重启故障节点Agent服务后,故障消失:
注:出现故障原因是,因为我之前在故障节点启动过cloudera-scm-agent服务。
3.5. 检查主机正确性
确保全部验
展开阅读全文