關於CDH和ClouderaManager
CDH (Cloudera's Distribution, includingApache Hadoop),是Hadoop衆多分支中的一種,由Cloudera維護,基於穩定版本的ApacheHadoop構建,並集成了很多補丁,可直接用於生產環境。
Cloudera Manager(本文以下簡稱爲CM)則是爲了便於在集羣中進行Hadoop等大數據處理相關的服務安裝和監控管理的組件,對集羣中主機、Hadoop、Hive、Spark等服務的安裝配置管理做了極大簡化。
環境準備
服務器環境:Linux物理機
服務器配置:內存:128G,CPU:40Core
操作系統:CentOS 6.5 x64
Cloudera Manager:5.8.0
CDH: 5.8.0
前期環境準備操作:
打通SSH
配置Hosts
關閉SELINUX
關閉防火牆
NTP(可選)
jdk安裝
MySql安裝
IP對應的主機名
10.10.161.101 master
10.10.161.102 slave1
10.10.161.103 slave2
對應的CM角色
CM的主節點:master
CM的子節點:master,slave1,slave2
下載安裝包
CM的安裝包
下載地址:
http://archive.cloudera.com/cm5/cm/5/
對應的文件是:
cloudera-manager-el6-cm5.8.0_x86_64.tar.gz
本地源的安裝包
由於是離線安裝,需要配置本地源,需要下載相關的包,下載地址是:
http://archive-primary.cloudera.com/cdh5/parcels/5.8.0/
由於系統是CentOS6.5,所以對應的文件是:
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
manifest.json
jdk的rpm包
地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jdk-8u102-linux-x64.rpm
mysql connector包
由於我的CM以及其他CDH組件存儲元數據等信息使用的是mysql,所以此處需要準備jdbc連接mysql相關的包,如果使用其他的數據庫,請準備相對應的包
mysql-connector-java-5.1.39.jar
由於此次安裝mysql我使用的是yum的方式,所以此處未單獨下載相關的軟件包,另外,建議使用yum或者rpm的方式安裝mysql以及jdk,這樣jdk以及mysql會安裝到默認位置上,由於CM自身機制的問題,如果這兩個軟件未安裝到默認的位置上會導致許多額外的配置以及很多不期而遇的問題
關閉SELINUX以及防火牆
防火牆會引起hadoop相關組件通訊的各種異常,需關閉防火牆。用root用戶權限登錄進行操作:
1 關閉防火牆:
service iptables stop
驗證:service iptables status
service iptables stop (臨時關閉)
chkconfig iptables off (重啓後生效)
2 關閉selinux:
查看SELinux狀態:
1、/usr/sbin/sestatus -v ##如果SELinux status參數爲enabled即爲開啓狀態
SELinux status: enabled
2、getenforce ##也可以用這個命令檢查
關閉SELinux:
1、臨時關閉(不用重啓機器):
setenforce 0 ##設置SELinux 成爲permissive模式
##setenforce 1 設置SELinux 成爲enforcing模式
2、修改配置文件需要重啓機器:
修改/etc/selinux/config 文件
將SELINUX=enforcing改爲SELINUX=disabled
重啓機器即可
修改/etc/hosts
vi /etc/hosts
保存退出
SSH無密碼登陸
1:ssh-keygen -trsa
連續3個回車,不必輸入,生成密鑰
2:ssh-copy-id -i /root/.ssh/id_rsa.pub root@master
把本機的公鑰追到master的.ssh/authorized_keys 裏
3:在每臺機器上都對其他機器重複執行第2步,直到所有機器都能相互免密碼登陸
安裝NTP服務器
由於非必須此處我未安裝,感興趣或者需要的同學就去問下度娘吧
rpm安裝jdk
rpm -ivh jdk-8u102-linux-x64.rpm
配java環境變量
java -version來檢測jdk是否安裝成功
yum安裝mysql
建議將mysql安裝到CM的主服務器上
安裝之前檢查下機器是否已經安裝mysql:
rpm -qa|grep mysql
效果如下:
包含圖上所示4個包就正確了,Mysql包不能多裝,否則會在安裝oozie hive等會出現鏈接拒絕問題
如果多了使用下面的命令卸載:
rpm -e xxxxxxxx
如果少了使用下面的命令安裝,少那個就安裝哪個:
yum install -y mysql-devel
yum install -y mysql-server
yum install -y mysql-libs
yum install -y mysql
創建mysql數據庫
1) . --hive 數據庫
create database hive DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
2) . --集羣監控數據庫
create database amon DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
3) . --hue 數據庫
create database hue DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
4) . --oozie 數據庫
create database oozie DEFAULT CHARSET utf8 COLLATEutf8_general_ci;
爲新創建的庫賦權限
如果對mysql數據庫權限要求比較高的話可以手動單獨處理
如果要求不是很高,直接使用以下命令即可:
grant all privileges on *.* to 'root'@'%' identified by 'XXXX' with grant option;
flush privileges;
語句中的“XXXX”是root用戶的登錄密碼
安裝CM
將cloudera-manager-el6-cm5.8.0_x86_64.tar.gz上傳到CM的主節點的/opt/目錄下並解壓縮,解壓後會生成cloudera以及cm-5.8.0兩個文件夾。
由於cloudera自身機制的問題,如果解壓後的位置不在/opt/下會導致許多額外的配置以及很多不期而遇的問題
爲每個節點都要創建用戶
useradd --system--home=/opt/cm-5.8.0/run/cloudera-scm-server --no-create-home--shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
在 CM的主節點上修改sudoers文件
vim /etc/sudoers
在root ALL=(ALL) ALL後面增加
cloudera-scm ALL=(ALL) NOPASSWD: ALL
此處的配置是爲了部分避免後面頁面配置過程中發生配置無法下發到agent端的問題而進行的配置
在CM的主節點上部署mysql connector包
將mysql-connector-java-5.1.39-bin.jar放到/opt/cm-5.8.0/share/cmf/lib/下
修改agent配置文件
vim /opt/cm-5.8.0/etc/cloudera-scm-agent/config.ini
將server_host配置項由localhost改成master(CM的主節點)
保存退出
將cm-5.8.0 scp到其讓機器opt文件夾下
scp –r cm-5.8.0 slave1:/opt/
scp –r cm-5.8.0 slave2:/opt/
初始化CM數據庫
/opt/cm-5.8.0/share/cmf/schema/scm_prepare_database.shmysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
CM的主節點配置本地源
將已下載完畢的 CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel,
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1,
manifest.json
並將他們放到 /opt/cloudera/parcel-repo下,並把CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1重命名爲CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha
CM主節點啓動server
/opt/cm-5.8.0/etc/init.d/cloudera-scm-server start
查看日誌
tail -f/opt/cm-5.8.0/log/cloudera-scm-server/cloudera-scm-server.log
CM子節點創建agent所需的文件夾
mkdir -p /opt/cm-5.8.0/run
CM子節點啓動agent
/opt/cm-5.8.0/etc/init.d/cloudera-scm-agent start
頁面配置
登錄地址:10.10.161.101(CM主節點):7180
默認用戶名密碼:admin/admin
登錄界面
簽了免責條款,繼續
免費版本即可以滿足基本需求,如果有特別需求或者土豪可以選擇其他,點擊繼續
CM可以管理的CDH組件的列表,點擊繼續
主機配置
如果agent進程正常啓動,此處就可以發現當前已經管理的主機,全選後,點擊繼續
此處選擇使用Parcel,由於我們已經構建了本地源,所以有CDH-5.8.0-1.cdh5.8.0.p0.42這個選項,如果此處未出現這個選項,說明你本地源搭建有問題,其他Parcel暫時可以不選,後續可以再處理,選中後點擊繼續
點擊繼續後出現此界面,顯示已下載100%說明本地源構建成功,不需要再額外下載了
此處CM會自動將本地源的相關信息在各個agent上分配,解壓以及激活,此處需要等待一些時間,時間根據服務器性能而異,我的物理機大約需要幾分鐘,虛擬機的話大約需要十幾或者幾十分鐘,耐心等待,全部完畢後,點擊繼續
CM自動爲各個服務器進行體檢
體檢結果出來了,中間這兩個警告可以忽略,CM會自動幫我們擺平的,如果有其他的問題,根據問題提示給予解決,點擊完成
集羣配置
各種不同的Hadoop搭配,魚丸和粗麪都有,根據個人需求自己選擇,也支持自定義,本人選擇了核心hadoop,點擊繼續
此處爲各個CDH組件分配服務器,根據需求分配即可,我的經驗是絕大部分可以默認,zookeeper以及hdfs的secondarynamenode需要改一下即可,點擊繼續
測試CDH組件與元數據存放的RDBMS的連通性
填完相關的信息後,點擊測試鏈接,測試通過後,點擊繼續
此處是安裝的CDH組件的配置信息,如果沒有特定的配置或者特殊的要求,可以先都用默認值,後續再界面中可以修改,配置完畢後,點擊繼續
集羣各個組件初始化,耐心等待,初始化完畢後,點擊完成即大功告成
CM卸載
由於CM沒有提供官方的卸載工具,加上CM的結構複雜,文件存放分散,所以CM的卸載是件風險很高的事情,很有可能卸載不乾淨而導致二次安裝出現各種奇怪的問題,所以不推薦進行卸載。
此處的卸載方法僅供參考。下面所有的操作除了停止agent以及server進程外其餘在所有的服務器上全部執行
關閉集羣中的所有服務
這個可以通過clouder manger 主頁關閉集羣
卸載
[root@master ~]#/usr/share/cmf/uninstall-cloudera-manager.sh
在某些版本中沒有這個腳本,可以忽略,繼續下面的操作
在所有的CM的agent上執行
/opt/cm-5.8.0/etc/init.d/cloudera-scm-agent stop
在CM的主節點上執行
/opt/cm-5.8.0/etc/init.d/cloudera-scm-server stop
一下都是所有要卸載的集羣均要執行清除工作:
[root@master ~]# rm -rf /usr/share/cmf /var/lib/cloudera*/var/cache/yum/x86_64/6/cloudera* /var/log/cloudera* /var/run/cloudera* /etc/cloudera*
卸載安裝包
[root@slave1 ~]# rpm -qa | grep cloudera
[root@slave1 ~]# for f in `rpm -qa | grep cloudera ` ; do rpm -e ${f} ; done (如果有保存,在執行一遍)
清除安裝文件
rm -rf/var/lib/hadoop-* /var/lib/impala /var/lib/solr /var/lib/zookeeper /var/lib/hue/var/lib/oozie /var/lib/pgsql /var/lib/sqoop2 /data/dfs/ /data/impala/ /data/yarn/ /dfs//impala/ /yarn/ /var/run/hadoop-*//var/run/hdfs-*/ /usr/bin/hadoop* /usr/bin/zookeeper* /usr/bin/hbase*/usr/bin/hive* /usr/bin/hdfs /usr/bin/mapred /usr/bin/yarn /usr/bin/sqoop*/usr/bin/oozie /etc/hadoop* /etc/zookeeper* /etc/hive* /etc/hue /etc/impala/etc/sqoop* /etc/oozie /etc/hbase* /etc/hcatalog
//只刪除hadoop系列的,不要刪除其他軟件的,否則其他軟件的版本控制會被破壞
[root@master alternatives]# rm -rf ` find/var/lib/alternatives/* ! -name "mta" ! -name "print" !-name "zlibrary-ui" -mtime -3`
[root@master alternatives]# rm -rf /etc/alternatives/*
殺死相關進程
for u in hdfs mapred cloudera-scm hbase hue zookeeperoozie hive impala flume; do sudo kill $(ps -u $u -o pid=); done
刪除cm相關的所有文件
rm –rf /opt/cloudera/
rm –rf /opt/cm-5.8.0/
如果中途提示某個文件或者文件夾被佔用,則使用umount命令進行處理,處理後繼續刪除
例如umount /opt/cm-5.8.0/run/cloudera-scm-agent/process/
到此卸載完畢