CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop衆多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並集成了不少補丁,可直接用於生產環境。java
Cloudera Manager則是爲了便於在集羣中進行Hadoop等大數據處理相關的服務安裝和監控管理的組件,對集羣中主機、Hadoop、Hive、Spark等服務的安裝配置管理作了極大簡化。node
注:本文檔全部操做均使用root登錄操做。mysql
iplinux |
節點編號web |
名稱sql |
物理機shell |
192.168.1.170數據庫 |
masterexpress |
管理節點json |
本地 |
192.168.1.181 |
n1 |
節點1 |
本地 |
192.168.1.182 |
n2 |
節點2 |
192.168.1.5 |
192.168.1.184 |
n3 |
節點3 |
192.168.1.5 |
打開/etc/sysconfig/network文件。
修改」HOSTNAME」爲指定的節點編號。
如圖所示:
在命令窗口執行:service network restart
重啓網絡服務生效。
打開/etc/hosts文件。
將ip及節點編號存入。例如:
192.168.1.170 master
192.168.1.181 n1
192.168.1.182 n2
192.168.1.184 n3
如圖所示:
注意:這裏須要將每臺機器的ip及主機名對應關係都寫進去,管理節點的也要寫進去,不然啓動Agent的時候會提示hostname解析錯誤。
一、 在命令窗口執行:ssh-keygen -t rsa
此後,一路回車,生成無密碼的密鑰對。
二、 以後在命令窗口執行:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
將公鑰添加到認證文件中。
三、 再以後,在命令窗口執行:chmod 600 ~/.ssh/authorized_keys
設置authorized_keys的訪問權限。
在命令窗口執行:scp ~/.ssh/authorized_keys root@n1:~/.ssh/
測試:在主節點上ssh 節點n1,正常狀況下,不須要密碼就能直接登錄進去了。
有時可能須要重啓才能聯通。
CentOS自帶OpenJdk,但運行CDH5須要使用Oracle的Jdk,須要Java 7的支持。
在命令窗口執行:rpm -qa | grep java
一、 在/etc下建立文件夾/java,並將jdk-7u79-linux-x64.tar.gz拷貝到」/etc/java文件夾中」
二、 在命令窗口執行:tar xvf jdk-7u79-linux-x64.tar.gz
進行解壓縮。
三、 打開/etc/profile文件,在末尾追加以下內容:
export JAVA_HOME=/etc/java/jdk1.7.0_79
export JRE_HOME=/etc/java/jdk1.7.0_79/jre
export PATH=$PATH:/etc/java/jdk1.7.0_79/bin
export CLASSPATH=./:/etc/java/jdk1.7.0_79/lib:/etc/java/jdk1.7.0_79/jre/lib
四、 從新啓動系統後,輸入:java -version,若是看到以下截圖說明你的jdk已經安裝成功了。
在命令窗口執行:yum install mysql-server
「mysqld」是用來啓動mysql數據庫的命令。
設置開機啓動,在命令窗口執行:chkconfig mysqld on
啓動mysql服務,在命令窗口執行:service mysqld start
在命令窗口執行:mysqladmin -u root password 'root'
在命令窗口執行:mysql -uroot -proot(注意此處語法爲mysql –u用戶名 –p密碼)
在命令窗口執行:create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;(#hive)
以後,在命令窗口再執行:create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;(#activity monitor)
在命令窗口執行:grant all privileges on *.* to 'root'@'master' identified by 'root' with grant option;(注意identified by後跟的是’密碼’)
以後,爲促使設置生效,在命令窗口執行:flush privileges;
最終可執行」exit;」命令退出mysql登錄狀態。
在命令窗口執行:service iptables stop(臨時關閉)
在命令窗口執行:chkconfig iptables off(重啓後生效)
在命令窗口執行:setenforce 0(臨時關閉)
修改/etc/selinux/config文件中的 SELINUX=disabled(重啓後永久生效)
集羣中全部主機必須保持時間同步,若是時間相差較大會引發各類問題。具體思路以下:
master節點做爲ntp服務器與外界對時中心同步時間,隨後對全部datanode節點提供時間同步服務。
全部datanode節點以master節點爲基礎同步時間。
在命令窗口執行:yum install ntp
在命令窗口執行:chkconfig ntpd on
在命令窗口執行:chkconfig --list ntpd
其中2-5爲on(啓動)狀態就表明成功
打開/etc/ntp.conf文件,註釋掉「server」相關的內容,僅留以下內容:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
# 容許內網其餘機器同步時間
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
server 0.centos.pool.ntp.org perfer
# 容許上層時間服務器主動修改本機時間
restrict 0.centos.pool.ntp.org nomodify notrap noquery
# 外部時間服務器不可用時,以本地時間做爲時間服務
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
設置配置文件,
爲免本機與對時中心時間差距太大,使得ntpd不能正常同步。這裏選用阿里巴巴0.centos.pool.ntp.org做爲對時中心,
在命令窗口執行:ntpdate -u 0.centos.pool.ntp.org
在命令窗口執行:service ntpd start
以後,在命令窗口執行:ntpstat(查看同步狀態,出現下圖所示內容表示同步成功)
若是出現異常請等待幾分鐘,通常等待5-30分鐘才能同步。
打開/etc/ntp.conf文件,註釋掉「server」相關的內容,僅留以下內容:
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
#這裏是主節點的主機名或者ip,僅設置主節點
server master
# 外部時間服務器不可用時,以本地時間做爲時間服務
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
注:若是在命令窗口執行:ntpdate -d master出現以下結果:
正常狀況下stratum這個值得範圍是「0~15」。出現這個狀況,是由於NTP server尚未和其自身或者它的server同步上。須要查主節點服務是否已經正常啓動。
將下載的cloudera-manager-el6-cm5.1.3_x86_64.tar.gz文件放在/opt目錄下,以後解壓縮,進入/opt目錄後,在命令窗口執行:tar xzvf cloudera-manager*.tar.gz
找到mysql的jdbc驅動mysql-connector-java-5.1.38-bin.jar,並放到/opt/cm-5.1.3/share/cmf/lib/中。
在命令窗口執行:useradd --system --home=/opt/cm-5.1.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
在命令窗口執行:/opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
報錯信息以下:
[root@master ~]# /opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm
Verifying that we can write to /opt/cm-5.1.3/etc/cloudera-scm-server
log4j:ERROR Could not find value for key log4j.appender.A
log4j:ERROR Could not instantiate appender named "A".
Creating SCM configuration file in /opt/cm-5.1.3/etc/cloudera-scm-server
groups: cloudera-scm:無此用戶
Executing: /etc/java/jdk1.7.0_79/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/opt/cm-5.1.3/share/cmf/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /opt/cm-5.1.3/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
log4j:ERROR Could not find value for key log4j.appender.A
log4j:ERROR Could not instantiate appender named "A".
[2016-04-13 03:18:09,146] INFO 0[main] - com.cloudera.enterprise.dbutil.DbCommandExecutor.testDbConnection(DbCommandExecutor.java:238) - Successfully connected to database.
All done, your SCM database is configured correctly!
修改/opt/cm-5.1.3/etc/cloudera-scm-agent/config.ini中的server_host爲主節點的主機名,即將」server_host」的值置爲」master」。
在命令窗口對各節點執行:scp -r /opt/cm-5.1.3 root@n1:/opt/
在命令窗口執行:useradd --system --home=/opt/cm-5.1.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
將CHD5相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/目錄中(parcel-repo須要手動建立)。
相關的文件以下:
1>、CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel
2>、CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1
3>、manifest.json
最後將CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha1,重命名爲CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel.sha,這點必須注意,不然,系統會從新下載CDH-5.1.3-1.cdh5.1.3.p0.12-el6.parcel文件。
在命令窗口執行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-server start(啓動cloudera-scm服務端)(僅主節點)。
以後,在命令窗口執行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start(啓動Agent服務)(主節點及各datanode節點)。
在此啓動的實際上是個service腳本,須要中止服務將以上的start參數改成stop就能夠了,重啓是restart。
以VMware的克隆功能生成一個節點所在的虛擬機。
一、在系統->首選項->網絡鏈接中,進行網絡設置。
二、打開/etc/sysconfig/network文件。
修改」HOSTNAME」爲指定的節點編號。
三、打開/etc/hosts文件。
將新的ip及節點編號存入。
四、在命令窗口執行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start(啓動Agent服務)。
打開/etc/hosts文件。
將新的ip及節點編號存入。
一、測試羣定ssh暢通(需新節點nN在線)
在命令窗口執行:scp ~/.ssh/authorized_keys root@nN:~/.ssh/
測試:在主節點上ssh 節點nN,正常狀況下,不須要密碼就能直接登錄進去了。
有時可能須要重啓才能聯通。
Cloudera Manager Server和Agent都啓動之後,就能夠進行CDH5的安裝配置了。
這時能夠經過瀏覽器訪問主節點的7180端口測試一下了(因爲CM Server的啓動須要花點時間,這裏可能要等待一會才能訪問),默認的用戶名和密碼均爲admin:
如下操做,須要先保證8.9的服務已所有啓動。
訪問地址:http://master:7180/cmf/login
用戶名/密碼:admin/admin
各個Agent節點正常啓動後,能夠在當前管理的主機列表中看到對應的節點。選擇要安裝的節點,點繼續。如圖所示:
點擊「繼續」按鈕,若是出現以下圖所示界面,說明本地Parcel包配置無誤,直接點繼續就能夠了。
點擊,繼續,若是配置本地Parcel包無誤,那麼下圖中的已下載,應該是瞬間就完成了,而後就是耐心等待分配過程就好了,以下圖所示,大約10-20分鐘,取決於內網網速。
點擊「繼續」按鈕,開始服務器檢查,可能彈出以下信息「
Cloudera 建議將 /proc/sys/vm/swappiness 設置爲 0。當前設置爲 60。使用 sysctl 命令在運行時更改該設置並編輯 /etc/sysctl.conf 以在重啓後保存該設置。您能夠繼續進行安裝,但可能會遇到問題,Cloudera Manager 報告您的主機因爲交換運行情況不佳。如下主機受到影響:
」,以下圖所示
在命令窗口執行:echo 0 > /proc/sys/vm/swappiness,便可解決此文問題,點擊「返回」按鈕,以後點擊「繼續」,從新檢查便可看到結果。點擊「完成」,可進入集羣設置界面。
在此選擇「全部服務」,以後點「繼續」,進入角色分配界面。
通常狀況下保持默認就能夠了(Cloudera Manager會根據機器的配置自動進行配置,若是須要特殊調整,自行進行設置就能夠了),點擊「繼續」進入數據庫設置界面。
此刻依照第5部分所設,數據庫:「hive」,用戶名/密碼:」root/root」
保持默認。但注意,這裏安裝Hive的時候可能會報錯,由於咱們使用了MySql做爲hive的元數據存儲,hive默認沒有帶mysql的驅動,經過如下命令拷貝一個就好了:
cp /opt/cm-5.1.3/share/cmf/lib/mysql-connector-java-5.1.38-bin.jar /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/
點擊「重試」。最終展示以下圖所示界面
http://master:7180/cmf/clusters/2/express-add-services/index
以VMware的克隆功能生成一個節點所在的虛擬機。
一、在系統->首選項->網絡鏈接中,進行網絡設置。
二、打開/etc/sysconfig/network文件。
修改」HOSTNAME」爲指定的節點編號。
三、打開/etc/hosts文件。
將新的ip及節點編號存入。
四、清除已有受權(與9有區別)
將「/opt/cm-5.1.3/lib/cloudera-scm-agent」下的文件「uuid」刪掉。
五、在命令窗口執行:/opt/cm-5.1.3/etc/init.d/cloudera-scm-agent start(啓動Agent服務)。
打開/etc/hosts文件。
將新的ip及節點編號存入。
一、測試羣定ssh暢通(需新節點nN在線)
在命令窗口執行:scp ~/.ssh/authorized_keys root@nN:~/.ssh/
測試:在主節點上ssh 節點nN,正常狀況下,不須要密碼就能直接登錄進去了。
有時可能須要重啓才能聯通。
一、在主界面->主機中,選擇「向集羣添加新主機」,選擇新節點nN以後點擊「繼續」
二、選擇主機模板選擇「srit_node_model」,以下圖所示
點擊「完成」即完成配置。
此時,mysql驅動莫名其妙也被刪除,將會形成hive沒法啓動,此時須要在命令窗口從新執行:cp /opt/cm-5.1.3/share/cmf/lib/mysql-connector-java-5.1.38-bin.jar /opt/cloudera/parcels/CDH-5.1.3-1.cdh5.1.3.p0.12/lib/hive/lib/