- 概述
- 文件下載
- 系統環境搭建
- 日志查看
- Q&A
- 參考
概述
CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop眾多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並集成了很多補丁,可直接用於生產環境。
Cloudera Manager則是為了便於在集群中進行Hadoop等大數據處理相關的服務安裝和監控管理的組件,對集群中主機、Hadoop、Hive、Spark等服務的安裝配置管理做了極大簡化。
文件下載
- Cloudera Manager
地址:http://archive.cloudera.com/cm5/cm/5/
這里下載的是5.11.0的版本,https://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.11.0_x86_64.tar.gz
- CDH安裝包
地址:http://archive.cloudera.com/cdh5/parcels
本文基於CentOS6,下載的parcels包及manifest文件對應的版本為el6,如果centos7,就用el7:
CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel
CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1
manifest.json
- JDBC
地址:http://download.softagency.net/MySQL/Downloads/Connector-J/
這里用的jdbc驅動版本是:mysql-connector-java-5.1.17.jar
一,環境搭建
- 硬件軟件要求:
我這5台機器node1,node2,node3,node4,node5。node5作為主節點master。配置:16g內存,16核,如果是自己虛擬機的話master至少8g,因為裝完集群(裝了8個應用組件)master的內存已用了7g多。
centos6.5 - 網絡配置(所有節點)
1.vi /etc/sysconfig/network修改hostname :NETWORKING=yesHOSTNAME=node1通過service network restart重啟網絡服務生效2. vi /etc/hosts,修改ip與主機名的對應關系192.168.101.71 node1192.168.101.72 node2192.168.101.73 node3192.168.101.74 node4192.168.101.79 node5
- 設置SSH無密碼訪問(所有節點)
1.生成公鑰私鑰ssh-keygen -t rsa或者 ssh-keygen -t rsa -f ~/.ssh/id_rsa2.將id_rsa.pub公鑰內容拷貝到機器A的authorized_keys文件中cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys3.其他主機的id_rsa.pub拷貝到同一台機器node5的authorized_keysssh-copy-id root@node5如果沒有ssh-copy-id 執行sudo yum -y install openssh-clients4.復制機器node5的authorized_keys文件拷貝到其它主機scp /home/.ssh/authorized_keys ubuntu@node1:/home/.ssh5.如果啟動無效果,需要修改ssh配置vim /etc/ssh/sshd_config
RSAAuthentication yes #啟用 RSA 認證PubkeyAuthentication yes #啟用公鑰私鑰配對認證方式AuthorizedKeysFile .ssh/authorized_keys #公鑰文件路徑(和上面生成的文
設置完之后記得重啟SSH服務,才能使剛才設置有效。
service sshd restart - 安裝Oracle Java(所有節點)
Linux可能自帶OpenJDK,但運行CDH5需要使用Oracle的JDK,需要Java 7以上版本的支持
卸載自帶的OpenJDK** 使用下述命令查詢相關的java包
rpm -qa | grep java
使用-e選項填入包名卸載
rpm -e --nodeps packageName
安裝oracle jdk 配置環境變量/etc/profile.再source使起生效這里不在贅述。 - 安裝配置MySQL(主節點)
通過yum install mysql-server安裝mysql服務器。chkconfig mysqld on設置開機啟動,並service mysqld start啟動mysql服務,設置root的初試密碼:mysqladmin -u root password '123456'。mysql -uroot -p進入mysql命令行,創建以下數據庫:#為hive建庫hivecreate database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;#activity monitorcreate database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;#為oozie建庫ooziecreate database oozieDEFAULT CHARSET utf8 COLLATE utf8_general_ci;#為hue建庫huecreate database hueDEFAULT CHARSET utf8 COLLATE utf8_general_ci;設置root授權訪問以上所有的數據庫:#授權root用戶在主節點擁有所有數據庫的訪問權限grant all privileges on *.* to 'root'@'n1' identified by 'xxxx' with grant option;flush privileges; - 關閉防火牆和SELinux(所有節點)
注意: 需要在所有的節點上執行,因為涉及到的端口太多了,臨時關閉防火牆是為了安裝起來更方便,安裝完畢后可以根據需要設置防火牆策略,保證集群安全。
關閉防火牆:
service iptables stop (臨時關閉) chkconfig iptables off (重啟后生效)
關閉SELINUX(實際安裝過程中發現沒有關閉也是可以的,不知道會不會有問題,還需進一步進行驗證):
setenforce 0 (臨時生效) 修改 /etc/selinux/config 下的 SELINUX=disabled (重啟后永久生效)
- 配置NTP服務(所有節點)
集群中所有主機必須保持時間同步,如果時間相差較大會引起各種問題,例如主機運行狀態不良等。 具體思路如下:
master節點作為ntp服務器與外界對時中心同步時間,隨后對所有datanode節點提供時間同步服務。
所有datanode節點以master節點為基礎同步時間。
所有節點安裝相關組件:yum install ntp。完成后,配置開機啟動:chkconfig ntpd on,檢查是否設置成功:chkconfig --list ntpd其中2-5為on狀態就代表成功。
主節點配置
在配置之前,先使用ntpdate手動同步一下時間,免得本機與對時中心時間差距太大,使得ntpd不能正常同步。這里選用103.226.213.30作為對時中心,ntpdate -u 103.226.213.30。
下面是國內最活躍的時間服務器地址:
server 0.cn.pool.ntp.org
server 0.asia.pool.ntp.org
server 3.asia.pool.ntp.org
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburstntp服務只有一個配置文件,配置好了就OK。 這里只給出有用的配置,不需要的配置都用#注掉,這里就不在給出:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap
server 103.226.213.30 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
配置文件完成,保存退出,啟動服務,執行如下命令:service ntpd start
檢查是否成功,用ntpstat命令查看同步狀態,出現以下狀態代表啟動成功:
synchronised to NTP server () at stratum 2
time correct to within 74 ms
polling server every 128 s
如果出現異常請等待幾分鍾,一般等待5-10分鍾才能同步。
配置ntp客戶端(所有子節點)
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
#這里是主節點的主機名或者ip
server node5
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
ok保存退出,請求服務器前,請先使用ntpdate手動同步一下時間:ntpdate -u node5 (主節點ntp服務器)
這里可能出現同步失敗的情況,請不要着急,一般是本地的ntp服務器還沒有正常啟動,一般需要等待5-10分鍾才可以正常同步。啟動服務:service ntpd start
因為是連接內網,這次啟動等待的時間會比master節點快一些,但是也需要耐心等待一會兒
二,Cloudera Manager安裝與集群配置
在上節已將環境配置完成。下面開始安裝CM和搭建集群。
1,主節點安裝CM
解壓:tar xzvf cloudera-manager*.tar.gz將解壓后的cm-5.9和cloudera目錄放到/opt目錄下。
建立數據庫:將下載好的mysql-connector-java-5.1.17.jar放到/opt/cm-5.11.0/share/cmf/lib/
初始化數據庫: /opt/cm-5.11.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode5 -uroot -p123456 --scm-host node5 scm scm scm
參數分別是:數據庫類型 數據庫名稱 -h數據庫主機名 -u數據庫用戶名 -p數據庫密碼--scm-host cmserver主機名 scm scm scm
2.agent配置
修改/opt/cm-5.9/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名。
同步Agent到其他所有節點: scp -r /opt/cm-5.11.0 root@node2:/opt/
在所有節點創建cloudera-scm用戶
useradd --system --home=/opt/cm-5.11.0/run/cloudera-scm-server/ --no-create-home -- shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
3.准備Parcels,用以安裝CDH5
將CHD5相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/目錄中(parcel-repo需要手動創建)。
相關的文件如下:
- CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel
-CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1
-manifest.json
最后將CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1,重命名為CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha,這點必須注意,否則,系統會重新下載CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel文件。
相關啟動腳本
主節點:通過/opt/cm-5.11.0/etc/init.d/cloudera-scm-server start啟動服務端。
所有節點(包括主節點):通過/opt/cm-5.11.0/etc/init.d/cloudera-scm-agent start啟動Agent服務。
我們啟動的其實是個service腳本,需要停止服務將以上的start參數改為stop就可以了,重啟是restart。
4,CDH5安裝配置
Cloudera Manager Server和Agent都啟動以后,就可以進行CDH5的安裝配置了。
這時可以通過瀏覽器訪問主節點的7180端口測試一下了(由於CM Server的啟動需要花點時間,這里可能要等待一會才能訪問),默認的用戶名和密碼均為admin:
可以看到,免費版本的CM5已經沒有原來50個節點數量的限制了。下面這圖我安裝好了就沒剪切,用別人的圖
各個Agent節點正常啟動后,可以在當前管理的主機列表中看到對應的節點。選擇要安裝的節點,點繼續
繼續,如果配置本地Parcel包無誤,那么下圖中的已下載,應該是瞬間就完成了,然后就是耐心等待分配過程就行了,這個過程的速度就取決於節點之間的傳輸速度。
當前受管:假如在安裝的時候出現問題,如網絡連接中斷,機器死機,繼續安裝的時候可能會出現查詢不到機器,並且根據ip搜索機器的時候,出現“當前受管”的狀態為“是”,安裝失敗的機器不能再選擇了。
至此,所有節點部署完成
下一步主機檢查,遇到以下問題:
第一個警告:
Cloudera 建議將 /proc/sys/vm/swappiness 設置為 10。當前設置為 60。使用 sysctl 命令在運行時更改該設置並編輯 /etc/sysctl.conf 以在重啟后保存該設置。
echo 10 > /proc/sys/vm/swappiness
這樣操作重啟機器還是還原,要永久改變
第二個警告,提示執行命令:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
執行完畢,重啟后,警告依然,暫時不處理
安裝服務
注意:這里開始,所有的服務,既可以通過下述自助來安裝一系列服務;也可以手動在CM管理頁面一個一個添加
之前安裝時選擇一次性安裝一系列服務,由於沒有新建hue數據庫導致hue服務安裝不上,所以后面選擇一個一個安裝,在前期搭建環境時這樣更好,起碼出現問題可以鎖定是哪個服務。
分步安裝服務步驟為:
點擊頁面上Cloudera MANAGER,回到主節點頁面
出現cluster1群集1,點擊下拉,選擇“添加服務”
HDFS,Hive, HUE,Oozie, YARN, ZOOKEEPER是核心Hadoop的幾個服務,分別安裝,由於這些節點存在依賴關系,需注意先后順序(當然,安裝時CM會警告),順序是:
Zookeeper, hdfs, yarn, hive, oozie, hue
注意:在安裝hive, hue和oozie時,要將MySQL驅動jar拷貝到相應位置
-
- 綠色:良好
- 黃色:運行不良
- 紅色:存在問題
查看日志
CM雖然配置麻煩,但日志齊全,每個操作,都能找到相應的運行日志,日志對於配合、調試和查看任務進度都有很大的幫助

Q&A
參考:
http://blog.csdn.net/myself_way/article/details/54864651
http://www.linuxidc.com/Linux/2016-06/132131.htm
http://blog.csdn.net/myself_way/article/details/54864651
http://blog.csdn.net/yizheyouye/article/details/53173912
https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_path_c.html