Cloudera Manager 5和CDH5离线安装
前期准备:13台centos6.7(虚拟机部署)=12台(CDH集群)+1台(LAMP展示机器)
HostName |
IP |
master01 |
10.255.184.32 |
master02 |
10.255.184.33 |
slave01 |
10.255.184.34 |
slave02 |
10.255.184.35 |
slave03 |
10.255.184.36 |
slave04 |
10.255.184.37 |
slave05 |
10.255.184.38 |
slave06 |
10.255.184.39 |
slave07 |
10.255.184.40 |
slave08 |
10.255.184.41 |
slave09 |
10.255.184.42 |
slave10 |
10.255.184.43 |
展示机器 |
10.255.241.20 |
相关包的下载地址: (本地文件在E:\客流展示二期\hadoop部署文档\离线安装包\pre)
1:Cloudera Manager地址:http://archive.cloudera.com/cm5/cm/5/
cloudera-manager-el6-cm5.9.0_x86_64.tar.gz
2:CDH安装包地址:http://archive.cloudera.com/cdh5/parcels/latest/
由于我们的操作系统为CentOS6.7,需要下载以下文件(根据系统版本自行挑选。)
CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel
CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1
3:JDBC:http://download.softagency.net/MySQL/Downloads/Connector-J/
mysql-connector-java-5.1.40.tar.gz
一:部署前机器情况准备
1:网络配置(所有节点)以主节点为例:
vim/etc/sysconfig/network
修改:HOSTNAME=master
vim/etc/hosts
追加以下内容
10.255.184.32master01
10.255.184.33master02
10.255.184.34slave01
10.255.184.35slave02
10.255.184.36slave03
10.255.184.37slave04
10.255.184.38slave05
10.255.184.39slave06
10.255.184.40slave07
10.255.184.41slave08
10.255.184.42 slave09
10.255.184.43 slave10
CDH环境需要修改的系统配置
cdh会检查主机运行环境,会报如下错误
解决方法(所有节点都要执行):
vim /etc/sysctl.conf在最末行添加以下内容
vm.swappiness=10
:wq保存退出
vim /etc/rc.local添加以下内容
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
:wq保存退出
2:配置SSH, 建立SSH无密码连接
2.1查看是否安装ssh,并且修改配置文件。
#rpm -qa | grepopenssh
#rpm -qa | grep rsync
若未安装SSH协议则通过以下指令安装(已安装则不需要执行下面两个命令)
yum install ssh 安装SSH协议
yum install rsync rsync是远程数据同步工具,可通过
LAN/WAN快速同步多台主机间的文件
修改SSH配置文件
#vim /etc/ssh/sshd_config
RSAAuthentication yes 启用 RSA 认证
PubkeyAuthentication yes 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys 公钥文件路径
找到以上三行,去掉行首的注释即可。
service sshdrestart 重启SSH服务,使设置生效
2.2配置Master无密码登录所有Slave
①root用户在所有群集机器上执行以下命令:
# ssh-keygen -t rsa
直接回车执行
该命令是生成无密码密钥对,对询问采用直接回车执行。生成的私钥为id_rsa,生成的公钥为id_rsa.pub。其默认存储在/home/hadoop/.ssh目录下。
②ssh-copy-id -i /root/.ssh/id_rsa.pub hostname
往所有主机发送统一指令。
ssh hostname 登录测试是否成功
3:在所有节点上安装JDK
J:\办公室主机\hadoop部署\旧版\CDH
jdk-8u111-linux-x64.rpm
卸载掉java
#rpm -qa | grep java
#rpm -e -nodeps 输入上面-qa搜索到的版本
# rpm -ivh jdk-8u111-linux-x64.rpm
使用java -version 检查是否安装成功
4:安装配置mysql(主节点)
yum install -y mysql-server
提示安装完成后
#service mysqld start 启动mysql
#chkconfig mysqld on mysql设置为开机自启
#mysql_secure_installation 初始化设置mysql(设置root账号)
#mysql -uroot -pmysqlpw 进入mysql命令行模式
TIPS:
Cloudera-Manager除了保存CDH集群的配置元数据的scm数据库外,还为Activity Monitor(活动监控)、Service Monitor(服务监控)、Report Manager(报告管理)、Host Monitor(主机监控)、Cloudera Navigator(Cloudera导航)等信息分别创建数据amon、smon、rmon、hmon、nav相应的数据。
建库命令如下:
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
授权root用户在主节点拥有所有数据库的访问权限
#grant all privileges on *.* to 'master'@'localhost' identified by 'a11112222' with grant option;flush privileges;
#grant all privileges on hive.* to 'server'@'localhost' identified by 'wifiBJ' with grant option;flush privileges;
# grant all privileges on cm.* to 'server'@'localhost' identified by 'wifiBJ' with grant option;flush privileges;
5:每台机器关闭防火墙和selinux
关闭防火墙
service iptables stop
关闭selinux
setenforce 0 (临时生效)
修改 /etc/selinux/config 下的 SELINUX=
disabled (重启后永久生效)
6:配置网络时间服务同步
因为集群网络不可以访问外网,所以时间同步方案如下:
展示机器和无限城市的时间同步服务器做好时间同步,并将其设为server,集群内部的机器作为client,通过配置文件,实现与server的内网同步。
此次部署的配置文件路径:E:\客流展示二期\hadoop部署文档\组件配置\ntpd的两个文件夹中。
每台机器执行下面两个操作,开启ntp服务,并且设置为开机自启
#service ntpd start
#chkconfig ntpd on
server端配置修改完成后,执行netstat -tlunp | grep ntp
查看udp123端口是否被监听。
#ntpdate -u ntp.wifibeijing.com
#ntpdate -u 103.250.224.18 手动强制执行同步
需要等待5-10分钟同步。执行ntpstat查看同步状态。
#ntpstat
client和server实现内网同步
需要开放server端的udp 123端口(注意UDP)
# -A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
client端配置修改完成后,
#ntpdate -u 10.255.176.32 手动同步内网时间
二:正式配置CDH
1:安装Cloudera Manager Server 和Agent
cloudera manager的目录默认位置在/opt下,
解压:
tar xzvf cloudera-manager*.tar.gz
将解压后的cm-5.9.0和cloudera目录放到/opt目录下。
为Cloudera Manager 5建立数据库
找到mysql-connector-java-5.1.40-bin.jar
,放到/opt/cm-5.9.0/share/cmf/lib/
中。
#cp /opt/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar /opt/cm-5.9.0/share/cmf/lib/
#cp/opt/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hive/lib/
在主节点初始化CM5的数据库
# /opt/cm-5.9.0/share/cmf/schema/scm_prepare_database.shmysql cm -hlocalhost -umaster -pa11112222 --scm-host localhost scm scm scm
Agent配置
修改/opt/cm-5.9.0/etc/cloudera-scm-agent/config.ini
中的server_host
为主节点的主机名。
vim /opt/cm-5.9.0/etc/cloudera-scm-agent/config.ini
修改
server_host=slave01
将cm-5.9.0文件夹打包(因为需要将该文件传输到slave端)
tar -zcvf/opt/cm-5.9.0.tar.gz /optcm-5.9.0
scp /opt/cm-5.9.0.tar.gz root@master01:/opt/
scp /opt/cm-5.9.0.tar.gz root@master02:/opt/
集群内所有机器都需要传输,这里不赘述。
在所有节点创建cloudera-scm用户
useradd --system--home=/opt/cm-5.9.0/run/cloudera-scm-server/ --no-create-home--shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
准备Parcels,用以安装CDH5
将CHD5相关的Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(parcel-repo需要手动创建)。
相关的文件如下:
CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel
CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1
最后将CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1,重命名为CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.9.0-1.cdh5.9.0.p0.23-el6.parcel.sha1文件。
Master
开启
/opt/cm-5.9.0/etc/init.d/cloudera-scm-serverstart
/opt/cm-5.9.0/etc/init.d/cloudera-scm-agentstart
所有机器开启
/opt/cm-5.9.0/etc/init.d/cloudera-scm-agentstart
浏览器登录CDH5页面查看服务是否启动
http://10.255.184.34:7180
接下来参看CDH部署计划图,分配角色。
接收数据需要配置flume和rsyslog
具体配置在E:\客流展示二期\hadoop部署文档\组件配置\Flume文件夹里。
rsyslog
需要开放flume监听的端口,具体配置参见配置文件。
Drill部署参照E:\客流展示二期\drill部署文档文件夹里的部署文档。
Drill启动后,浏览器访问http://10.255.184.41:8047
点击storage,进行插件的配置,点击Enable启动dfs插件,点击Update进入dfs的配置页面,进行设置。配置参照E:\客流展示二期\drill部署文档\dfs.txt文档的配置即可。
至此,系统的部署已经完成。代码的说明在另外一个文档中说明。
Q&A
部署遇到的问题
http://192.168.2.74:7180/
grant all privileges on *.* to'root'@'192.168.2.74' identified by 'a11112222' with grant option;flushprivileges;
执行数据库初始化脚本
/opt/cm-5.9.0/share/cmf/schema/scm_prepare_database.shmysql cm -hmaster -uroot -pa11112222 --scm-host 192.168.2.74 scm scm scm
执行添加用户及用户组
useradd --system--home=/opt/cm-5.9.0/run/cloudera-scm-server/ --no-create-home--shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
问题1:
hive数据库报错解决、
cp/opt/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar/opt/cloudera/parcels/CDH-5.9.0-1.cdh5.9.0.p0.23/lib/hive/lib/
问题2:
slave1: IOException thrown while collectingdata from host: No route to host
解决:关闭防火墙
问题3:
slave[1-4]: Inspector did not runsuccessfully.
解决:查看jdk是否安装
问题4:主机环境检查页面报错
sysctl vm.swappiness=10
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
问题5:
master意外重启后查看cloudera-scm-server状态
报错 cloudera-scm-server dead butpid file exists
cloudera-scm-agent dead but pid fileexists
解决方法:rm -rf /opt/cm-5.9.0/run/cloudera-scm-server.pid
rm -rf /opt/cm-5.9.0/run/cloudera-scm-agent/cloudera-scm-agent.pid
问题6:
如果HDFS首次启动报错,failed to format namenode
在配置HDFS页面修改NameNode和DataNode的存储目录。
问题7:
若/opt/cm-5.9.0/etc/init.d/cloudera-scm-server start执行完成后,很快会出现cloudera-scm-server dead but pid file exists的报错信息,可以查看mysql的运行状况。mysql挂掉的导致这个原因的可能性较大。或者内存溢出,可以查看该日志文件cm-5.9.0/log/cloudera-scm-server/cloudera-scm-server.log
问题8:
agent在parcels安装页面显示主机运行状态不良
查看agent日志报错Error, CM server guid updated,
解决方法:删除各个agent节点的cm_guid文件即可
rm-rf /opt/cm-5.9.2/lib/cloudera-scm-agent/cm_guid