1. 程式人生 > >CM5(5.11.0)和CDH5(5.11.0)離線安裝

CM5(5.11.0)和CDH5(5.11.0)離線安裝

  • 概述
  • 檔案下載
  • 系統環境搭建
  • 日誌檢視
  • Q&A
  • 參考

概述

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/

    這裡下載的是5.11.0的版本,https://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.11.0_x86_64.tar.gz 

  • CDH安裝包 

          地址:http://archive.cloudera.com/cdh5/parcels 

         本文基於CentOS6,下載的parcels包及manifest檔案對應的版本為el6,如果centos7,就用el7:

              CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel

              CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1

           manifest.json

  • JDBC  

          地址:http://download.softagency.net/MySQL/Downloads/Connector-J/

  

    這裡用的jdbc驅動版本是:mysql-connector-java-5.1.17.jar

 

一,環境搭建

  1. 硬體軟體要求
    我這5臺機器node1,node2,node3,node4,node5。node5作為主節點master。配置:16g記憶體,16核,如果是自己虛擬機器的話master至少8g,因為裝完叢集(裝了8個應用元件)master的記憶體已用了7g多。
    centos6.5
  2. 網路配置(所有節點)

     1.vi /etc/sysconfig/network修改hostname :

        NETWORKING=yes

        HOSTNAME=node1

       通過service network restart重啟網路服務生效

     2.  vi /etc/hosts,修改ip與主機名的對應關係

       192.168.101.71 node1

       192.168.101.72 node2

       192.168.101.73 node3

       192.168.101.74 node4

       192.168.101.79 node5
     

  3. 設定SSH無密碼訪問(所有節點)

    1.生成公鑰私鑰

         ssh-keygen -t rsa或者 ssh-keygen -t rsa -f ~/.ssh/id_rsa 

    2.將id_rsa.pub公鑰內容拷貝到機器A的authorized_keys檔案中

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    3.其他主機的id_rsa.pub拷貝到同一臺機器node5的authorized_keys

         ssh-copy-id [email protected]

    如果沒有ssh-copy-id 執行sudo yum -y install openssh-clients

    4.複製機器node5的authorized_keys檔案拷貝到其它主機

    scp /home/.ssh/authorized_keys [email protected]:/home/.ssh

    5.如果啟動無效果,需要修改ssh配置vim /etc/ssh/sshd_config

    RSAAuthentication yes                             #啟用 RSA 認證

    PubkeyAuthentication yes                          #啟用公鑰私鑰配對認證方式

    AuthorizedKeysFile      .ssh/authorized_keys      #公鑰檔案路徑(和上面生成的文

    StrictModes no
    設定完之後記得重啟SSH服務,才能使剛才設定有效。
    service sshd restart 
     
  4. 安裝Oracle Java(所有節點)
    Linux可能自帶OpenJDK,但執行CDH5需要使用Oracle的JDK,需要Java 7以上版本的支援
    解除安裝自帶的OpenJDK** 使用下述命令查詢相關的java包
    rpm -qa | grep java
    使用-e選項填入包名解除安裝
    rpm -e --nodeps packageName
    安裝oracle jdk 配置環境變數/etc/profile.再source使起生效這裡不在贅述。
     
  5. 安裝配置MySQL(主節點)

    通過yum install mysql-server安裝mysql伺服器。

    chkconfig mysqld on設定開機啟動,並service mysqld start啟動mysql服務,

    設定root的初試密碼:mysqladmin -u root password '123456'。

     

    mysql -uroot -p進入mysql命令列,建立以下資料庫:

    #為hive建庫hive

    create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    #activity monitor

    create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    #為oozie建庫oozie

    create database oozieDEFAULT CHARSET utf8 COLLATE utf8_general_ci;

    #為hue建庫hue

    create database hueDEFAULT CHARSET utf8 COLLATE utf8_general_ci;

     

    設定root授權訪問以上所有的資料庫:

    #授權root使用者在主節點擁有所有資料庫的訪問許可權

    grant all privileges on *.* to 'root'@'n1' identified by 'xxxx' with grant option;

  6.  

    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';  //為root新增遠端連線的能力。
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'node01' IDENTIFIED BY 'root';
    mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root';
     

    flush privileges;

     

  7. 關閉防火牆和SELinux(所有節點)

    注意: 需要在所有的節點上執行,因為涉及到的埠太多了,臨時關閉防火牆是為了安裝起來更方便,安裝完畢後可以根據需要設定防火牆策略,保證叢集安全。

    關閉防火牆:

    service iptables stop (臨時關閉)  
    chkconfig iptables off (重啟後生效)

    關閉SELINUX(實際安裝過程中發現沒有關閉也是可以的,不知道會不會有問題,還需進一步進行驗證):

    setenforce 0 (臨時生效)  
    修改 /etc/selinux/config 下的 SELINUX=disabled (重啟後永久生效)
  8. 配置NTP服務(所有節點) 

    叢集中所有主機必須保持時間同步,如果時間相差較大會引起各種問題,例如主機執行狀態不良等。 具體思路如下:

    master節點作為ntp伺服器與外界對時中心同步時間,隨後對所有datanode節點提供時間同步服務。

    所有datanode節點以master節點為基礎同步時間。

    所有節點安裝相關元件:yum install ntp。完成後,配置開機啟動:chkconfig ntpd on,檢查是否設定成功:chkconfig --list ntpd其中2-5為on狀態就代表成功。

    主節點配置

    在配置之前,先使用ntpdate手動同步一下時間,免得本機與對時中心時間差距太大,使得ntpd不能正常同步。這裡選用103.226.213.30作為對時中心,ntpdate -u 3.asia.pool.ntp.org
    下面是國內最活躍的時間伺服器地址:
    server 0.cn.pool.ntp.org 
    server 0.asia.pool.ntp.org 
    server 3.asia.pool.ntp.org 
    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

    ntp服務只有一個配置檔案,配置好了就OK。 這裡只給出有用的配置,不需要的配置都用#注掉,這裡就不在給出: 

    driftfile /var/lib/ntp/drift

    restrict 127.0.0.1

    restrict -6 ::1

    restrict default nomodify notrap

    server 103.226.213.30 prefer 

    includefile /etc/ntp/crypto/pw

    keys /etc/ntp/keys

    配置檔案完成,儲存退出,啟動服務,執行如下命令:service ntpd start 

    檢查是否成功,用ntpstat命令檢視同步狀態,出現以下狀態代表啟動成功: 

    synchronised to NTP server () at stratum 2

    time correct to within 74 ms

    polling server every 128 s

    如果出現異常請等待幾分鐘,一般等待5-10分鐘才能同步。 

    配置ntp客戶端(所有子節點) 

    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 node01

    includefile /etc/ntp/crypto/pw

    keys /etc/ntp/keys

    ok儲存退出,請求伺服器前,請先使用ntpdate手動同步一下時間:ntpdate -u node01 (主節點ntp伺服器) 

    這裡可能出現同步失敗的情況,請不要著急,一般是本地的ntp伺服器還沒有正常啟動,一般需要等待5-10分鐘才可以正常同步。啟動服務:service ntpd start 

    因為是連線內網,這次啟動等待的時間會比master節點快一些,但是也需要耐心等待一會兒


     

