簡介
如果是新手,請嚴格按照步驟來做。當然還有其他安裝方式,這里講的方式比較適合測試使用。
| 內容 | 版本 |
|---|---|
| CentOS | 7 64位 |
| JDK | 1.7 |
| Cloudera Manager | 5.14.1 |
本次安裝一共使用3臺服務器,主要用戶測試。
| 服務名 | 內網IP | 用途 |
|---|---|---|
| master | 192.168.254.130 | 主,按照CM |
| slave01 | 192.168.254.210 | 從 |
| slave02 | 192.168.254.211 | 從 |
可以搭建三臺虛擬機,其中master內存在8G以上,slave內存在4G以上,每個虛機的硬盤空間100G+
下載軟件包和數據包
我這里提供兩種下載方式:
在下載的時候可以先把服務器基礎環(huán)境準備好
百度云盤下載
推薦百度云超級VIP賬號的用戶,里面包含所有的安裝包和數據包
鏈接: https://pan.baidu.com/s/1JC-vpYH7SWBwju9C8DkVPw 密碼: 26v8
官方下載
這是一個漫長的過程,試過才知道爽。
下載CM和jdk軟件包
訪問:http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/
把上面的所有rpm包都下載回來本地,下載速度慢可以使用axel多線程下載,如果沒有裝axel,也可以使用 wget -b后臺下載
我的相關下載都放在 /data/soft下,我的Cloudera Manager 5.14.1的下載放在 /data/soft/cm5.14.1,所以新建目錄并進入目錄:
mkdir -p /data/soft/cm5.14.1/cm-and-jdk
cd /data/soft/cm5.14.1/cm-and-jdk
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-agent-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-daemons-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-server-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/cloudera-manager-server-db-2-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/enterprise-debuginfo-5.14.1-1.cm5141.p0.1.el7.x86_64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/jdk-6u31-linux-amd64.rpm
wget -b http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/RPMS/x86_64/oracle-j2sdk1.7-1.7.0+update67-1.x86_64.rpm
下載cloudera-manager安裝文件
訪問:http://archive.cloudera.com/cm5/installer/5.14.1/
下載cloudera-manager-installer.bin
cd /data/soft/cm5.14.1/
wget http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo
下載rpm倉庫文件
wget http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo
下載parcel
這個比較大,放下服務器慢慢下吧
mkdir -p /data/soft/cm5.14.1/parcel
cd /data/soft/cm5.14.1/parcel
wget -b http://archive.cloudera.com/cdh5/parcels/5.14.0.24/CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel
wget -b http://archive.cloudera.com/cdh5/parcels/5.14.0.24/CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1
服務器環(huán)境準備
修改hostname及hosts
針對所有節(jié)點操作
為了便于安裝過程中對各個服務器的訪問更易區(qū)分、更便捷,我們需要分別對各個服務器修改hostname及hosts
hostnamectl --static set-hostname master
hostnamectl --static set-hostname slave01
hostnamectl --static set-hostname slave02
修改hosts:
vim /etc/hosts
根據自己的3臺服務器IP地址,在最后面增加:
192.168.254.130 master
192.168.254.210 slave01
192.168.254.211 slave02
重啟機器
reboot
關閉防火墻和selinux
針對所有節(jié)點操作
關閉防火墻
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啟動
firewall-cmd --state #查看默認防火墻狀態(tài)(關閉后顯示notrunning,開啟后顯示running)
關閉selinux:
vim /etc/selinux/config
找到SELINUX改為:
SELINUX=disabled
ssh無密碼登錄
針對所有節(jié)點操作
先在master上執(zhí)行:
ssh-keygen -t rsa #一路回車到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master #將公鑰拷貝到本機的authorized_keys上
再在其他節(jié)點分別執(zhí)行以下命令:
ssh-keygen -t rsa #一路回車到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master
#注意此處不變,將公鑰拷貝到master的authorized_keys上
在master上,將authorized_keys分發(fā)到其他節(jié)點服務器:
scp ~/.ssh/authorized_keys root@slave01:~/.ssh/
scp ~/.ssh/authorized_keys root@slave02:~/.ssh/
安裝ntp時間同步軟件
所有節(jié)點時間一致非常重要,要不然啟動Cloudera Manager服務后,后臺會報錯。
所有節(jié)點執(zhí)行:
yum install ntp -y
安裝完成后,阿里云的服務器會自動使用阿里云的ntp服務器進行同步,故可不再進行下面的配置,直接進入2.6節(jié),若其他沒有統(tǒng)一ntp服務器進行同步的,則還需要以下設置:
將master設置為主服務器(在master節(jié)點操作):
vim /etc/ntp.conf
內容如下:
driftfile /var/lib/ntp/ntp.drift #草稿文件
# 允許內網其他機器同步時間
restrict 192.168.137.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# 中國這邊最活躍的時間服務器 : [http://www.pool.ntp.org/zone/cn](http://www.pool.ntp.org/zone/cn)
server 210.72.145.44 perfer # 中國國家受時中心
server 202.112.10.36 # 1.cn.pool.ntp.org
server 59.124.196.83 # 0.asia.pool.ntp.org
# allow update time by the upper server
# 允許上層時間服務器主動修改本機時間
restrict 210.72.145.44 nomodify notrap noquery
restrict 202.112.10.36 nomodify notrap noquery
restrict 59.124.196.83 nomodify notrap noquery
# 外部時間服務器不可用時,以本地時間作為時間服務
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
重啟ntpd服務:
systemctl ntpd restart
查看同步狀態(tài):
netstat -tlunp | grep ntp
所有子節(jié)點ntp加入開機啟動:
systemctl enable ntpd
設置slave到master 的同步(在slave節(jié)點操作):
vim /etc/ntp.conf
內容如下:
driftfile /var/lib/ntp/ntp.drift # 草稿文件
statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# 讓NTP Server為內網的ntp服務器
server 192.168.137.110
fudge 192.168.137.110 stratum 5
# 不允許來自公網上ipv4和ipv6客戶端的訪問
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
重啟ntpd服務:
systemctl ntpd restart
手動同步:
ntpdate -u master
所有節(jié)點重啟服務器:
reboot
分配安裝文件
主節(jié)點和子節(jié)點分別需要的文件整理如下:
主節(jié)點master,所需文件:
cloudera-manager-agent-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-daemons-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-server-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-server-db-2-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
enterprise-debuginfo-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-installer.bin
cloudera-manager.repo
CDH-5.14.1-1.cdh5.14.1.p0.2-el7.parcel
CDH-5.14.1-1.cdh5.14.1.p0.2-el7.parcel.sha1
從節(jié)點slave01、slave02,所需文件:
cloudera-manager-agent-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager-daemons-5.14.1-1.cm5141.p0.2.el7.x86_64.rpm
cloudera-manager.repo
使用scp命令分配所需要的安裝文件
安裝Cloudera Manager
至此,所有設置完成。開始Cloudera Manager安裝吧!
安裝 cm-and-jdk
針對所有節(jié)點操作
修改倉庫文件cloudera-manager.repo,把版本號加上
[cloudera-manager]
name = Cloudera Manager
baseurl = https://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.14.1/ #主要改這里的版本號
gpgkey = https://archive.cloudera.com/redhat/cdh/RPM-GPG-KEY-cloudera
gpgcheck = 1
驗證repo文件是否起效
yum list | grep cloudera #如果列出的不是待安裝的版本,執(zhí)行下面命令重試
yum clean allyum list | grep cloudera
切換到cm-and-jdk目錄下,執(zhí)行
yum localinstall --nogpgcheck *.rpm
設置java路徑:
vi /etc/profile
在該文件末尾添加以下行
JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
檢查安裝:
java -version
下面針對master節(jié)點操作
進入cloudera-manager-installer.bin文件目錄,給bin文件賦予可執(zhí)行權限:
chmod +x ./cloudera-manager-installer.bin
運行:
./cloudera-manager-installer.bin --skip_repo_package=1
如果提示需要刪除配置文件,則刪除該文件
rm -rf /etc/cloudera-scm-server/db.properties
相同配置下順利安裝時間在1分鐘內即可完成。
然后我們在web瀏覽器訪問 http://192.168.254.130:7180/,看是否能打開頁面即可,先不要進行登錄操作。
注意:chd server服務器啟動需要一些時間,等1分鐘左右。
如果能訪問,那證明 cloudera manager安裝正常。
安裝CDH
制作本地parcel
前面完成cloudera manager安裝之后master會在/opt目錄下生成cloudera文件夾,將之前下載好的CDH-*文件移動到parcel-repo文件夾中
cp CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel /opt/cloudera/parcel-repo/
cp CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.14.0-1.cdh5.14.0.p0.24-el7.parcel.sha #注意這里有重命名
將cloudera manager的用戶授權給/opt和日志目錄:
chown -R cloudera-scm.cloudera-scm /var/lib/cloudera-scm-server
chown cloudera-scm.cloudera-scm /opt -R
chown cloudera-scm.cloudera-scm /var/log/cloudera-scm-agent -R
重啟cloudera-scm-server(重要)
/etc/init.d/cloudera-scm-server restart
重啟速度較慢,約1分鐘后訪問 http://192.168.254.130:7180/ 登陸,賬號密碼 admin
選擇免費版本,一路next開始安裝。
基本默認就行
在為CDH集群安裝指定主機的時候寫
master
slave01
slave02

