簡介
如果是新手,請嚴格按照步驟來做。當然還有其他安裝方式,這裏講的方式比較適合測試使用。
內容 | 版本 |
---|---|
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+
下載軟件包和數據包
我這裏提供兩種下載方式:
在下載的時候可以先把服務器基礎環境準備好
百度雲盤下載
推薦百度雲超級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
服務器環境準備
修改hostname及hosts
針對所有節點操作
爲了便於安裝過程中對各個服務器的訪問更易區分、更便捷,我們需要分別對各個服務器修改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
針對所有節點操作
關閉防火牆
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall開機啓動
firewall-cmd --state #查看默認防火牆狀態(關閉後顯示notrunning,開啓後顯示running)
關閉selinux:
vim /etc/selinux/config
找到SELINUX改爲:
SELINUX=disabled
ssh無密碼登錄
針對所有節點操作
先在master上執行:
ssh-keygen -t rsa #一路回車到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master #將公鑰拷貝到本機的authorized_keys上
再在其他節點分別執行以下命令:
ssh-keygen -t rsa #一路回車到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@master
#注意此處不變,將公鑰拷貝到master的authorized_keys上
在master上,將authorized_keys分發到其他節點服務器:
scp ~/.ssh/authorized_keys root@slave01:~/.ssh/
scp ~/.ssh/authorized_keys root@slave02:~/.ssh/
安裝ntp時間同步軟件
所有節點時間一致非常重要,要不然啓動Cloudera Manager服務後,後臺會報錯。
所有節點執行:
yum install ntp -y
安裝完成後,阿里雲的服務器會自動使用阿里雲的ntp服務器進行同步,故可不再進行下面的配置,直接進入2.6節,若其他沒有統一ntp服務器進行同步的,則還需要以下設置:
將master設置爲主服務器(在master節點操作):
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
查看同步狀態:
netstat -tlunp | grep ntp
所有子節點ntp加入開機啓動:
systemctl enable ntpd
設置slave到master 的同步(在slave節點操作):
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
所有節點重啓服務器:
reboot
分配安裝文件
主節點和子節點分別需要的文件整理如下:
主節點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
從節點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
針對所有節點操作
修改倉庫文件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 #如果列出的不是待安裝的版本,執行下面命令重試
yum clean allyum list | grep cloudera
切換到cm-and-jdk目錄下,執行
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節點操作
進入cloudera-manager-installer.bin文件目錄,給bin文件賦予可執行權限:
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的主機本身),點擊搜索,即可加載出所有主機。全選所有主機,並繼續。
這裏會出現我們之前cp過去的CDH版本,選擇並繼續。
如果之前的操作沒有問題,這裏將會很快完成
在選擇安裝的服務組合的時候,選擇自己需要的,如果不知道,全部安裝就行
這裏是最激動人心的時候
隨便找臺機器測試一下spark:
spark-shell
激動的敲了一個:
CDH啓動與關閉
CM Portal 地址:
關閉步驟:
在CM portal上關閉 cluster
在所有節點關閉CM agent:
service cloudera-scm-agent stop
在master節點關閉CM server:
service cloudera-scm-server stop
啓動步驟:
在所有節點啓動CM agent:
service cloudera-scm-agent start
在master節點啓動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
在所有的節點命令行執行:
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的安裝頁面顯示無法發現CDH ?
之前一直懷疑是流程步驟有問題,其實流程本身沒有問題,問題發生在流程的實施節點上:cdh文件損壞了;本來1.5G的大小,當時只有50M,我不記得原因了,但是太坑了。
我想到了權限問題;但是忽略了文件損壞問題:sha就是幹這個用的,當時應該考慮到使用sha來校驗一下文件。
如果cloudera發現能夠正常發現parcel,在server啓動後將會打出一條日誌:
SearchRepositoryManager-0:com.cloudera.server.web.cmf.search.components.SearchRepositoryManager: Finished constructing repo:2017-09-27T16:19:00.763Z
安裝CDH在拷貝parcel的時候發生異常:Exhausted available authentication methods
;
後來發現原來是因爲ssh的root用戶被我設置爲禁止遠程登錄;而CDH頁面嚮導中我還配置的用root用戶登錄
之後發現拷貝異常,總是聯網去下載agent包,但是agent都已經在各個節點了;後來發現agent的啓動是失敗的(在開始的步驟中能夠被自動發現的都不需要裝agent,需要通過手動輸入IP來進行發現的需要裝agent,怎麼裝?聯網),報錯顯示:ProtocolError: <ProtocolError for 127.0.0.1/RPC2: 401 Unauthorized>
;在網上搜索了一下,如下處理:
sudo ps -ef | grep supervisord
kill -9 PID
sudo ./cloudera-scm-agent restart
未完,重啓後發現:
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經歷如上的問題後,在自動發現的列表中有一些殭屍agent,會看到同hostname的多臺機器,有一個是正常通信,有的則是Unkonwn,無法刪掉,因爲不勾選,那麼正常通信的也不會勾選上。反正後來我改了一下hosts文件,莫名其妙的在勾選列表中消失了,但是遺憾的是正常通信的也沒了。安裝成功後,在Hosts頁面纔看到這些殭屍agent,此時再delete可以正常刪除。
Skipping start command because all roles are started or decommissioned or on decommissioned host.
cloudera的server停止後要稍等一會在啓動,因爲釋放內存需要一段時間;如果停止後立即就啓動將會發生一種情況,內存沒有釋放完,JVM的內存大量釋放和JVM的大量使用將會導致JVM頻繁的進行回收和釋放,導致JVM Pause以及World Stop
JAVA_HOME is not set and Java could not be found
具體原因不太清楚,最小化安裝了一個centos7,發現沒有jdk,不解。
在clouderea中添加了一個host,然後添加了一個spark nodemanager的角色,然後就悲劇了,總是抱JAVA_HOME is not set and Java could not be found的異常;即使手動拷貝了一個jdk1.8到上面,profile也配置了,仍然不好用。不解。
再看日誌的時候,發現安裝程序(cloudera的安裝程序)將會到幾個固定的地方查找,選一個,然後將jdk拷貝到該目錄下,問題解決
參考: