CDH-5.7.1離線安裝
1、文件下載
CDH (Cloudera’s Distribution, including Apache Hadoop),是Hadoop眾多分支中的一種,由Cloudera維護,基於穩定版本的Apache Hadoop構建,並集成了很多補丁,可直接用於生產環境。
相關包的下載地址:
Cloudera Manager地址:http://archive.cloudera.com/cm5/cm/5/
下載對應的文件,我下載的是:cloudera-manager-el6-cm5.9.2_x86_64.tar.gz
CDH安裝包地址:http://archive.cloudera.com/cdh5/parcels
由於我們的操作系統為CentOS6.8,需要下載以下文件,找到對應的版本:
manifest.json
算上jdbc一共是5個文件
強烈建議:有條件的話,以下所有操作都在root下完成,不要問我為什么知道的。
否側,出現錯誤,10個有9個都是目錄權限問題,根據log查錯即可。
如果使用虛擬機安裝的話,每個節點至少保證硬盤空間20G,推薦30G以上。
內存,master至少6G,推薦8G以上,slave至少4G
以下操作均需要(root)管理員權限
2.1、網絡配置(所有節點)
臨時修改 hostname 主機名
修改主機名:vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=
主機名
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
- GATEWAY=192.168.3.253
- 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.2、打通SSH,設置ssh無密碼登陸(所有節點)
執行ssh-keygen -t rsa,一路回車,生成無密碼的密鑰對。
將公鑰添加到認證文件中:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys,並設置authorized_keys的訪問權限:chmod 600 ~/.ssh/authorized_keys。
通過scp命令將各節點的認證文件拷貝到所有其他節點使得各節點能夠相互訪問。
(JAVA安裝路徑:最好選擇以下)
'/usr/java/jdk1.8' 、'/usr/java/jre1.8' 、'/usr/lib/jvm/j2sdk1.8-oracle'、 '/usr/lib/jvm/j2sdk1.8-oracle/jre' 、'/usr/lib/jvm/java-8-oracle'
'/usr/lib/jvm/java-1.8.0-openjdk' 、'/usr/lib/jvm/java-8-openjdk'
'/Library/Java/Home' 、'/usr/java/default'、 '/usr/lib/jvm/default-java'、 '/usr/lib/jvm/java-openjdk' 、'/usr/lib/jvm/jre-openjdk'
CDH默認會到這些目錄下找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
2.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表,具體方法請自行搜索
root的初試密碼:
mysqladmin -u root password 'xxxx'
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'@'主機名' identified by '密碼' 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節點快一些,但是也需要耐心等待一會兒。
3、開始安
裝Cloudera Manager
安裝Cloudera Manager Server 和Agent
3.1、主節點解壓安裝
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.9.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h master -u root -p 890610 --scm-host master scm scm scm
在這里后面的參數分別是:數據庫類型 數據庫名稱 數據庫主機名 數據庫用戶名 密碼 --scm-host cmserver主機名 scm scm scm
3.2、Agent配置
修改/opt/cm-5.9.2/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名。
同步Agent到其他所有節點:
scp -r /opt/cm-5.9.2 root@slave2:/opt/
在所有節點創建cloudera-scm用戶
useradd --system --home=/opt/cm-5.9.2/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.9.2.p0.5-el6.parcel
CDH-5.7.1-1.cdh5.9.2.p0.5-el6.parcel.sha1
manifest.json
最后將CDH-5.9.2-1.cdh5.9.2.p0.3-el6.parcel.sha1,重命名為CDH-5.9.2-1.cdh5.9.2.p0.3-el6.parcel.sha
這點必須注意,否則,系統會重新下載CDH-5.9.2-1.cdh5.9.2.p0.3-el6.parcel.sha1文件。
相關啟動腳本
通過/opt/cm-5.9.2/etc/init.d/cloudera-scm-server start啟動服務端。
通過/opt/cm-5.9.2/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包無誤,那么下圖中的已下載,應該是瞬間就完成了,然后就是耐心等待分配過程就行了,這個過程的速度就取決於節點之間的傳輸速度。

等待一下,連接訪問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”和“echo never > /sys/kernel/mm/transparent_hugepage/enabled”以禁用此設置,然后將同一命令添加到echo never > /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的權限原因,提高/目錄的權限
6.hdfs和yarn的端口不再是9000和10020,默認的是
8020和8021
7.如果使用Windows遠程調試,請保證host文件(C:/Windows/System32/drivers/hosts)和集群上的host文件內容一致。
8.主機崩潰怎么辦。一般來說崩潰了,直接重啟就好。不過一定記得要
再次啟動cm的agent和server服務
調整相關閾值后,基本正常運行。

出現問題重裝教程:
當前受管
假如在安裝的時候出現問題,如網絡連接中斷,機器死機,繼續安裝的時候可能會出現查詢不到機器,並且根據ip搜索機器的時候,出現“當前受管”
的狀態為“是”,安裝失敗的機器不能再選擇了。

先停止所有服務。清除數據庫。
1> 刪除Agent節點的UUID
# rm -rf /opt/cm-5.9.2/lib/cloudera-scm-agent/*
2> 清空主節點CM數據庫
進入主節點的Mysql數據庫,然后drop database cm;
3> 在主節點上重新初始化CM數據庫
# /opt/cm-5.9.2/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p890610 --scm-host localhost scm scm scm