這里需要填寫我們集群定義的ip或者服務器名稱(包括安裝CM的主機本身),點擊搜索,即可加載出所有主機。全選所有主機,并繼續(xù)。

這里會出現我們之前cp過去的CDH版本,選擇并繼續(xù)。


如果之前的操作沒有問題,這里將會很快完成

在選擇安裝的服務組合的時候,選擇自己需要的,如果不知道,全部安裝就行

這里是最激動人心的時候
隨便找臺機器測試一下spark:
spark-shell

激動的敲了一個:

CDH啟動與關閉
CM Portal 地址:
關閉步驟:
在CM portal上關閉 cluster
在所有節(jié)點關閉CM agent:
service cloudera-scm-agent stop
在master節(jié)點關閉CM server:
service cloudera-scm-server stop
啟動步驟:
在所有節(jié)點啟動CM agent:
service cloudera-scm-agent start
在master節(jié)點啟動CM server:
service cloudera-scm-server start
在CM portal上啟動 cluster
查看啟動日志:
/var/log/cloudera-scm-server/cloudera-scm-server.log
如果是3臺機器一般會出現錯誤:
在CM console中將副本設為2:
dfs.replication=2
在所有的節(jié)點命令行執(zhí)行:
hadoop fs -setrep 2 /
安裝要點:
- 仔細,認真,嚴格按照步驟
- 常見問題:網絡,防火墻等主機設置
- 碰到問題:查看日志&官網&百度
cloudera JDBC Driver com.mysql.jdbc.Driver not found.
將oracle的mysql的jar包放置到/usr/share/java/mysql-connector-java.jar路徑下即可,注意修改jar包名稱;
切記除了要下載parcel文件之外,還有manifest.json文件,否則在選擇安裝版本界面,cloudera無法識別parcel的版本。
還有需要對于sha1文件進行改名:*.parcel.sha1 -> *.parcel.sha
為什么CDH的安裝頁面顯示無法發(fā)現CDH ?
之前一直懷疑是流程步驟有問題,其實流程本身沒有問題,問題發(fā)生在流程的實施節(jié)點上:cdh文件損壞了;本來1.5G的大小,當時只有50M,我不記得原因了,但是太坑了。
我想到了權限問題;但是忽略了文件損壞問題:sha就是干這個用的,當時應該考慮到使用sha來校驗一下文件。
如果cloudera發(fā)現能夠正常發(fā)現parcel,在server啟動后將會打出一條日志:
SearchRepositoryManager-0:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: Finished constructing repo:2017-09-27T16:19:00.763Z
安裝CDH在拷貝parcel的時候發(fā)生異常:Exhausted available authentication methods;
后來發(fā)現原來是因為ssh的root用戶被我設置為禁止遠程登錄;而CDH頁面向導中我還配置的用root用戶登錄
之后發(fā)現拷貝異常,總是聯網去下載agent包,但是agent都已經在各個節(jié)點了;后來發(fā)現agent的啟動是失敗的(在開始的步驟中能夠被自動發(fā)現的都不需要裝agent,需要通過手動輸入IP來進行發(fā)現的需要裝agent,怎么裝?聯網),報錯顯示:ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>;在網上搜索了一下,如下處理:
sudo ps -ef | grep supervisord
kill -9 PID
sudo ./cloudera-scm-agent restart
未完,重啟后發(fā)現:
Error, CM server guid updated, expected d6c22714-0175-4a40-ace6-db92b7417a40, received 613b2c09-88f6-41fe-9424-41601be40310
原來還需要將cm/lib/cloudera-scm-agent/下面的cm_guid進行清除;這一點讓我想到了cloudera數據遷移的時候需要做的事情,需要將同目錄下的uuid進行刪除;
在安裝的過程中還有一個問題一直困擾我,就是僵尸agent,在agent經歷如上的問題后,在自動發(fā)現的列表中有一些僵尸agent,會看到同hostname的多臺機器,有一個是正常通信,有的則是Unkonwn,無法刪掉,因為不勾選,那么正常通信的也不會勾選上。反正后來我改了一下hosts文件,莫名其妙的在勾選列表中消失了,但是遺憾的是正常通信的也沒了。安裝成功后,在Hosts頁面才看到這些僵尸agent,此時再delete可以正常刪除。
Skipping start command because all roles are started or decommissioned or on decommissioned host.
cloudera的server停止后要稍等一會在啟動,因為釋放內存需要一段時間;如果停止后立即就啟動將會發(fā)生一種情況,內存沒有釋放完,JVM的內存大量釋放和JVM的大量使用將會導致JVM頻繁的進行回收和釋放,導致JVM Pause以及World Stop
JAVA_HOME is not set and Java could not be found
具體原因不太清楚,最小化安裝了一個centos7,發(fā)現沒有jdk,不解。
在clouderea中添加了一個host,然后添加了一個spark nodemanager的角色,然后就悲劇了,總是抱JAVA_HOME is not set and Java could not be found的異常;即使手動拷貝了一個jdk1.8到上面,profile也配置了,仍然不好用。不解。
再看日志的時候,發(fā)現安裝程序(cloudera的安裝程序)將會到幾個固定的地方查找,選一個,然后將jdk拷貝到該目錄下,問題解決
參考: