轉載請註明出處:http://www.wangyongkui.com/hadoop-cdh5。
系統環境
- 4臺聯想R510服務器,其中master節點4核心、8GB,其它節點雙核心、4GB。
- 網卡:100M。
- 共有硬盤6TB。
- 網絡環境內網。
- Centos6.5 x64(安裝系統時儘量把開發包安裝齊全,另master節點需要Mysql可以在安裝系統時勾選)。
準備工作
卸載系統自帶OPEN-JDK(所有節點)
安裝好的Centos系統有時會自動安裝OpenJdk,用命令java -version查看:
2 |
OpenJDK Runtime Environment (build 1.6.0-b09) |
3 |
OpenJDK 64-Bit Server VM (build 1.6.0-b09, mixed mode) |
如有上述顯示,說明系統裏已經有OpenJdk,執行以下命令查看系統中有哪些OpenJdk相關包:
其中有如下包必須卸載,根據系統版本不同,各個包版本號會有所差異: java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64 執行以下命令,卸載:
1 |
rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64 |
2 |
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64 |
3 |
rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64 |
安裝JDK(所有節點)
從官方網站上下載rpm包,本次使用版本1.7.0_55-b13(CDH5可能支持1.7之前的版本,具體情況未經測試),執行命令:
1 |
rpm -ivh jdk-7u55-linux-x64.rpm |
由於是rpm包並不需要我們來配置環境變量,我們只需要配置一個全局的JAVA_HOME變量即可,執行命令:
1 |
echo "JAVA_HOME=/usr/java/latest/"
>> /etc/environment |
執行命令,查看Jdk是否安裝正確
修改主機名
修改/etc/sysconfig/network文件:
其中HOSTNAME與主機名一致。主機名如果跟系統安裝時不一致請執行hostname命令讓其立即生效,否則會影響各節點互相訪問。修改/etc/hosts文件,添加:
1 |
192.168.1.101 master.hadoop |
2 |
192.168.1.102 datanode1 |
3 |
192.168.1.103 datanode2 |
4 |
192.168.1.104 datanode3 |
執行命令:
1 |
service network restart |
打通SSH(所有節點)
這裏master節點和其他datanode節點會略有區別。 首先說有節點均執行如下命令,遇到提示一路回車即可:
然後在主節點執行以下命令:
1 |
cat ~/. ssh /id_rsa.pub >> ~/. ssh /authorized_keys |
scp文件到所有datenode節點:
1 |
scp ~/. ssh /authorized_keys root@datanode1:~/. ssh / |
然後輸入密碼即可,以後再到其他機器就不需要密碼額。
關閉防火牆(所有節點)
防火牆會引起hadoop相關組件通訊的各種異常。 防火牆:
1 |
service iptables stop (臨時關閉) |
2 |
chkconfig iptables off (重啓後生效) |
SELINUX:
修改/etc/selinux/config 下的 SELINUX=disabled (重啓後生效)。
安裝NTP服務(所有節點)
集羣中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。 具體思路如下:
- master節點作爲ntp服務器與外界對時中心同步時間,隨後對所有datanode節點提供時間同步服務。
- 所有datanode節點以master節點爲基礎同步時間。
所有節點安裝相關組件:ntp與ntpdate。按順序安裝即可,完成後,配置開機啓動:
檢查是否設置成功:
其中2-5爲on狀態就代表成功。
配置內網NTP服務器(master節點)
在配置之前,先使用ntpdate手動同步一下時間,免得本機與對時中心時間差距太大,使得ntpd不能正常同步。這裏選用65.55.56.206作爲對時中心。
ntp服務只有一個配置文件,配置好了就OK。 這裏只給出有用的配置,不需要的配置都用#注掉,這裏就不在給出:
1 |
driftfile /var/lib/ntp/drift |
4 |
restrict default nomodify notrap |
5 |
server 65.55.56.206 prefer |
6 |
includefile /etc/ntp/crypto/pw |
配置文件完成,保存退出,啓動服務,執行如下命令:
2 |
chkconfig ntpd on (設置開機啓動) |
檢查是否成功,用ntpstart命令查看同步狀態,出現以下狀態代表啓動成功:
1 |
synchronised to NTP server () at stratum 2 |
2 |
time correct to within 74 ms |
3 |
polling server every 128 s |
如果出現異常請等待幾分鐘,一般等待5-10分鐘才能同步。
配置ntp客戶端(所有datanode節點)
1 |
driftfile /var/lib/ntp/drift |
4 |
restrict default kod nomodify notrap nopeer noquery |
5 |
restrict -6 default kod nomodify notrap nopeer noquery |
7 |
includefile /etc/ntp/crypto/pw |
ok保存退出,請求服務器前,請先使用ntpdate手動同步一下時間:
1 |
ntdate -u 192.168.1.101 (內網ntp服務器) |
這裏可能出現同步失敗的情況,請不要着急,一般是本地的ntp服務器還沒有正常啓動,一般需要等待5-10分鐘纔可以正常同步。啓動服務:
因爲是連接內網,這次啓動等待的時間會比master節點快一些,但是也需要耐心等待一會兒。
Mysql配置(master節點)
只需要配置master節點的Mysql即可。(這裏不再介紹如何安裝Mysql) 將mysql設置爲開機啓動:
本次安裝需要創建如下數據庫(不包括Cloudera Manager的數據庫,Cloudera Manager數據庫有相關腳本創建,後面會有說明)
2 |
create database
hive DEFAULT
CHARSET utf8 COLLATE utf8_general_ci |
4 |
create database
amon DEFAULT
CHARSET utf8 COLLATE utf8_general_ci |
6 |
create database
hue DEFAULT
CHARSET utf8 COLLATE utf8_general_ci |
以上數據庫,可能會根據安裝組件的不同略有差別。 給用戶授權(這裏密碼設爲hadoop)
1 |
grant all
on *.* to
root@ "%"
Identified by "hadoop" ; |
正式開工
安裝Cloudera Manager 5(cm5)
下載地址http://archive-primary.cloudera.com/cm5/cm/5/,根據自己的系統選擇相應的版本,本次安裝選用的是cloudera-manager-el6-cm5.0.0_x86_64.tar.gz。下載完成後只上傳到master節點即可。然後解壓到/opt目錄下,不能解壓到其他地方,因爲cdh5的源會默認在/opt/cloudera/parcel-repo尋找,怎麼製作cdh5的本地源文件會在之後介紹。給所有節點添加cloudera-scm用戶:
1 |
useradd --system --home=/opt/cm-5.0.0/run/cloudera-scm-server --no-createhome --shell=/bin/ false
--comment "Cloudera SCM User"
cloudera-scm |
修改/opt/cm-5.0.0/etc/cloudera-scm-agent/config.ini 下面的serer_host
1 |
server_host=master.hadoop |
爲Cloudera Manager 5建立數據庫:
1 |
/opt/cm-5.0.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -phadoop --scm-host localhost scm scm scm |
格式是:scm_prepare_database.sh 數據庫類型 數據庫 服務器 用戶名 密碼 –scm-host Cloudera_Manager_Server所在的機器,後面那三個不知道代表什麼,直接照抄官網的了。 因爲我們用的是Mysql數據庫,所以我們需要下載Mysql的JDBC驅動,本次從官網上下載最新穩定版:mysql-connector-java-5.1.30.tar.gz,解壓之後找到mysql-connector-java-5.1.30-bin.jar放到/opt/cm-5.0.0/share/cmf/lib/目錄下。
開啓Cloudera Manager 5 Server端:
1 |
/opt/cm-5.0.0/etc/init.d/cloudera-scm-server start |
注意server首次啓動不要立即關閉或重啓,因爲首次啓動會自動創建相關表以及數據,如果因爲特殊原因中途退出,請先刪除所有表以及數據之後再次啓動,否則將會出現啓動不成功的情況。 開啓Cloudera Manager 5 Agents端。 先scp /opt/cm-5.0.0到所有datanode節點上,然後在每臺機器上開啓Agents端:
1 |
scp -r /opt/cm-5.0.0 root@datanode1:/opt/cm-5.0.0 |
等待拷貝成功,在所有datanode節點上啓動:(注意必須以管理員權限啓動)
1 |
sudo /opt/cm-5.0.0/etc/init.d/cloudera-scm-agent start |
瀏覽器啓動Cloudera Manager 5 控制檯(默認端口號是7180),啓動成功就會看到登陸頁面。
安裝CDH5
先下載到本地http://archive-primary.cloudera.com/cdh5/parcels/5.0.0/,這裏需要下載兩樣東西,首先是與自己系統版本相對應的parcel包,然後是manifest.json文件。下載完成後將這兩個文件放到master節點的/opt/cloudera/parcel-repo下(目錄在安裝Cloudera
Manager 5時已經生成),注意目錄一個字都不能錯,接下來打開manifest.json文件,裏面是json格式的配置,我們需要的就是與我們系統版本相對應的hash碼,因爲我們用的是Centos6.5,所以找到如下位置:
在這個大括號的最下面找到“hash”所對應的值。
將“hash”的值複製下來,然後創建一個文件,文件名與你的parel包名一致,並加上.sha後綴:
這樣你的目錄下將有這3個文件,將“hash”的值複製到新建的sha文件中,並保存,好了,我們的本地源製作完成了。這樣基本大功告成了,再之後的操作就是控制檯按照步驟安裝即可。
打開http://192.168.1.101:7180,登陸控制檯,默認賬戶和密碼都是admin,安裝時選擇免費版,之後由於cm5對中文的支持很強大,按照提示安裝即可,如果系統配置有什麼問題在安裝過程中會有提示,根據提示給系統安裝組件就可以了。
如果在安裝時選擇了安裝Hive,可能會遇到安裝失敗的問題,查看一下日誌發現時安裝Hive時需要安裝JDBC驅動,所以同樣我們將Mysql的驅動包拷貝到/opt/cloudera/parcels/CDH-5.0.0-1.cdh5.0.0.p0.47/lib/hive/lib/目錄下,之後再繼續安裝就不會遇到問題了。
參考文獻:http://www.cnblogs.com/thinkCoding/p/3567408.html
http://www.byywee.com/page/M0/S877/877056.html