二,Cloudera Manager安裝與叢集配置

 在上節已將環境配置完成。下面開始安裝CM和搭建叢集。

1,主節點安裝CM  

解壓:tar xzvf cloudera-manager*.tar.gz將解壓後的cm-5.9和cloudera目錄放到/opt目錄下。 

建立資料庫:將下載好的mysql-connector-java-5.1.17.jar放到/opt/cm-5.11.0/share/cmf/lib/

初始化資料庫: /opt/cm-5.11.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -proot --scm-host localhost scm scm scm

引數分別是:資料庫型別 資料庫名稱 -h資料庫主機名 -u資料庫使用者名稱 -p資料庫密碼--scm-host cmserver主機名 scm scm scm

2.agent配置 

修改/opt/cm-5.11.0/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名。

server_host=node01

同步Agent到其他所有節點:

scp -r /opt/cm-5.11.0 [email protected]:/opt/

scp -r /opt/cm-5.11.0 [email protected]:/opt/

在所有節點建立cloudera-scm使用者

useradd --system --home=/opt/cm-5.11.0/run/cloudera-scm-server/ --no-create-home --  shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

3.準備Parcels,用以安裝CDH5 

將CHD5相關的Parcel包放到主節點的/opt/cloudera/parcel-repo/目錄中(parcel-repo需要手動建立)。

相關的檔案如下: 

             - CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel

              -CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1

          -manifest.json 

最後將CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1,重新命名為CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha,這點必須注意,否則,系統會重新下載CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel檔案。

相關啟動指令碼

主節點:通過/opt/cm-5.11.0/etc/init.d/cloudera-scm-server start啟動服務端。

所有節點(包括主節點):通過/opt/cm-5.11.0/etc/init.d/cloudera-scm-agent start啟動Agent服務。

我們啟動的其實是個service指令碼,需要停止服務將以上的start引數改為stop就可以了,重啟是restart。

 4,CDH5安裝配置 

Cloudera Manager Server和Agent都啟動以後,就可以進行CDH5的安裝配置了。

這時可以通過瀏覽器訪問主節點的7180埠測試一下了(由於CM Server的啟動需要花點時間,這裡可能要等待一會才能訪問),預設的使用者名稱和密碼均為admin:

http://node01:7180/

                  

 

 可以看到,免費版本的CM5已經沒有原來50個節點數量的限制了。下面這圖我安裝好了就沒剪下,用別人的圖

 

 

 

 

 各個Agent節點正常啟動後,可以在當前管理的主機列表中看到對應的節點。選擇要安裝的節點,點繼續

 

選擇需要部署的機器
這裡需要說明的是指定主機安裝有多種方式:
 1.直接列出ip或則host,多臺以逗號、分號、製表符、空格或放置在單獨的行。
 2.指定ip的地址範圍例如:10.1.1.[1-4] 或則 host[1-3].company.com.3.記得指定的主機需要關閉防火牆,(如果遇到不能安裝,最好使用安裝cloudera manager虛擬機器進行復制)

直接點繼續

 

 

 

 

 繼續,如果配置本地Parcel包無誤,那麼下圖中的已下載,應該是瞬間就完成了,然後就是耐心等待分配過程就行了,這個過程的速度就取決於節點之間的傳輸速度。

 

 

當前受管:假如在安裝的時候出現問題,如網路連線中斷,機器宕機,繼續安裝的時候可能會出現查詢不到機器,並且根據ip搜尋機器的時候,出現“當前受管”的狀態為“是”,安裝失敗的機器不能再選擇了。 
這裡寫圖片描述

這裡寫圖片描述

 至此,所有節點部署完成

 

 下一步主機檢查,遇到以下問題: 

 

 

 

       第一個警告:

 Cloudera 建議將 /proc/sys/vm/swappiness 設定為 10。當前設定為 60。使用 sysctl 命令在執行時更改該設定並編輯 /etc/sysctl.conf 以在重啟後儲存該設定。 

 echo 10 > /proc/sys/vm/swappiness

這樣操作重啟機器還是還原,要永久改變

vim   /etc/sysctl.conf

vm.swappiness=10

 

 第二個警告,提示執行命令:

 echo never > /sys/kernel/mm/transparent_hugepage/defrag

 echo never > /sys/kernel/mm/transparent_hugepage/enabled

執行完畢,重啟後,警告依然,暫時不處理

 

