1. 程式人生 > >CDH 5.16.1 離線部署

CDH 5.16.1 離線部署

參考

  1. Cloudera Enterprise 5.16.x
  2. Installing Cloudera Manager, CDH, and Managed Services
  3. Installation Path B - Manual Installation Using Cloudera Manager Packages

一. 環境

1.1 系統節點資訊

Hostname IP CPU(cores) Memory(GB) OS Service Remark
master 172.30.200.75 2 4 centos 7.5 jdk, cloudera-scm-server, mysql
slave01 172.30.200.76 2 4 centos 7.5 jdk, cloudera-scm-agent
slave02 172.30.200.77 2 4 centos 7.5 jdk, cloudera-scm-agent
slave03 172.30.200.78 2 4 centos 7.5 jdk, cloudera-scm-agent

1.2 軟體版本

相關軟體放置在/usr/local/src/目錄。

Soft Version Download Remark
CM(Cloudera Manager) cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz bin包,根據版本下載
CDH parcel CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel
根據版本下載 軟體安裝包
CDH parcel.sha CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 根據版本下載 軟體包hash碼
CDH manifest.json manifest.json 根據版本下載 版本說明檔案
JDK jdk-8u181-linux-x64.tar.gz bin包,根據版本下載
MySQL mysql-5.7.24-el7-x86_64.tar.gz bin包,根據版本下載 存放Cloudera Manager配置檔案
MySQL-connector-Java mysql-connector-java-8.0.13.jar jar包,根據版本下載 JDBC

二. 準備工作

2.1 部分預配置

所有節點執行以下操作:

  • 永久關閉防火牆(firewalldiptables);
  • 永久關閉selinux
  • 設定ntp

2.2 設定hosts

  • 所有節點設定/etc/hosts

    cat << EOF >> /etc/hosts
    
    # hadoop nodes
    172.30.200.75 master
    172.30.200.76 slave01
    172.30.200.77 slave02
    172.30.200.78 slave03
    EOF

2.3 免密訪問設定

  • 在所有節點生成祕鑰

    ssh-keygen -t rsa
  • 在master節點生成authorized_keys檔案

    cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
  • 在master節點執行,將叢集每個節點的公鑰id_rsa.pub放入master節點的authorized_keys檔案中

    for i in {1..3}; do ssh [email protected]$i cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys; done
  • 在master節點執行,將master節點的authorized_keys檔案放置到叢集每個節點的/root/.ssh/目錄,依然命名位authorized_keys
    • 最終的效果是叢集中所有節點兩兩相互免密訪問;
    • 注意:首次登陸時有公鑰檢查,可通過在/etc/ssh/ssh_config檔案中設定StrictHostKeyChecking no繞過,或使用-o引數跳過
    for i in {1..3}; do scp /root/.ssh/authorized_keys [email protected]$i:/root/.ssh/authorized_keys; done

2.4 安裝JDK

所有節點都需要安裝JDK。

  • 安裝JDK

    
    cd /usr/local/src
    tar -zxvf jdk-8u181-linux-x64.tar.gz
    mkdir -p /usr/java
    mv jdk1.8.0_181/ /usr/java/
    
    # 設定軟連結,方便升級替換
    ln -s /usr/java/jdk1.8.0_181/ /usr/java/current
  • 設定變數

    cat << EOF >> /etc/profile
    
    # JDK
    export JAVA_HOME=/usr/java/current
    export JRE_HOME=/usr/java/current/jre
    export PATH=$PATH:/usr/java/current/bin
    export CLASSPATH=./:/usr/java/current/lib:/usr/java/current/jre/lib
    EOF
  • 驗證

    # 載入變數
    source /etc/profile
    
    # 驗證
    java -version

2.5 安裝MySQL

