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 root@node5
    如果沒有ssh-copy-id 執行sudo yum -y install openssh-clients
    4.復制機器node5的authorized_keys文件拷貝到其它主機
    scp /home/.ssh/authorized_keys ubuntu@node1:/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;
    flush privileges;
  6. 關閉防火牆和SELinux(所有節點)

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

    關閉防火牆:

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

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

    setenforce 0 (臨時生效)  
    修改 /etc/selinux/config 下的 SELINUX=disabled (重啟后永久生效)
  7. 配置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 103.226.213.30。  
    下面是國內最活躍的時間服務器地址:
    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 node5

    includefile /etc/ntp/crypto/pw

    keys /etc/ntp/keys

    ok保存退出,請求服務器前,請先使用ntpdate手動同步一下時間:ntpdate -u node5 (主節點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 -hnode5 -uroot -p123456 --scm-host node5 scm scm scm 

參數分別是:數據庫類型 數據庫名稱 -h數據庫主機名 -u數據庫用戶名 -p數據庫密碼--scm-host cmserver主機名 scm scm scm

2.agent配置 

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

同步Agent到其他所有節點: scp -r /opt/cm-5.11.0 root@node2:/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:

                  

 

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

 

 

 

 

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

 

 

 

 繼續,如果配置本地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)看一下集群的狀況 ![這里寫圖片描述](http://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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM