檔案下載下傳
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/
下載下傳對應的檔案,我下載下傳的是:cloudera-manager-el6-cm5.7.1_x86_64.tar.gz
CDH安裝包位址:http://archive.cloudera.com/cdh5/parcels
由于我們的作業系統為CentOS6.5,需要下載下傳以下檔案,找到對應的版本:
CDH-5.7.1-1.cdh5.7.1.p0.11-el6.parcel
CDH-5.7.1-1.cdh5.7.1.p0.11-el6.parcel.sha1
manifest.json
準備JDBC,等下連接配接mysql會用到:http://download.softagency.net/MySQL/Downloads/Connector-J/
算上jdbc一共是5個檔案
強烈建議:有條件的話,以下所有操作都在root下完成,不要問我為什麼知道的。
否側,出現錯誤,10個有9個都是目錄權限問題,根據log查錯即可。
準備工作:系統環境搭建
如果使用虛拟機安裝的話,每個節點至少保證硬碟空間20G,推薦30G以上。
記憶體,master至少6G,推薦8G以上,slave至少4G
以下操作均需要(root)管理者權限
1.網絡配置(所有節點)
修改主機名:vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node1
GATEWAY=192.168.3.253
修改ip與主機名的對應關系:vim /etc/hosts
192.168.3.201 node1
192.168.3.202 node2
192.168.3.203 node3
192.168.3.204 node4
修改網絡配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO=none
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="038b2dab-5902-46d7-9d4c-2c0fb42599b9"
HWADDR=00:0C:29:50:84:9A
IPADDR=192.168.3.201
PREFIX=24
DNS1=192.168.1.242
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME="System eth0"
LAST_CONNECT=1468601480
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 包名安裝,最後配置環境變量。
在 etc/profile中,
vi /etc/profile
添加如下(使用rpm安裝的java在/usr/java/jdk1.8XXXX):
export JAVA_HOME=/usr/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然後使環境變量生效:
source /etc/profile
4.安裝配置MySql(主節點)
# mysql 用戶端程式
# mysql-server 服務端程式
# mysql-devel 開發設計的庫
[root@localhost ~]# yum -y install mysql mysql-server mysql-devel
# 開機啟動
[root@localhost ~]# chkconfig mysqld on
# 啟動mysqld服務
[root@localhost ~]# service mysqld start
# 進行一些安全性配置
[root@localhost ~]# /usr/bin/mysql_secure_installation
注意:這裡遠端連接配接mysql可能會出現權限報錯,需要修改user表,具體方法請自行搜尋
mysql -u root -p
xxxxxx
進入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;
設定root授權通路以上所有的資料庫:
#授權root使用者在主節點擁有所有資料庫的通路權限
grant all privileges on *.* to 'root'@'node1' identified by 'xxxx' with grant option;
flush privileges;
5.關閉防火牆和SELinux
注意: 需要在所有的節點上執行,因為涉及到的端口太多了,臨時關閉防火牆是為了安裝起來更友善,安裝完畢後可以根據需要設定防火牆政策,保證叢集安全。
關閉防火牆:
service iptables stop (臨時關閉)
chkconfig iptables off (重新開機後生效)
關閉SELINUX(實際安裝過程中發現沒有關閉也是可以的,不知道會不會有問題,還需進一步進行驗證):
set enforce 0 (臨時生效)
修改 vi /etc/selinux/config 下的
SELINUX=disabled (重新開機後永久生效)
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
6.所有節點配置NTP服務 (這一步暫時可以跳過,但是在叢集啟動以後,會提示時間不同步)
叢集中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。 具體思路如下:
master節點作為ntp伺服器與外界對時中心同步時間,随後對所有datanode節點提供時間同步服務。
所有datanode節點以master節點為基礎同步時間。
所有節點安裝相關元件:yum install ntp。
啟動 ntp:
$ service ntpd start
設定開機啟動:
$ chkconfig ntpd on
檢查是否設定成功:chkconfig --list ntpd其中2-5為on狀态就代表成功。
可以通過以下指令先進行時間同步:
ntpdate us.pool.ntp.org
主節點配置(master節點)
vi /etc/ntp.conf
ntp服務隻有一個配置檔案,配置好了就OK。 這裡隻給出有用的配置,不需要的配置都用#注掉,這裡就不在給出(大部分把#去掉即可,不需要添加):
driftfile /var/lib/ntp/drift
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Permit all access over the loopback interface. This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1
restrict -6 ::1
# Hosts on local network are less restricted.
restrict 192.168.3.0 mask 255.255.255.0 nomodify notrap
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
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 iburst
配置檔案完成,儲存退出,啟動服務,執行如下指令:service ntpd start
檢查是否成功,用ntpstat指令檢視同步狀态,出現以下狀态代表啟動成功:
synchronisedto NTP server () at stratum 2time correct towithin74 mspolling server every 128 s
如果出現異常請等待幾分鐘,一般等待5-10分鐘才能同步。
在其他節點,直接運作
ntpdate -u node1
(主節點ntp伺服器) 即可,和node1同步
這裡可能出現同步失敗的情況,請不要着急,一般是本地的ntp伺服器還沒有正常啟動,一般需要等待5-10分鐘才可以正常同步。啟動服務:service ntpd start
因為是連接配接内網,這次啟動等待的時間會比master節點快一些,但是也需要耐心等待一會兒。
開始安裝Cloudera Manager
安裝Cloudera Manager Server 和Agent
主節點解壓安裝
cloudera manager的目錄預設位置在/opt下,解壓:tar xzvf cloudera-manager*.tar.gz将解壓後的cm-5.7.1和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.7.1/share/cmf/lib/中。
在主節點初始化CM5的資料庫:
/opt/cm-5.7.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hnode1 -uroot -p123123 --scm-host node1 scm scm scm
在這裡後面的參數分别是:資料庫類型 資料庫名稱 資料庫主機名 資料庫使用者名 密碼 --scm-host cmserver主機名 scm scm scm
Agent配置
修改/opt/cm-5.7.1/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名。
同步Agent到其他所有節點:
scp -r /opt/cm-5.7.1 root@node2:/opt/
在所有節點建立cloudera-scm使用者
useradd --system --home=/opt/cm-5.7.1/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.7.1-1.cdh5.7.1.p0.5-el6.parcel
CDH-5.7.1-1.cdh5.7.1.p0.5-el6.parcel.sha1
最後将CDH-5.7.1-1.cdh5.7.1.p0.5-el6.parcel.sha1,重命名為CDH-5.7.1-1.cdh5.7.1.p0.5-el6.parcel.sha,
這點必須注意,否則,系統會重新下載下傳CDH-5.7.1-1.cdh5.7.1.p0.5-el6.parcel.sha1檔案。
相關啟動腳本
通過/opt/cm-5.7.1/etc/init.d/cloudera-scm-server start啟動服務端。
通過/opt/cm-5.7.1/etc/init.d/cloudera-scm-agent start啟動Agent服務。 (所有節點都要啟動Agent服務,包括服務端)
我們啟動的其實是個service腳本,需要停止服務将以上的start參數改為stop就可以了,重新開機是restart。
安裝到此處,可以考慮備份節點,為将來的節點拓展做準備。
CDH5的安裝配和叢集配置 Cloudera Manager Server和Agent都啟動以後,就可以進行CDH5的安裝配置了。
這時可以通過浏覽器通路主節點的7180端口測試一下了(由于CM Server的啟動需要花點時間,這裡可能要等待一會才能通路成果,可能需要3-5分鐘),預設的使用者名和密碼均為admin:
各個Agent節點正常啟動後,可以在目前管理的主機清單中看到對應的節點。選擇要安裝的節點,點繼續。
接下來,出現以下包名,說明本地Parcel包配置無誤,直接點繼續就可以了。
如果此處發現不到parcel包,就重新開機所有節點的agent服務,和master的server服務。
點選,繼續,如果配置本地Parcel包無誤,那麼下圖中的已下載下傳,應該是瞬間就完成了,然後就是耐心等待配置設定過程就行了,這個過程的速度就取決于節點之間的傳輸速度。
目前受管
假如在安裝的時候出現問題,如網絡連接配接中斷,機器當機,繼續安裝的時候可能會出現查詢不到機器,并且根據ip搜尋機器的時候,出現“目前受管”
的狀态為“是”,安裝失敗的機器不能再選擇了。
先停止所有服務。清除資料庫。
1> 删除Agent節點的UUID
# rm -rf /opt/cm-5.7.1/lib/cloudera-scm-agent/*
2> 清空主節點CM資料庫
進入主節點的Mysql資料庫,然後drop database cm;
3> 在主節點上重新初始化CM資料庫
# /opt/cm-5.7.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm
等待一下,連接配接通路master:7180即可
所有節點部署完成
接下來是主機檢查,可能會遇到以下問題:
Cloudera 建議将 /proc/sys/vm/swappiness 設定為 0。目前設定為 60。使用 sysctl 指令在運作時更改該設定并編輯 /etc/sysctl.conf 以在重新開機後儲存該設定。您可以繼續進行安裝,但可能會遇到問題,Cloudera Manager 報告您的主機由于交換運作狀況不佳。以下主機受到影響:
通過echo 10 > /proc/sys/vm/swappiness即可解決。(注意切換到root)
已啟用透明大頁面壓縮,可能會導緻重大性能問題。請運作“echo never > /sys/kernel/mm/transparent_hugepage/defrag”以禁用此設定,然後将同一指令添加到 /etc/rc.local 等初始腳本中,以便在系統重新開機時予以設定。以下主機将受到影響
接下來是選擇安裝服務:
服務配置,一般情況下保持預設就可以了(Cloudera Manager會根據機器的配置自動進行配置,如果需要特殊調整,自行進行設定就可以了):
接下來是資料庫的設定,檢查通過後就可以進行下一步的操作了:
此處可能需要建立oozie的資料庫
下面是叢集設定的審查頁面,全部保持預設配置即可:
這裡地方可以考慮修改hdfs的存儲檔案夾,另外如果需要自己設定檔案夾,一定要先mkdir檔案夾,否側hdfs會無法啟動,并且報錯檔案夾不存在,并確定通路權限。
終于到安裝各個服務的地方了,注意,這裡安裝Hive,或oozie的時候可能會報錯,因為我們使用了MySql作為hive的中繼資料存儲,hive預設沒有帶mysql的驅動,通過以下指令拷貝一個就行了:
cp /opt/cm-5.7.1/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/hive/lib/
cp /opt/cm-5.7.1/share/cmf/lib/mysql-connector-java-*-bin.jar /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/oozie/lib/
cp /opt/cm-5.7.1/share/cmf/lib/mysql-connector-java-*-bin.jar /var/lib/oozie/
接下靜靜地等待即可。
安裝完成後,就可以進入叢集界面看一下叢集的目前狀況了。
這裡可能會出現無法發出查詢:對 Service Monitor 的請求逾時的錯誤提示,如果各個元件安裝沒有問題,一般是因為伺服器比較卡導緻的,過一會重新整理一下頁面就好了,根據實際情況調整配置即可:
另外如果想添加新的主機,必須要先啟動新主機上的agent服務,否則新主機不能被發現,要重新下載下傳cm-agent,很麻煩。安裝新的節點以後,記得運作"部署用戶端"指令。
Q&A:
1.在我部署完成以後,會出現大量問題,其中有大量警告,是由于var/log/*的權限問題造成的。
在master上,運作chmod -R 777對應的檔案夾修改權限即可。
2.出現oozie和hive不能成功啟動
一般是因為缺少jdbc,複制到相應位置即可,參照原文。或者是由于mysql資料庫中的表造成的,可能是表已經存在了。
3.service monitor和host monitor都無法啟動
一般也是由于var/log/*的權限問題造成的。
4.service monitor和host monitor正常啟動,但是無法擷取到圖表資料
登出admin重新進入,或者等一下
5.hdfs不能正常啟動
可能是因為/dfs的權限原因,提高/目錄的權限
調整相關門檻值後,基本正常運作。
本文出自http://www.2cto.com/net/201607/528986.html