只有master節點需要安裝MySQL。

  • 解除安裝系統自帶的相關資料庫

    rpm -qa | grep mysql
    rpm -qa | grep mariadb
    
    # --nodeps:不檢查依賴
    rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
  • 部署MySQL

    # 採用bin包部署,解壓後直接使用
    cd /usr/local/src
    tar -zxvf mysql-5.7.24-el7-x86_64.tar.gz -C /usr/local/
    mv /usr/local/mysql-5.7.24-el7-x86_64/ /usr/local/mysql
  • 賬號與許可權

    # 新增賬號
    groupadd mysql
    useradd -g mysql -s /sbin/nologin mysql
    
    # 建立"data"目錄
    mkdir /data
    
    # 賦權
    chown -R mysql:mysql /usr/local/mysql/
    chown -R mysql:mysql /data/
  • 初始化MySQL
    cd /usr/local/mysql/
    bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data
  • 設定變數

    cat << EOF >> /etc/profile
    
    # MySQL
    export PATH=$PATH:/usr/local/mysql/bin
    EOF
    
    # 載入變數
    source /etc/profile
    
    # 軟連結
    ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
    ln -s /usr/local/mysql/include/mysql /usr/include/mysql
  • 設定開機啟動

    # 複製開機啟動指令碼到系統服務
    cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
    chown mysql:mysql /etc/rc.d/init.d/mysqld
    
    # 修改預設的"basedir"與"datadir"
    vim /etc/rc.d/init.d/mysqld
    basedir=/usr/local/mysql
    datadir=/data
    
    # 新增開機啟動指令碼
    chkconfig --add mysqld
    chkconfig --level 35 mysqld on
  • 檔案路徑:log && pid && socket

    # 日誌路徑
    mkdir -p /var/log/mysqld
    touch /var/log/mysqld/mysqld.log
    chown -R mysql:mysql /var/log/mysqld/
    
    # pid路徑
    mkdir -p /var/run/mysqld
    chown -R mysql:mysql /var/run/mysqld/
    
    # socker路徑
    mkdir -p /var/lib/mysqld
    chown -R mysql:mysql /var/lib/mysqld/
    ln -s /var/lib/mysqld/mysql.sock /tmp/mysql.sock
  • 設定my.cnf檔案

    # 注意"log-error","pid-file"與"socket"的路徑
    mkdir -p /usr/local/mysql/etc
    cat << EOF >> /usr/local/mysql/etc/my.cnf
    [mysqld]
    character-set-server=utf8
    max_connections = 3000
    log-error=/var/log/mysqld/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    socket=/var/lib/mysqld/mysql.sock
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
    
    [mysql]
    default-character-set=utf8
    EOF
    
    # 軟連結
    ln -s /usr/local/mysql/etc/my.cnf /etc/my.cnf
    
    # 賦權
    chown -R mysql:mysql /usr/local/mysql/etc/
  • 啟動MySQL服務

    # 啟動服務
    service mysqld start
    
    # 驗證
    service mysqld status
  • 設定MySQL賬號密碼與登陸許可權

    # 使用初始化密碼登陸
    mysql -uroot -p
    
    # 修改密碼,注意不能使用"$"等特殊符號
    set password=password('cdh12#hadoop');
    flush privileges;
    
    # 遠端登陸許可權
    grant all privileges on *.*  to  'root'@'%'  identified by 'cdh12#hadoop'  with grant option;
    flush privileges;
    
    # 檢視賬號
    select user, host, authentication_string from mysql.user;

三. Cloudera Manager安裝

3.1 部署CM Server & Agent

  • 在所有節點建立CM目錄/opt/cloudera-manager

    mkdir /opt/cloudera-manager
  • 在master節點向其餘節點分發cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz

    for i in {1..3}; do scp /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz  [email protected]$i:/usr/local/src/ ; done
  • 在所有節點解壓cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz/opt/cloudera-manager/目錄

    tar -zxvf /usr/local/src/cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz -C /opt/cloudera-manager/
  • 在所有slave節點修改/opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.iniserver_host引數為master節點ip或主機名

    sed -i "s/server_host=localhost/server_host=master/g" /opt/cloudera-manager/cm-5.16.1/etc/cloudera-scm-agent/config.ini

3.2 賬號 && 許可權

  • 在所有節點建立cloudera-scm賬號,這是CM相關服務使用的預設賬號

    # 禁止使用"cloudera-scm"賬號登陸
    useradd --system --home=/opt/cloudera-manager/cm-5.16.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  • 在所有節點/opt/cloudera-manager目錄賦權

    chown -R cloudera-scm:cloudera-scm /opt/cloudera-manager

