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/
CDH安裝包地址:http://archive.cloudera.com/cdh5/parcels/latest/
由於我們的操作系統為CentOS6.5,需要下載以下文件:
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1
manifest.json
JDBC:http://download.softagency.net/MySQL/Downloads/Connector-J/
准備工作:系統環境搭建(阿里雲平台)
以下操作均需要(root)管理員權限
1.網絡配置(所有節點)
修改主機名:vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=cdh1
NETWORKING_IPV6=no
PEERNTP=no
通過service network restart
重啟網絡服務
修改ip與主機名的對應關系:vim /etc/hosts
192.168.1.101 cdh1
192.168.1.102 cdh2
192.168.1.103 cdh3
2.打通SSH,設置ssh無密碼登陸(所有節點)
執行ssh-keygen -t rsa
,一路回車,生成無密碼的密鑰對。
將公鑰添加到認證文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
,並設置authorized_keys的訪問權限:chmod 600 ~/.ssh/authorized_keys
。
通過scp
命令將各節點的認證文件拷貝到所有其他節點使得各節點能夠相互訪問。
3.安裝Oracle的Java(所有節點)
CentOS自帶OpenJdk,不過運行CDH5需要使用Oracle的JDK,需要Java 7的支持。
卸載自帶的OpenJdk,使用rpm -qa | grep java
查詢java相關的包,使用rpm -e --nodeps 包名
卸載之。
去Oracle的官網下載jdk的rpm安裝包,並使用rpm -ivh 包名
安裝,最后配置環境變量。
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;
設置root授權訪問以上所有的數據庫:
#授權root用戶在主節點擁有所有數據庫的訪問權限
grant all privileges on *.* to 'root'@'cdh1' identified by 'xxxx' with grant option;flush privileges;
5.關閉防火牆和SELinux
注意: 需要在所有的節點上執行,因為涉及到的端口太多了,臨時關閉防火牆是為了安裝起來更方便,安裝完畢后可以根據需要設置防火牆策略,保證集群安全。
關閉防火牆:
service iptables stop (臨時關閉)
chkconfig iptables off (重啟后生效)
關閉SELINUX(實際安裝過程中發現沒有關閉也是可以的,不知道會不會有問題,還需進一步進行驗證):
setenforce 0 (臨時生效)
修改 /etc/selinux/config 下的 SELINUX=disabled (重啟后永久生效)
6.所有節點配置NTP服務
集群中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。 具體思路如下:
master節點作為ntp服務器與外界對時中心同步時間,隨后對所有datanode節點提供時間同步服務。
所有datanode節點以master節點為基礎同步時間。
所有節點安裝相關組件:yum install ntp
。完成后,配置開機啟動:chkconfig ntpd on
,檢查是否設置成功:chkconfig --list ntpd
其中2-5為on狀態就代表成功。
主節點配置
在配置之前,先使用ntpdate手動同步一下時間,免得本機與對時中心時間差距太大,使得ntpd不能正常同步。這里選用65.55.56.206作為對時中心,ntpdate -u 65.55.56.206
。
ntp服務只有一個配置文件,配置好了就OK。 這里只給出有用的配置,不需要的配置都用#注掉,這里就不在給出:
driftfile /var/lib/ntp/drift
restrict 127.0.0.1restrict -6 ::1
restrict default nomodify notrap
server 65.55.56.206 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
配置文件完成,保存退出,啟動服務,執行如下命令:service ntpd start
檢查是否成功,用ntpstat
命令查看同步狀態,出現以下狀態代表啟動成功:
synchronised to NTP server () at stratum 2time correct to within 74 mspolling server every 128 s
如果出現異常請等待幾分鍾,一般等待5-10分鍾才能同步。
配置ntp客戶端(所有datanode節點)
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 cdh1
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
ok保存退出,請求服務器前,請先使用ntpdate
手動同步一下時間:ntpdate -u cdh1
(主節點ntp服務器)
這里可能出現同步失敗的情況,請不要着急,一般是本地的ntp服務器還沒有正常啟動,一般需要等待5-10分鍾才可以正常同步。啟動服務:service ntpd start
因為是連接內網,這次啟動等待的時間會比master節點快一些,但是也需要耐心等待一會兒。
正式開工
安裝Cloudera Manager Server 和Agent
主節點解壓安裝
cloudera manager的目錄默認位置在/opt下,解壓:tar xzvf cloudera-manager*.tar.gz
將解壓后的cm-5.3.3和cloudera目錄放到/opt目錄下。
為Cloudera Manager 5建立數據庫
首先需要去MySql的官網下載JDBC驅動,http://dev.mysql.com/downloads/connector/j/,解壓后,找到mysql-connector-java-5.1.35-bin.jar
,放到/opt/cm-5.3.3/share/cmf/lib/
中。
在主節點初始化CM5的數據庫:
/opt/cm-5.3.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pxxxx --scm-host localhost scm scm scm
Agent配置
修改/opt/cm-5.3.3/etc/cloudera-scm-agent/config.ini
中的server_host
為主節點的主機名。
同步Agent到其他節點
scp -r /opt/cm-5.3.3 root@n2:/opt/
在所有節點創建cloudera-scm用戶
useradd --system --home=/opt/cm-5.3.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
准備Parcels,用以安裝CDH5
將CHD5相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/
目錄中(parcel-repo需要手動創建)。
相關的文件如下:
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel
CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1
manifest.json
最后將CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1
,重命名為CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha
,這點必須注意,否則,系統會重新下載CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha1文件。
相關啟動腳本
通過/opt/cm-5.3.3/etc/init.d/cloudera-scm-server start
啟動服務端。
通過/opt/cm-5.3.3/etc/init.d/cloudera-scm-agent start
啟動Agent服務。
我們啟動的其實是個service腳本,需要停止服務將以上的start參數改為stop就可以了,重啟是restart。
CDH5的安裝配置
Cloudera Manager Server和Agent都啟動以后,就可以進行CDH5的安裝配置了。
這時可以通過瀏覽器訪問主節點的7180端口測試一下了(由於CM Server的啟動需要花點時間,這里可能要等待一會才能訪問),默認的用戶名和密碼均為admin:
各個Agent節點正常啟動后,可以在當前管理的主機列表中看到對應的節點。選擇要安裝的節點,點繼續。
接下來,出現以下包名,說明本地Parcel包配置無誤,直接點繼續就可以了。
點擊,繼續,如果配置本地Parcel包無誤,那么下圖中的已下載,應該是瞬間就完成了,然后就是耐心等待分配過程就行了。
接下來是服務器檢查,可能會遇到以下問題:
Cloudera 建議將 /proc/sys/vm/swappiness 設置為 0。當前設置為 60。使用 sysctl 命令在運行時更改該設置並編輯 /etc/sysctl.conf 以在重啟后保存該設置。您可以繼續進行安裝,但可能會遇到問題,Cloudera Manager 報告您的主機由於交換運行狀況不佳。以下主機受到影響:
通過echo 0 > /proc/sys/vm/swappiness
即可解決。
接下來是選擇安裝服務:
服務配置,一般情況下保持默認就可以了(Cloudera Manager會根據機器的配置自動進行配置,如果需要特殊調整,自行進行設置就可以了):
接下來是數據庫的設置,檢查通過后就可以進行下一步的操作了:
下面是集群設置的審查頁面,全部保持默認配置即可:
終於到安裝各個服務的地方了,注意,這里安裝Hive的時候可能會報錯,因為我們使用了MySql作為hive的元數據存儲,hive默認沒有帶mysql的驅動,通過以下命令拷貝一個就行了:
cp /opt/cm-5.3.3/share/cmf/lib/mysql-connector-java-5.1.35-bin.jar /opt/cloudera/parcels/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel/lib/hive/lib/
接下靜靜地等待即可。
安裝完成后,就可以進入集群界面看一下集群的當前狀況了。
這里可能會出現無法發出查詢:對 Service Monitor 的請求超時的錯誤提示,如果各個組件安裝沒有問題,一般是因為服務器比較卡導致的,過一會刷新一下頁面就好了:
參考資料如下:
http://www.cnblogs.com/jasondan/p/4011153.html
http://www.wangyongkui.com/hadoop-cdh5/
http://snglw.blog.51cto.com/5832405/1600475