CentOS7下CDH5.11.1集群离线部署
本文章仅作为个人笔记
- CDH官网地址:https://www.cloudera.com/
- CDH镜像地址:
- cm5.11.1地址:
- http://archive.cloudera.com/cm5/repo-as-tarball/5.11.1/cm5.11.1-centos7.tar.gz
- http://archive.cloudera.com/cm5/repo-as-tarball/5.11.1/cm5.11.1-centos7.tar.gz.sha1
- cdh5.11.1地址:
- http://archive.cloudera.com/cdh5/parcels/5.11.1/CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel
- http://archive.cloudera.com/cdh5/parcels/5.11.1/CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel.sha1
- http://archive.cloudera.com/cdh5/parcels/5.11.1/manifest.json
- jdk1.8.121官网下载地址:
- http://download.oracle.com/otn/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-i586.rpm
- mysql5.6.36官网下载地址:
- https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
- mysql连接驱动下载地址:
- https://dev.mysql.com/downloads/connector/j/
- 笔者使用VMware进行模拟安装,为了满足基础配置,这里分配3台虚拟机(hadoopb01(4g/4核/40g/192.168.75.136/master),hadoopb02(2g/2核/40g/192.168.75.144/slave),hadoopb03(2g/2核/40g/192.168.75.145/slave)),另外wget下载文件非常缓慢并且不方便反复测试及安装,笔者这里下载好所有资源文件放在本地(.sha1文件结尾的文件统一重命名为.sha)。(如果虚拟机开机后无网络(使用net桥接方式),可与命令行运行dhclient分配ip,若后续断开了可运行dhclient -r后再运行dhclient)
- 本地虚拟机,本地文件
- 在3台服务器共同操作:
- 安装基本工具: yum install vim wget net-tools unzip -y
- 关闭SELINUX:
- 运行 setenforce 0 临时关闭
- 永久关闭SELINUX:
echo “SELINUX=disabled” > /etc/selinux/config
echo “SELINUXTYPE=targeted” >> /etc/selinux/config - 关闭iptables防火墙:
- 运行 systemctl stop firewalld.service 停止防火墙
- 运行 systemctl status firewalld.service 查看防火墙状态
- 运行 systemctl disable firewalld.service 关闭防火墙开机启动
- 更改主机名:
- 运行 hostname hadoopb01 更改主机名,根据不同主机选择不同主机名(hadoopb01/hadoopb02/hadoopb03)
- 运行 echo “HOSTNAME=hadoopb01” > /etc/sysconfig/network ,根据不同主机选择不同主机名(hadoopb01/hadoopb02/hadoopb03)
- 运行 echo “hadoopb01” > /etc/hostname ,根据不同主机选择不同主机名(hadoopb01/hadoopb02/hadoopb03)
- 安装jdk(参考http://www.jianshu.com/p/c5fc4dd47754)
- **生成:
- 运行 ssh-****** 一路回车回车生成
- ip与hostname绑定:
echo “192.168.75.136 hadoopb01” >> /etc/hosts
echo “192.168.75.144 hadoopb02” >> /etc/hosts
echo “192.168.75.145 hadoopb03” >> /etc/hosts - 运行python –version 检查python版本,如果不是python2.6.6建议改为python2.6.6
- 时间同步:
- 运行 yum install ntp -y 安装ntp服务
- 运行 systemctl enable ntpd 使ntp服务开机启动
- 在从服务器操作(hadoopb02(2g/2核/40g/192.168.75.144/slave),hadoopb03(2g/2核/40g/192.168.75.145/slave):
- 配置时钟同步:
echo “driftfile /var/lib/ntp/ntp.drift” > /etc/ntp.conf
echo “statistics loopstats peerstats clockstats” >> /etc/ntp.conf
echo “filegen loopstats file loopstats type day enable” >> /etc/ntp.conf
echo “filegen peerstats file peerstats type day enable” >> /etc/ntp.conf
echo “filegen clockstats file clockstats type day enable” >> /etc/ntp.conf
echo “server 192.168.75.136 prefer” >> /etc/ntp.conf
echo “fudge 192.168.75.136 stratum 5” >> /etc/ntp.conf
echo “restrict -4 default kod notrap nomodify nopeer noquery” >> /etc/ntp.conf
echo “restrict -6 default kod notrap nomodify nopeer noquery” >> /etc/ntp.conf
echo “restrict 127.0.0.1” >> /etc/ntp.conf
echo “restrict ::1” >> /etc/ntp.conf - 运行 service ntpd restart 重启ntpd并使配置生效
- 运行 ntpdate –u 192.168.75.136 同步时间
- 在主服务器操作(hadoopb01(4g/4核/40g/192.168.75.136/master):
- 运行
ssh-copy-id hadoopb01
ssh-copy-id hadoopb02
ssh-copy-id hadoopb03 完成各服务器免密登录 - 配置时钟同步:
echo “driftfile /var/lib/ntp/ntp.drift” > /etc/ntp.conf
echo “restrict 192.168.75.0 mask 255.255.255.0 nomodify notrap” >> /etc/ntp.conf
echo “server 210.72.145.44” >> /etc/ntp.conf
echo “server 202.112.10.36 perfer” >> /etc/ntp.conf
echo “server 59.124.196.83” >> /etc/ntp.conf
echo “restrict 210.72.145.44 nomodify notrap noquery” >> /etc/ntp.conf
echo “restrict 202.112.10.36 nomodify notrap noquery” >> /etc/ntp.conf
echo “restrict 59.124.196.83 nomodify notrap noquery” >> /etc/ntp.conf
echo “server 127.127.1.0” >> /etc/ntp.conf
echo “fudge 127.127.1.0 stratum 10” >> /etc/ntp.conf - 运行 service ntpd restart 重启ntpd并使配置生效
- 运行 ntpdate –u 202.112.10.36 同步时间
- 使用filezilla将上文所述文件传输至主服务器(放置于root用户~目录)
- 安装配置mysql5.6(可参考http://www.jianshu.com/p/c5fc4dd47754)
- 创建相关用户及数据库:
create database cmf default character set utf8
grant all on cmf.* to ‘cmf’@’localhost’ identified by ‘cmf_password’
grant all on cmf.* to ‘cmf’@’%’ identified by ‘cmf_password’
grant all on cmf.* to ‘cmf’@’{m_hosts[{m_hosts[{m_hosts[{m_hosts[${c_index}]}’ identified by ‘os_password’
drop database os
create database os
flush privileges - 安装并启动httpd服务:
- 运行 yum install -y httpd 安装httpd服务
- 运行 systemctl enable httpd 设置httpd服务开机启动
- 运行 service httpd start 启动httpd服务
- 创建parcels服务(依次运行如下命令):
cd /var/www/html
mkdir parcels
cd parcels
mv ~/CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel ./
mv ~/CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel.sha ./
mv ~/manifest.json ./ - 创建cm5服务(依次运行如下命令):
mkdir /opt/rpminstall
cd /opt/rpminstall
mv ~/cm5.11.1-centos7.tar.gz ./
mv ~/cm5.11.1-centos7.tar.gz.sha ./
tar -zxf cm5.11.1-centos7.tar.gz -C /var/www/html/
cd /var/www/html/
mkdir -p cm5/redhat/7/x86_64/
mv cm cm5/redhat/7/x86_64/
chown apache:apache -R /var/www/html
cd /var/www/html/cm5/redhat/7/x86_64/cm/5/RPMS/x86_64
yum install -y cloudera-manager-daemons-5.11.1-1.cm5111.p0.9.el7.x86_64.rpm
yum install -y cloudera-manager-server-5.11.1-1.cm5111.p0.9.el7.x86_64.rpm
mkdir /usr/share/java
cd /usr/share/java
mv ~/mysql-connector-java-5.1.42.zip ./
unzip mysql-connector-java-5.1.42.zip
cd mysql-connector-java-5.1.42
cp mysql-connector-java-5.1.42-bin.jar ../mysql-connector-java.jar
echo “com.cloudera.cmf.db.type=mysql” > /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.host=localhost” >> /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.name=cmf” >> /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.user=cmf” >> /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.password=cmf_password” >> /etc/cloudera-scm-server/db.properties - 运行 service cloudera-scm-server start 启动 cloudera-scm 服务
- 运行 tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log 查看运行日志,待日志停止且显示Started Jetty server.表示服务运行完成。
- 与浏览器输入 http://192.168.75.136:7180开始正式的集群部署
- 默认用户名密码都为admin
- 同意并继续
- 选择适合自己的版本并继续
- 点击继续
- 填入3台服务器的ip并点击搜索
- 确认可行后点击继续
- 与浏览器访问 http://192.168.75.136/parcels/确认parcels服务,若出现如图则表示ok
- 与浏览器访问 http://192.168.75.136/cm5/redhat/7/x86_64/cm/5/ 确认cm5服务,若出现如图则表示ok
- 点击更多选项配置parcel服务
- 填入之前部署的本地parcel服务并删除多余的url点击保存更改
- 点击自定义存储库配置cm5服务
- 配置cm5服务并点击继续
- 直接点击继续
- 直接点击继续
- 选择合适的登陆配置(密码或私钥),点击继续
- 等待安装完成点击继续
- 等待安装完parcel点击继续
- 检测完成后点击完成(这里忽略这两个警告,可自行修复)
- 这里选择所有服务以测试是否可以完成所有服务的安装
- 这里直接点继续,如果需要自定义可自行定义。
- 填写创建好的数据库信息测试链接ok后点击继续
- 这里直接点击继续(用户可自行配置)
- 等都通过后点击继续,如果hive的安装出现问题可参考文件末尾教程再操作。
- 点击完成,完成安装
- 至此完成安装
- 运行
- 文章的最后附上个人的脚本(吐槽下简书的书写为了格式会导致粘贴部分文案行不对号,如果要使用这个脚本需要更改( 主机ip,主机名)):
- 最后为了使脚本能够运行,需要运行 chmod +x filepath 为文件添加权限,运行时执行 bash filepath n 例如(bash cdh.sh 0),运行此脚本可能mysql初始化不完全,如果可以,最好还是弄懂所有的步骤。
====================================================================================================master
#!/bin/bash
c_index=$1
m_names=(“master” “slave01” “slave02”)
m_hosts=(“192.168.1.131” “192.168.1.129” “192.168.1.226”)
function auto_ssh_******(){
expect -c “set timeout -1;
spawn ssh-******;
expect {
id_rsa {
send \n\r;
exp_continue;
};
Overwrite {
send y\n\r;
exp_continue;
};
passphrase {
send \n\r;
exp_continue;
};
again {
send \n\r;
exp_continue;
};
};
”
}
function auto_ssh_copy(){
expect -c “set timeout -1;
spawn ssh-copy-id $1;
expect {
yes/no {
send yes\n\r;
exp_continue;
};
password {
send {m_names[{m_names[{m_names[{m_names[@]};
do
echo “m_name” >> /etc/hosts
let t_index++
done
#时间同步
yum install ntp -y
systemctl enable ntpd
if [ {m_names[@]};
do
auto_ssh_copy {m_hosts[0]} prefer” >> /etc/ntp.conf
echo “fudge {m_hosts[0]}
fi
#生成私钥
rm -rf /root/.ssh/id_rsa
rm -rf /root/.ssh/id_rsa.pub
auto_ssh_******
#安装jdk
rpm -Uvh jdk-8u121-linux-x64.rpm
echo “JAVA_HOME=/usr/java/jdk1.8.0_121” > /etc/profile.d/java.sh
echo “PATH=$PATH:$JAVA_HOME/bin” >> /etc/profile.d/java.sh
echo “CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar” >> /etc/profile.d/java.sh
echo “export JAVA_HOME PATH CLASSPATH” >> /etc/profile.d/java.sh
source /etc/profile
if [ {m_hosts[{m_hosts[{m_hosts[{m_hosts[{m_hosts[${c_index}]}’ identified by ‘os_password’”
/usr/local/mysql/bin/mysql -e “drop database os”
/usr/local/mysql/bin/mysql -e “create database os”
/usr/local/mysql/bin/mysql -e “flush privileges”
#安装httpd服务
yum install -y httpd
systemctl enable httpd
service httpd restart
cd /var/www/html
mkdir parcels
cd parcels
mv ~/CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel ./
mv ~/CDH-5.11.1-1.cdh5.11.1.p0.4-el7.parcel.sha ./
mv ~/manifest.json ./
mkdir /opt/rpminstall
cd /opt/rpminstall
mv ~/cm5.11.1-centos7.tar.gz ./
mv ~/cm5.11.1-centos7.tar.gz.sha ./
tar -zxf cm5.11.1-centos7.tar.gz -C /var/www/html/
cd /var/www/html/
mkdir -p cm5/redhat/7/x86_64/
mv cm cm5/redhat/7/x86_64/
chown apache:apache -R /var/www/html
cd /var/www/html/cm5/redhat/7/x86_64/cm/5/RPMS/x86_64
yum install -y cloudera-manager-daemons-5.11.1-1.cm5111.p0.9.el7.x86_64.rpm
yum install -y cloudera-manager-server-5.11.1-1.cm5111.p0.9.el7.x86_64.rpm
mkdir /usr/share/java
cd /usr/share/java
mv ~/mysql-connector-java-5.1.42.zip ./
unzip mysql-connector-java-5.1.42.zip
cd mysql-connector-java-5.1.42
cp mysql-connector-java-5.1.42-bin.jar ../mysql-connector-java.jar
echo “com.cloudera.cmf.db.type=mysql” > /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.host=localhost” >> /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.name=cmf” >> /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.user=cmf” >> /etc/cloudera-scm-server/db.properties
echo “com.cloudera.cmf.db.password=cmf_password” >> /etc/cloudera-scm-server/db.properties
service cloudera-scm-server restart
source /etc/profile
fi
======================================================================================================end -
坑锦集:
- 脚本运行完成后可能需要再次于master运行source /etc/profile 使环境变量生效。
- 如果遇到hive安装失败的问题可能需要再开个浏览器窗口访问cdh搭建主网站更改hive配置,且需要使用独立的mysql数据库及用户。
更改hive配置
ntp时间同步服务如果报警,可于crontab -e添加定时同步时间。
- 当3台机器服务时,可将master也添加namenode节点。