3.3 設定開機啟動

  • 在master節點設定系統服務

    # 設定使用"cloudera-scm-server"為系統啟動服務
    cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-server /etc/rc.d/init.d/
    chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-server
    
    # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路徑
    vim /etc/rc.d/init.d/cloudera-scm-server
    CMF_DEFAULTS=/opt/cloudera-manager/cm-5.16.1/etc/default
    
    
    # 新增系統啟動服務
    chkconfig --add cloudera-scm-server
    chkconfig --level 35 cloudera-scm-server on
    checkconfig --list
  • 在所有slave節點設定系統服務

    # 設定使用"cloudera-scm-agent"為系統啟動服務
    cp /opt/cloudera-manager/cm-5.16.1/etc/init.d/cloudera-scm-agent /etc/rc.d/init.d/
    chown cloudera-scm:cloudera-scm /etc/rc.d/init.d/cloudera-scm-agent
    
    # 修改"CMF_DEFAULTS=${CMF_DEFAULTS:-/etc/default}"的路徑"-/etc/default"
    vim /etc/rc.d/init.d/cloudera-scm-agent
    CMF_DEFAULTS=${CMF_DEFAULTS:/opt/cloudera-manager/cm-5.16.1/etc/default}
    
    # 新增系統啟動服務
    chkconfig --add cloudera-scm-agent
    chkconfig --level 35 cloudera-scm-agent on
    checkconfig --list

3.4 初始化資料庫

  • 在所有節點設定MySQL驅動(JDBC);
  • 注意:JDBC在任意節點,後續"CDH安裝配置"階段Reports Manager被分配在任意節點都可以

    cp /usr/local/src/mysql-connector-java-8.0.13.jar /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/
    chown cloudera-scm:cloudera-scm /opt/cloudera-manager/cm-5.16.1/share/cmf/lib/mysql-connector-java-8.0.13.jar
  • 在master節點重啟MySQL服務

    service mysqld restart
  • 在任意節點初始化CM
  • 注意:Cloudera服務需要的相關database如下:
    • 表中給出的是CM相關服務配置檔案中預設的databaseuser
    • database在資料庫中可直接建立,但CM初始化時會檢查database是否存在,沒有則建立相關database
    Service Database User
    Cloudera Manager Server scm scm
    Activity Monitor amon amon
    Reports Manager rman rman
    Hue hue hue
    Hive Metastore Server metastore metastore
    Sentry Server sentry sentry
    Cloudera Navigator Audit Server nav nav
    Cloudera Navigator Metadata Server navms navms
    Oozie oozie oozie
    # 格式:scm_prepare_database.sh [options] (postgresql|mysql|oracle) database username [password]
    # scm_prepare_database.sh:建立與配置CMS需要的資料庫指令碼,預設位置在"/opt/cloudera-manager/cm-5.16.1/share/cmf/schema/"目錄;
    # postgresql|mysql|oracle:必選項,資料庫型別;
    # database:必選項,針對postgresql|mysql,建立SCM資料庫;針對oracle,填寫sid;
    # username:必選項,SCM資料庫的賬號;
    # password:選填項,SCM資料庫的賬號密碼,如果不指定,會提示輸入;
    # options:
    # -h:資料庫主機ip或hostname,預設是"localhost";
    # -u:資料庫賬號,需要具備增刪改查的許可權,預設是"root";
    # -p:賬號密碼,預設無密碼;
    # --scm-host:SCM server主機名,預設是"localhost"
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % scm scm scm_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % amon amon amon_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % rman rman rman_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % hue hue hue_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % metastore metastore metastore_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % sentry sentry sentry_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % nav nav nav_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % navms navms navms_pass
    /opt/cloudera-manager/cm-5.16.1/share/cmf/schema/scm_prepare_database.sh mysql -h master -uroot -pcdh12#hadoop --scm-host % oozie oozie oozie_pass

    返回如下資訊,表示配置成功

    [main] INFO  com.cloudera.enterprise.dbutil.DbCommandExecutor  - Successfully connected to database.
    All done, your SCM database is configured correctly!

