资源描述
Cloudera大数据平台环境搭建
(CDH5.13.1版)
版本
v1.0
作者
郭维忠
发布日期
-03-10
目录
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
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
下载地址:
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
下载地址:
4) JDBC连接jar包:
jar包版本: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) 查找时间同步服务器:
打开网址,内容如下:
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. 检查主机对的性
保证所有验证通过。
3.6. 选取安装服务
本文选取是安装所有服务。
3.7. 角色分派
这里应当依照实际需求和服务器硬件参数自己选取
3.8. 数据库设立
指定数据库名称,要与2.2节创立数据库(hive,monitor,oozie,hue)保持一致,并输入相应数据库顾客名和密码,为了简便这里用是root账号名和密码。
所有输入完,之后【测试连接】:
3.8.1. 测试连接报错:
测试连接,Hue 测试报错:Unable to verify database connection:
因素是缺少Mysql mysql-community-libs-compat 安装包,安装后,问题解决:
//进入安装包所在目的
# cd /data/mysql/
# rpm -ivh mysql-community-libs-compat-5.7.18-1.el7.x86_64.rpm
测试成功后,点【继续】安装。
3.9. 群集设立
可以依照自己实际状况更改设立,本文采用默认配备。这些配备也可以在集群安装完毕后再更改。
3.10. 开始安装
安装过程没有任何错误,显示安装完毕。
3.11. 安装完毕
第一次安装完毕后,会浮现某些配备警告信息。这些可以依照提示信息更改。
3.11.1. 警告信息:
发现节点有异常信息,显示所有主机,发现node71节点运营状态不良。
按照 主机->所有主机->进入节点查看:
选取“配备“页签,拉到页面底部,修改”主机时钟偏差阈值“,设为”从不“,点【保存更改】,异常消失。
4. 常用错误
4.1. 初始化数据库错误:
在这个环节,浮现问题较多,但
展开阅读全文