安裝服務

 

 

 注意:這裡開始,所有的服務,既可以通過下述自助來安裝一系列服務;也可以手動在CM管理頁面一個一個新增

 之前安裝時選擇一次性安裝一系列服務,由於沒有新建hue資料庫導致hue服務安裝不上,所以後面選擇一個一個安裝,在前期搭建環境時這樣更好,起碼出現問題可以鎖定是哪個服務。

 

分步安裝服務步驟為:

點選頁面上Cloudera MANAGER,回到主節點頁面

這裡寫圖片描述

出現cluster1群集1,點選下拉,選擇“新增服務” 
這裡寫圖片描述

這裡寫圖片描述
HDFS,Hive, HUE,Oozie, YARN, ZOOKEEPER是核心Hadoop的幾個服務,分別安裝,由於這些節點存在依賴關係,需注意先後順序(當然,安裝時CM會警告),順序是: 
Zookeeper, hdfs, yarn, hive, oozie, hue

注意:在安裝hive, hue和oozie時,要將MySQL驅動jar拷貝到相應位置

 cp /home/hadoop/mysql-connector-java-5.1.17.jar  /opt/cloudera/parcels/CDH-5.11.0-1.cdh5.11.0.p0.34/lib/hive/lib

 cp /home/hadoop/mysql-connector-java-5.1.17.jar  /var/lib/oozie

 

按需安裝完服務後,可在叢集介面(即Cloudera MANAGER)看一下叢集的狀況 ![這裡寫圖片描述](https://img-blog.csdn.net/20170204165345866?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTXlzZWxmX3dheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

    • 綠色:良好
    • 黃色:執行不良
    • 紅色:存在問題

檢視日誌

CM雖然配置麻煩,但日誌齊全,每個操作,都能找到相應的執行日誌,日誌對於配合、除錯和檢視任務進度都有很大的幫助

 

 

Q&A

hdfs

1,Hadoop Datanode節點無法啟動(All directories in dfs.data.dir are invalid)

這是data目錄沒有許可權

解決:chmod -R 777 dfs

2.執行 hadoop jar時候  輸出目錄可能需要手動新增和設定許可權,否則執行時候會提示

NFS service is already running on this host. Please stop the NFS service running on this host before attempting to start the NFS Gateway role

解決:

service nfs stop

service nfs status

3.Permission denied: user=root, access=WRITE, inode="/":hdfs:supergroup:drwxr-xr-x

許可權問題,需要修改目標操作的許可權,或者修改操作的使用者。

可以用 hdfs dfs -ls /     檢視各個目錄的所屬使用者

解決:如果目錄或檔案所屬使用者不對,需要修改: hdfs dfs -chown -R  user:group   目標檔案

 

hive

1,Version information not found 

解決:

開啟頁面>hive.metastore.schema.verification 設定為false 去掉勾選

2,javax.jdo.JDODataStoreException: Required table missing : "`VERSION`" in Catalog "" Schema "". DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable "datanucleus.autoCreateTables"

解決:

開啟頁面>datanucleus.autoCreateSchema 設定為true就是勾選就可以

 

hue 

1,Unexpected error. Unable to verify database connection

 檢視日誌報錯是:ImportError: libxslt.so.1: cannot open shared object file: No such file or directory

原因是centos缺少庫檔案,執行如下命令即可

解決:

yum install krb5-devel cyrus-sasl-gssapi cyrus-sasl-deve libxml2-devel libxslt-devel mysql mysql-devel openldap-devel python-devel python-simplejson sqlite-devel

 

參考:

http://blog.csdn.net/myself_way/article/details/54864651

http://www.linuxidc.com/Linux/2016-06/132131.htm

http://blog.csdn.net/myself_way/article/details/54864651

http://blog.csdn.net/yizheyouye/article/details/53173912

https://www.cloudera.com/documentation/enterprise/latest/topics/cm_ig_install_path_c.html