离线部署CDH5.16.1及各种坑
?
?
所需安裝包及版本說(shuō)明:由于我們的操作系統(tǒng)為CentOS7,需要下載以下文件: cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 manifest.json
Cloudera Manager 下載目錄?
http://archive.cloudera.com/cm5/cm/5/
CDH 下載目錄?
http://archive.cloudera.com/cdh5/parcels/5.16.1/
manifest.json 下載?
http://archive.cloudera.com/cdh5/parcels/5.16.1/manifest.json
?
mkdir -p /opt/cloudera/parcel-repo/
CHD5 相關(guān)的 Parcel 包放到主節(jié)點(diǎn)的/opt/cloudera/parcel-repo/目錄中
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1?重命名為?CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
這點(diǎn)必須注意,否則,系統(tǒng)會(huì)重新下載?CDH-5.12.1-1.cdh5.12.1.p0.3-el6.parcel?文件
?
本文采用離線安裝方式
| 主機(jī)名 | ip地址 | 安裝服務(wù) |
| node1 (Master) | 192.168.252.121 | jdk、cloudera-manager、MySql |
| node2 (Agents) | 192.168.252.122 | jdk、cloudera-manager |
| node3 (Agents) | 192.168.252.123 | jdk、cloudera-manager |
二、系統(tǒng)環(huán)境搭建
1、網(wǎng)絡(luò)配置(所有節(jié)點(diǎn))
修改 hostname
依次修改所有節(jié)點(diǎn)?node[1-3]
hostnamectl set-hostname node1
?
修改映射關(guān)系
1.在 node1 的?/etc/hosts?文件下添加如下內(nèi)容
$ vi /etc/hosts
2.查看修改后的/etc/hosts?文件內(nèi)容
[root@node7 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.252.121 node1 192.168.252.122 node2 192.168.252.123 node3 192.168.252.124 node4 192.168.252.125 node5 192.168.252.126 node6 192.168.252.127 node7
?
for a in {2..3} ; do scp /etc/hosts node$a:/etc/hosts ; done
2、SSH 免密碼登錄
1.在集群node1的?/etc/ssh/sshd_config??文件去掉以下選項(xiàng)的注釋
vi /etc/ssh/sshd_config
RSAAuthentication yes #開啟私鑰驗(yàn)證 PubkeyAuthentication yes #開啟公鑰驗(yàn)證
2.將集群node1 修改后的?/etc/ssh/sshd_config??通過(guò)?scp?命令復(fù)制發(fā)送到集群的每一個(gè)節(jié)點(diǎn)
for a in {2..3} ; do scp /etc/ssh/sshd_config node$a:/etc/ssh/sshd_config ; done
3.生成公鑰、私鑰
1.在集群的每一個(gè)節(jié)點(diǎn)節(jié)點(diǎn)輸入命令?ssh-keygen -t rsa -P '',生成 key,一律回車
ssh-keygen -t rsa -P ''
4.在集群的node1 節(jié)點(diǎn)輸入命令
將集群每一個(gè)節(jié)點(diǎn)的公鑰id_rsa.pub放入到自己的認(rèn)證文件中authorized_keys;
for a in {1..3}; do ssh root@node$a cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys; done
5.在集群的node1 節(jié)點(diǎn)輸入命令
將自己的認(rèn)證文件?authorized_keys??通過(guò)?scp?命令復(fù)制發(fā)送到每一個(gè)節(jié)點(diǎn)上去:?/root/.ssh/authorized_keys`
for a in {1..3}; do scp /root/.ssh/authorized_keys root@node$a:/root/.ssh/authorized_keys ; done
6.在集群的每一個(gè)節(jié)點(diǎn)節(jié)點(diǎn)輸入命令
接重啟ssh服務(wù)
sudo systemctl restart sshd.service
7.驗(yàn)證 ssh 無(wú)密登錄
開一個(gè)其他窗口測(cè)試下能否免密登陸
例如:在node3
ssh root@node2
exit?退出
?
3、關(guān)閉防火墻
systemctl stop firewalld.service
systemctl disable firewalld
4、關(guān)閉 SELINUX
查看
[root@node1 ~]# getenforce Enforcing [root@node1 ~]# /usr/sbin/sestatus -v SELinux status:
臨時(shí)關(guān)閉
## 設(shè)置SELinux 成為permissive模式 ## setenforce 1 設(shè)置SELinux 成為enforcing模式 setenforce 0
永久關(guān)閉
vi /etc/selinux/config
將?SELINUX=enforcing?改為?SELINUX=disabled
設(shè)置后需要重啟才能生效
PS 我是修改node1?的?/etc/selinux/config?后,把配置文件復(fù)制到其他節(jié)點(diǎn)
for a in {2..3}; do scp /etc/selinux/config root@node$a:/etc/selinux/config ; done
?
5、安裝 JDK
rpm包放到/opt
for a in {2..3}; do scp /opt/jdk-8u181-linux-x64.rpm root@node$a:/opt/jdk-8u181-linux-x64.rpm ; done
?
rpm -ivh jdk-8u181-linux-x64.rpm
?
vi /etc/profile
?
#jdk export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64/ export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
?
?
for a in {2..3}; do scp /etc/profile root@node$a:/etc/profile;source /etc/profile ; done
source /etc/profile
?
6、設(shè)置 NTP
所有節(jié)點(diǎn)安裝 NTP
設(shè)置同步
yum -y install ntp
ntpdate -d 182.92.12.11
?
7、安裝配置 MySql
yum install -y wget
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
rpm -ivh mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
systemctl enable mysqld
systemctl start mysqld.service
systemctl status mysqld.service
grep "password" /var/log/mysqld.log
mysql -uroot -p
set global validate_password_policy=0;
set global validate_password_length=1;
set global validate_password_special_char_count=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=0;
select @@validate_password_number_count,@@validate_password_mixed_case_count,@@validate_password_number_count,@@validate_password_length;
?
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
flush privileges;
exit
?
yum -y remove mysql57-community-release-el7-10.noarch
?
8、下載依賴包
yum -y install chkconfig yum -y install bind-utils yum -y install psmisc yum -y install libxslt yum -y install zlib yum -y install sqlite yum -y install cyrus-sasl-plain yum -y install cyrus-sasl-gssapi yum -y install fuse yum -y install portmap yum -y install fuse-libs yum -y install redhat-lsb
?
三、cloudera manager Server & Agent 安裝
1、安裝 CM Server & Agent
在所有節(jié)點(diǎn),創(chuàng)建/opt/cloudera-manager
mkdir /opt/cloudera-manager
把下載好的cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz安裝包上傳至 node1 節(jié)點(diǎn)/opt/目錄
在 node1 節(jié)點(diǎn)拷貝?cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz?到所有?Server、Agent?節(jié)點(diǎn)創(chuàng)建?/opt/cloudera-manager?目錄:
for a in {2..3}; do scp /opt/cloudera-manager-*.tar.gz root@node$a:/opt/ ; done
所有?Server、Agent?節(jié)點(diǎn)節(jié)點(diǎn)解壓安裝 Cloudera Manager Server & Agent
cd /opt tar xvzf cloudera-manager*.tar.gz -C /opt/cloudera-manager
2、創(chuàng)建用戶 cloudera-scm(所有節(jié)點(diǎn))
cloudera-scm 用戶說(shuō)明,摘自官網(wǎng):
Cloudera Manager Server and managed services are configured to use the user account cloudera-scm by default, creating a user with this name is the simplest approach. This created user, is used automatically after installation is complete.
Cloudera管理器服務(wù)器和托管服務(wù)被配置為在默認(rèn)情況下使用用戶帳戶Cloudera-scm,創(chuàng)建具有這個(gè)名稱的用戶是最簡(jiǎn)單的方法。創(chuàng)建用戶,在安裝完成后自動(dòng)使用。
執(zhí)行:在所有節(jié)點(diǎn)創(chuàng)建cloudera-scm用戶
useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
3、配置 CM Agent
修改 node1 節(jié)點(diǎn)
/opt/cloudera-manager/cm-5.12.1/etc/cloudera-scm-agent/config.ini中的server_host為主節(jié)點(diǎn)的主機(jī)名。
cd /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/ vi config.ini
在node1 操作將 node1 節(jié)點(diǎn)修改后的 (復(fù)制到所有節(jié)點(diǎn))
for a in {2..3}; do scp /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini root@node$a:/opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini ; done
4、配置 CM Server 的數(shù)據(jù)庫(kù)
在主節(jié)點(diǎn) node1 初始化CM5的數(shù)據(jù)庫(kù):
下載 mysql 驅(qū)動(dòng)包
cd /opt/cloudera-manager/cm-5.16.1/share/cmf/lib wget http://maven.aliyun.com/nexus/service/local/repositories/hongkong-nexus/content/Mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar
?
for a in {2..3}; do scp /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-*.jar root@node$a:/opt/cloudera-manager/cm-5.16.1/share/cmf/lib/ ; done
for a in {1..3}; do scp /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-*.jar root@node$a:/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hive/lib/ ; done
for a in {1..3}; do scp /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-*.jar root@node$a:/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/oozie/lib/ ; done
?
#for a in {1..3}; do mkdir /usr/share/java/ && scp /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-*.jar root@node$a:/usr/share/java/ && mv mysql-connector-java-5.1.41.jar mysql-connector-java.jar ; done
-----需手動(dòng)下載
啟動(dòng)MySQL服務(wù)
systemctl restart mysqld
mysql -uroot -p
create database cm;
exit
?
cd /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/ ./scm_prepare_database.sh mysql cm root password
?
王洪岐:按照原來(lái)的寫法
scm_prepare_database.sh mysql cm -h <hostName> -u<username> -p<password> --scm-host <hostName> scm scm scm
簡(jiǎn)單密碼此步驟會(huì)報(bào)錯(cuò)java.sql.SQLException: Your password does not satisfy the current policy requirements
drop database cm;
后面的三個(gè)scm是庫(kù)名、用戶名、密碼,mysql5.7密碼最短4位,所以最后一個(gè)scm改成scm1
看到如下信息,恭喜您,配置沒(méi)毛病
[main] DbCommandExecutor INFO Successfully connected to database. All done, your SCM database is configured correctly!
格式:
scm_prepare_database.sh mysql cm -h <hostName> -u<username> -p<password> --scm-host <hostName> scm scm scm 對(duì)應(yīng)于:數(shù)據(jù)庫(kù)類型 數(shù)據(jù)庫(kù) 服務(wù)器 用戶名 密碼 –scm-host Cloudera_Manager_Server 所在節(jié)點(diǎn)……
5、創(chuàng)建 Parcel 目錄
Manager?節(jié)點(diǎn)創(chuàng)建目錄/opt/cloudera/parcel-repo,執(zhí)行:
將下載好的文件
CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha manifest.json
拷貝到該目錄下。
mkdir -p /opt/cloudera/parcel-repo chown cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo cd /opt/cloudera/parcel-repo
重命名,CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1?否則,系統(tǒng)會(huì)重新下載?CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
mv CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
Agent?節(jié)點(diǎn)創(chuàng)建目錄/opt/cloudera/parcels,執(zhí)行:
mkdir -p /opt/cloudera/parcels chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
6、啟動(dòng) CM Manager&Agent 服務(wù)
注意,mysql 服務(wù)啟動(dòng),防火墻關(guān)閉
在 node1 (master) 執(zhí)行:
Server
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server start
在 node2-7 (Agents) 執(zhí)行:
Agents
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent start
訪問(wèn)?http://Master:7180?若可以訪問(wèn)(用戶名、密碼:admin),則安裝成功。
Manager 啟動(dòng)成功需要等待一段時(shí)間,過(guò)程中會(huì)在數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)應(yīng)的表需要耗費(fèi)一些時(shí)間。
?
四、CDH5 安裝
CM Manager && Agent 成功啟動(dòng)后,登錄前端頁(yè)面進(jìn)行 CDH 安裝配置。
admin/admin登錄
同意條款——繼續(xù)
選擇免費(fèi)許可證——繼續(xù)
?
各個(gè) Agent 節(jié)點(diǎn)正常啟動(dòng)后,可以在當(dāng)前管理的主機(jī)列表中看到對(duì)應(yīng)的節(jié)點(diǎn)。
選擇要安裝的節(jié)點(diǎn),點(diǎn)繼續(xù)。
?
點(diǎn)擊,繼續(xù),如果配置本地 Parcel 包無(wú)誤,已下載,應(yīng)該是瞬間就完成了,然后就是耐心等待分配過(guò)程就行了,大約 10 多分鐘吧,取決于內(nèi)網(wǎng)網(wǎng)速。
(若本地 Parcel 有問(wèn)題,重新檢查步驟三、5 是否配置正確)
?
集群設(shè)置頁(yè)面選擇需要安裝的服務(wù)——繼續(xù)
數(shù)據(jù)庫(kù)配置頁(yè)面,填寫連接node1的mysql,用戶名密碼如下,執(zhí)行sql創(chuàng)建庫(kù)之后即可。
create database hue DEFAULT CHARACTER SET utf8; grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue1';
create database hive DEFAULT CHARACTER SET utf8; grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
create database oozie DEFAULT CHARACTER SET utf8; grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
?
?
問(wèn)題
//CDH安裝失敗或中斷怎么處理
server和agent分別停止服務(wù)
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server stop
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent stop
刪除Agent節(jié)點(diǎn)的UUID?
rm?-rf? /opt/cloudera-manager/cm-5.16.1/lib/cloudera-scm-agent/*
清空主節(jié)點(diǎn)CM數(shù)據(jù)庫(kù)
? ? ? 進(jìn)入主節(jié)點(diǎn)的Mysql數(shù)據(jù)庫(kù),然后drop database cm;
重新初始化數(shù)據(jù)庫(kù)
./scm_prepare_database.sh mysql cm root password
如果報(bào)找不到cm庫(kù),則create database cm;
server和agent分別啟動(dòng)服務(wù)
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server start
/opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent start
CDH安裝前核查服務(wù)啟動(dòng)情況
agent:
ps -ef|grep cloudera
root 17255 1 0 11:12 ? 00:00:05 /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/python /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/supervisord
root 17257 17255 0 11:12 ? 00:00:00 python2.7 /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/cmf-listener -l /opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-agent/cmf_listener.log /opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-agent/events
root 17460 17255 0 11:16 ? 00:00:34 python2.7 /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/flood
root 31658 1 2 13:06 ? 00:00:05 python2.7 /opt/cloudera-manager/cm-5.16.1/lib64/cmf/agent/build/env/bin/cmf-agent --package_dir /opt/cloudera-manager/cm-5.16.1/lib64/cmf/service --agent_dir /opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-agent --lib_dir /opt/cloudera-manager/cm-5.16.1/lib/cloudera-scm-agent --logfile /opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-agent/cloudera-scm-agent.log --daemon --comm_name cmf-agent --pidfile /opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-agent/cloudera-scm-agent.pid
?
正常是上面這四個(gè),如果cmf-agent未啟動(dòng),將supervisord kill掉再agent start。
cat /opt/cloudera-manager/cm-5.16.1/log/cloudera-scm-agent/supervisord.out
?
安裝建庫(kù)
?
create database hue DEFAULT CHARACTER SET utf8; grant all on hue.* TO 'hue'@'%' IDENTIFIED BY 'hue1';
create database hive DEFAULT CHARACTER SET utf8; grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
create database oozie DEFAULT CHARACTER SET utf8; grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
?
CDH安裝中途莫名失敗,可以重新再來(lái)一次
?
hive安裝報(bào)錯(cuò)
創(chuàng)建 Hive Metastore 數(shù)據(jù)庫(kù)表 步驟報(bào)錯(cuò)
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
拷貝驅(qū)動(dòng)到hive的lib目錄
for a in {1..3}; do scp /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-*.jar root@node$a:/opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hive/lib/ ; done
///oozie安裝包錯(cuò)找不到驅(qū)動(dòng)
注:這個(gè)很靠譜!以后一定要先設(shè)置好
拷貝驅(qū)動(dòng)到/usr/share/java/目錄,并且改名 && mv mysql-connector-java-5.1.41.jar mysql-connector-java.jar
///啟動(dòng)后好幾個(gè)服務(wù)報(bào)紅
點(diǎn)擊去逐個(gè)操作重啟
///hue LoadBalancer啟動(dòng)不了,提示Failed to find the Apache HTTPD executable.
LoadBalancer所在機(jī)器安裝httpd即可
yum -y install mod_ssl httpd
?
//添加新主機(jī),添加服務(wù)節(jié)點(diǎn)
所有主機(jī)界面有向集群添加主機(jī)按鈕
添加節(jié)點(diǎn)可以進(jìn)入集群——HBase等——實(shí)例——添加角色實(shí)例,選擇相應(yīng)實(shí)例到特定節(jié)點(diǎn)上。
?
?
?
官方參考文檔:https://www.cloudera.com/documentation/enterprise/latest/topics/configure_cm_repo.html
參考文檔:https://yq.aliyun.com/articles/341408
?
?
總結(jié)
以上是生活随笔為你收集整理的离线部署CDH5.16.1及各种坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MySQL提供了以下三种方法用于获取数据
- 下一篇: 网络爬虫+数据可视化