3.5 建立本地parcel源

  • 在master節點製作本地parcel源

    # 建立本地parcel源目錄
    mkdir -p /opt/cloudera/parcel-repo
    
    # 將parcel相關安裝包放置到"/opt/cloudera/parcel-repo"目錄;
    # 說明:"/opt/cloudera/parcel-repo"目錄可放置多套parcel安裝包;
    # 將"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1"重新命名為"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha",否則會重新下載"CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel"安裝包
    mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel /opt/cloudera/parcel-repo/
    mv /usr/local/src/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.16.1-1.cdh5.16.1.p0.3-el7.parcel.sha
    mv /usr/local/src/manifest.json /opt/cloudera/parcel-repo/
    
    # 賦權
    chown -R cloudera-scm:cloudera-scm /opt/cloudera/
  • 在所有salve節點建立parcel源

    # 建立slave節點軟體目錄
    mkdir -p /opt/cloudera/parcels
    
    # 賦權
    chown -R cloudera-scm:cloudera-scm /opt/cloudera/

3.6 啟動CM服務

  • 在master節點啟動cloudera-scm-server服務

    # "cloudera-scm-server"啟動需要連線資料庫,監聽埠啟動會延遲
    service cloudera-scm-server restart
    service cloudera-scm-server status -l
    
    # 通過啟動後的狀態檢視,指令碼需要執行"pstree"命令,需要安裝依賴包
    yum install psmisc -y
  • 在所有salve節點啟動cloudera-scm-agent服務

    yum install psmisc -y
    service cloudera-scm-agent restart
    service cloudera-scm-agent status -l

四. 安裝CDH

4.1 CDH安裝配置

  • 瀏覽器訪問CM:http://172.30.200.75:7180
  • 預設賬號/密碼:admin/admin
  • 終端使用者許可條款與條件
  • 部署版本,選擇Cloudera Enterprise 試用版
  • 版本與服務說明
  • cloudera-scm-agent正常啟動後,可發現相應的節點,指定叢集服務的安裝節點
  • 選擇CDH版本
  • 叢集安裝,如果本地parcel源配置正確,則"下載"階段瞬間完成,其餘階段視節點數與內部網路情況決定
  • 檢查主機正確性(需要一些時間),針對slave節點有兩個優化建議:
    • 1.建議將/proc/sys/vm/swappiness設定為最大值10
      • swappiness值控制作業系統嘗試交換記憶體的積極;
      • swappiness=0:表示最大限度使用實體記憶體,之後才是swap空間;
      • swappiness=100:表示積極使用swap分割槽,並且把記憶體上的資料及時搬遷到swap空間;
      • 如果是混合伺服器,不建議完全禁用swap,可以嘗試降低swappiness
      • 臨時調整:

        sysctl vm.swappiness=10
      • 永久調整:

        cat << EOF >> /etc/sysctl.conf
        
        # Adjust swappiness value
        vm.swappiness=10
        EOF
    • 2.已啟用透明大頁面壓縮,可能會導致重大效能問題,建議禁用此設定。
      • 臨時調整:

        echo never > /sys/kernel/mm/transparent_hugepage/defrag
        echo never > /sys/kernel/mm/transparent_hugepage/enabled
      • 永久調整:

        cat << EOF >> /etc/rc.d/rc.local
        
        # Disable transparent_hugepage
        echo never > /sys/kernel/mm/transparent_hugepage/defrag
        echo never > /sys/kernel/mm/transparent_hugepage/enabled
        EOF
        
        # centos7.x系統,需要為"/etc/rc.d/rc.local"檔案賦予執行許可權
        chmod +x /etc/rc.d/rc.local
  • 叢集設定,選擇服務進行安裝,這裡選擇自定義服務HDFS服務
  • 叢集設定,自定義角色分配,預設即可
  • 叢集設定,Reports Manager資料庫名稱rman,使用者名稱rman
  • 叢集設定,稽核更改,預設即可
  • 叢集設定,首次執行
  • 叢集設定,服務安裝完成
  • Cloudera Manager 主頁
  • Cloudera Manager HDFS 服務彙總