關於CDH和Cloudera Manager
CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop眾多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並集成了很多補丁,可直接用於生產環境。
Cloudera Manager則是為了便於在集群中進行Hadoop等大數據處理相關的服務安裝和監控管理的組件,對集群中主機、Hadoop、Hive、Spark等服務的安裝配置管理做了極大簡化。
環境說明
- 操作系統:Centos6.7 * 4:
bd-dev-cm1-240 172.31.217.240(主節點)
bd-dev-cm2-241 172.31.217.241
bd-dev-cm3-242 172.31.217.242
bd-dev-cm4-243 172.31.217.243
- Cloudera Manager:5.10
- CDH:5.10
安裝說明
官方共給出了3中安裝方式,建議使用第三種安裝方式。第三種方法對系統侵入性最小,最大優點可實現全離線安裝,而且重裝什么的都非常方便。后期的集群統一包升級也非常好。這也是我之所以選擇離線安裝的原因。
相關包的下載地址
Cloudera Manager下載地址:http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.10.0_x86_64.tar.gz
CDH安裝包地址:http://archive.cloudera.com/cdh5/parcels/5.10.0/,需要下載下面三個包:
- CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel
- CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha1
- manifest.json
准備工作
以下操作均需要(root)管理員權限。防火牆和SELinux均已全部關閉。
1、配置hosts(所有節點)
設置hostname,以bd-dev-cm1-240為例:
# hostname bd-dev-cm1-240
並使其永久生效:
# vim /etc/sysconfig/network
修改HOSTNAME=bd-dev-cm1-240
修改hosts表:
在每個節點上都應有一份hosts表,在之后的配置中,對應節點名稱使用hostname
# vim /etc/hosts
172.31.217.240 bd-dev-cm1-240
172.31.217.241 bd-dev-cm2-241
172.31.217.242 bd-dev-cm3-242
172.31.217.243 bd-dev-cm4-243
2、設置ssh無密碼登陸(所有節點)
在主節點上執行ssh-keygen -t rsa一路回車,生成密鑰對。
將公鑰添加到認證文件中:
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,
並設置authorized_keys的訪問權限:
# chmod 600 ~/.ssh/authorized_keys
scp文件到其他所有節點:
scp ~/.ssh/authorized_keys root@bd-dev-cm2-241:~/.ssh/
測試:在主節點上ssh bd-dev-cm2-241,正常情況下,不需要密碼就能直接連進去了。
3、安裝Oracle的Java(所有節點)
這里使用的jdk版本為1.8.0_111,我這里由於已經制作成rpm包放到了私有倉庫中,直接yum安裝:
# yum install es-jdk8 -y(包名是自定義的)
如果有需要建議可以去Oracle的官網下載jdk的rpm安裝包,這里就不贅述了。
這里安裝路徑為:/opt/programs/jdk1.8.0_111,這里需要配置一個全局的JAVA_HOME變量,執行命令:
# echo "JAVA_HOME=/opt/programs/jdk1.8.0_111" >> /etc/environment
並創建軟鏈接到:/usr/java/default
# ln -s /opt/programs/jdk1.8.0_111 /usr/java/default
驗證:正常情況下通過java -version可以看到jdk的版本信息。
4、安裝配置MySql(主節點)
通過yum install mysql-server安裝mysql服務器。chkconfig mysqld on設置開機啟動,並service mysqld start啟動mysql服務,並根據提示設置root的初試密碼:mysqladmin -u root password 'xxxx'。
mysql -uroot -pxxxx進入mysql命令行,創建以下數據庫:
#hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity oozie 如果需要的話
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity hue 如果需要的話
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
設置root授權訪問以上所有的數據庫:
grant all privileges on *.* to 'root'@'bd-dev-cm1-240' identified by 'xxxx' with grant option;
flush privileges;
5、配置NTP服務(所有節點)
集群中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。 這里選用172.31.217.173 作為時間服務器。
參考配置如下:
# cat /etc/ntp.conf
trict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
restrict 172.31.217.0 mask 255.255.255.0 nomodify notrap
server 172.31.217.173
server 0.centos.pool.ntp.org
server 1.centos.pool.ntp.org
server 2.centos.pool.ntp.org
server 172.31.217.173 # local clock
fudge 172.31.217.173 stratum 10
在所有節點啟動ntp服務:
# /etc/init.d/ntpd start
安裝Cloudera Manager
1、主節點解壓安裝
cloudera manager的目錄默認位置在/opt下,解壓:tar xzvf cloudera-manager*.tar.gz將解壓后的cm-5.10.0 和cloudera目錄放到/opt目錄下。
2、為Cloudera Manager 5建立數據庫
首先需要去MySql的官網下載JDBC驅動,http://dev.mysql.com/downloads/connector/j/,解壓后,找到mysql-connector-java-5.1.xx-bin.jar,放到/opt/cm-5.10.0/share/cmf/lib/中。
在主節點初始化CM5的數據庫:
# /opt/cm-5.10.0/share/cmf/schema/scm_prepare_database.sh mysql cm -h172.31.217.240 -uroot -pxxx --scm-host 172.31.217.240 scm scm scm
3、Agent配置
修改/opt/cm-5.10.0/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名,這里即為bd-dev-cm1-240。
4、同步Agent到其他節點
# scp -r /opt/cm-5.10.0 root@ip:/opt/
5、在所有節點創建cloudera-scm用戶
# useradd --system --home=/opt/cm5.10.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
6、准備Parcels,用以安裝CDH5
將CHD5相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/目錄中。
相關的文件如下:
- CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel
- CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha1
- manifest.json
最后將CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha1,重命名為CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel.sha,這點必須注意,否則,系統會重新下載CDH-5.10.0-1.cdh5.10.0.p0.41-el6.parcel 文件。
7、相關啟動腳本
通過/opt/cm-5.10.0/etc/init.d/cloudera-scm-server start啟動服務端。
通過/opt/cm-5.10.0/etc/init.d/cloudera-scm-agent start啟動Agent服務。 (所有節點都要啟動Agent服務,包括主節點)
我們啟動的其實是個service腳本,需要停止服務將以上的start參數改為stop就可以了,重啟是restart。
CDH5的安裝配置
Cloudera Manager Server和Agent都啟動以后,就可以進行CDH5的安裝配置了。
這時可以通過瀏覽器訪問主節點的7180端口測試一下了,默認的用戶名和密碼均為admin:
這里選擇免費版。可以看到,免費版本的CM5已經沒有原來50個節點數量的限制了。
各個Agent節點正常啟動后,可以在當前管理的主機列表中看到對應的節點。選擇要安裝的節點,點繼續。
接下來,出現以下包名,說明本地Parcel包配置無誤,直接點繼續就可以了。
點擊,繼續,如果配置本地Parcel包無誤,那么下圖中的已下載,應該是瞬間就完成了,然后就是耐心等待分配過程就行了,這個過程的速度就取決於節點之間的傳輸速度。
假如在安裝的時候出現問題,如網絡連接中斷,機器死機,繼續安裝的時候可能會出現查詢不到機器,先停止所有服務。清除數據庫。
1> 刪除Agent節點的UUID
# rm -rf /opt/cm-5.10.0/lib/cloudera-scm-agent/*
2> 清空主節點CM數據庫
進入主節點的Mysql數據庫,然后drop database cm;
3> 在主節點上重新初始化CM數據庫
# /opt/cm-5.10.0/share/cmf/schema/scm_prepare_database.sh mysql cm -h172.31.217.240 -uroot -pxxx --scm-host 172.31.217.240 scm scm scm
啟動server和agent。等待一下,重新連接訪問主節點:7180即可,並重新進行以上步驟。
接下來是主機檢查,可能會遇到以下問題:
Cloudera 建議將 /proc/sys/vm/swappiness 設置為最大值 10。當前設置為 60。使用 sysctl 命令在運行時更改該設置並編輯 /etc/sysctl.conf,以在重啟后保存該設置。您可以繼續進行安裝,但 Cloudera Manager 可能會報告您的主機由於交換而運行狀況不良。以下主機將受到影響。通過echo 10 > /proc/sys/vm/swappiness即可解決。
接下來是選擇安裝服務,我這里先選擇所有服務:
服務配置,我這里選擇保持默認(Cloudera Manager會根據機器的配置自動進行配置,如果需要特殊調整,自行進行設置就可以了):
接下來是數據庫的設置,先對之前建的庫(hive、hue、oozie)進行授權:
CREATE USER 'hive'@'172.31.217.240' IDENTIFIED BY 'hive';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'172.31.217.240';
CREATE USER 'oozie'@'172.31.217.240' IDENTIFIED BY 'oozie';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'172.31.217.240';
CREATE USER 'hue'@'172.31.217.240' IDENTIFIED BY 'hue';
GRANT ALL PRIVILEGES ON hue.* TO 'hue'@'172.31.217.240';
測試連接中,hive和oozie已經沒有問題,hue的連接會有Unexpected error. Unable to verify database connection的報錯,在hue安裝的機器上安裝一下python-lxml,即yum install -y python-lxml即可。
下面是集群設置的審查頁面,這里地方可以考慮修改一些組件的數據存儲目錄,我這邊數據的存儲目錄都放在opt下:
終於到安裝各個服務的地方了,注意,這里安裝Hive,或oozie的時候可能會報錯,因為我們使用了MySql作為hive的元數據存儲,hive默認沒有帶mysql的驅動,通過以下命令拷貝一個就行了:
# cp /opt/cm-5.10.0/share/cmf/lib/mysql-connector-java-*.jar /opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/hive/lib/
# cp /opt/cm-5.10.0/share/cmf/lib/mysql-connector-java-*.jar /opt/cloudera/parcels/CDH-5.10.0-1.cdh5.10.0.p0.41/lib/oozie/lib/
# cp /opt/cm-5.10.0/share/cmf/lib/mysql-connector-java-*.jar /var/lib/oozie/
等待一會兒,安裝完畢:
可以看到服務已經都啟動了,基本的監控也已經有了,剩余的工作就是根據自己的需求調整相關配置和閾值:
參考資料
http://www.cnblogs.com/jasondan/p/4011153.html
https://www.cloudera.com/documentation/enterprise/5-10-x/topics/cm_ig_install_path_c.htm