CDH6.2.0 集羣搭建

基於centos7 安裝6.2版本CM以及CDH

以下操作主要是在root用戶下進行》》》

  1. 修改hostname(每個節點)

    1.1 臨時修改 $ hostname hdfs1

    1.2 長期修改 $ vi /etc/hostname

  2. 配置 /etc/hosts(每個節點)

192.168.101.1 	hdfs1
192.168.101.2 	hdfs2
192.168.101.3 	hdfs3
192.168.101.4 	hdfs4
192.168.101.5 	hdfs5

其中選擇hdfs1作爲主節點

  1. 關閉防火牆、禁止防火牆開機自啓(每個節點)
$ systemctl stop firewalld  #關閉防火牆
$ systemctl disable firewalld #禁止防火牆開機自啓
$ vi /etc/selinux/config  #SELINUX=disabled (修改)
  1. 配置ssh免密登錄(可以不用配置)
    ~登錄各節點執行ssh-keygen -t rsa 一路回車到結束,在/root/.ssh/下面會生成一個公鑰文件id_rsa.pub
    cat /home/root/.ssh/id_rsa.pub >> /home/root/.ssh/authorized_keys 將公鑰追加到authorized_keys
    $ chmod 600 /home/root/.ssh/authorized_keys 修改權限
    將/home/root/.ssh/authorized_keys從當前節點分發到其他各個節點。如:scp /home/root/.ssh/authorized_keys root@hdfs1:/home/root/.ssh/~

  2. 配置NTP服務(所有節點)
    修改時區(改爲中國標準時區)
    $ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    安裝ntp $ yum -y install ntp
    配置ntp主機服務器,註釋掉其他ntp服務器
    $ vim /etc/ntp.conf
    server hdfs1

    在這裏插入圖片描述

重新啓動 ntp服務:$ service ntpd restart
設置開機自啓:$ systemctl enable ntpd.service
ntpdc -c loopinfo #查看與時間同步服務器的時間偏差
ntpq -p #查看當前同步的時間服務器
ntpstat #查看狀態

  1. 修改Linux swappiness參數(所有節點)
    爲了避免服務器使用swap功能而影響服務器性能,一般都會把vm.swappiness修改爲0(cloudera建議10以下)
    $ cd /usr/lib/tuned/
    $ grep "vm.swappiness" * -R #查詢出後依次修改

  2. 禁用透明頁(所有節點)
    在/etc/rc.local 添加命令:
    $ echo never > /sys/kernel/mm/transparent_hugepage/defrag
    $ echo never > /sys/kernel/mm/transparent_hugepage/enabled
    添加可執行權限:chmod +x /etc/rc.d/rc.local

  3. JDK安裝(所有節點)
    $ rpm -qa | grep java # 查詢已安裝的java
    $ yum remove java* # 卸載
    $ rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
    $ vi /etc/profile #末尾添加

export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

$ source /etc/profile
$ java -version #驗證安裝是否成功

  1. 創建/usr/share/java目錄,將mysql-jdbc包放進去(所有節點)
    $ mkdir -p /usr/share/java
    $ mv /opt/mysql-j/mysql-connector-java-5.1.34.jar /usr/share/java/
    注意:mysql-connector-java-5.1.34.jar 一定要命名爲mysql-connector-java.jar

  2. Mysql安裝(選擇一個節點)

  • 卸載舊的mysql(如有)以及mariadb:rpm -qa|grep mariadb
    $ rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

  • 解壓mysql安裝包並進行安裝:

$ tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
$ rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm 
$ rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm 
$ rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm 
$ rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm 
$ rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm 
  • MYSQL配置:
$ mysqld --initialize --user=mysql # 初始化mysql使mysql目錄的擁有者爲mysql用戶
$ cat /var/log/mysqld.log # 最後一行會有隨機生成的密碼 
$ systemctl start mysqld.service # 設置mysql服務自啓
$ mysql -uroot –ppwd

登錄進去後,ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.需要修改訪問密碼:

ALTER USER USER() IDENTIFIED BY ‘rootpwd’;
如果是5.7之前版本,可以使用如下方式: SET PASSWORD = PASSWORD(‘rootpwd’);
如果不能登陸,設置免密登錄並重啓mysql服務:
vi /etc/my.cnf #在[mysqld]的段中加上一句:skip-grant-tables ,
然後重啓mysql: systemctl restart mysqld

  • 創建庫(後續安裝服務等使用)

    create database metastore default charset utf8 collate utf8_general_ci;
    create database amon default charset utf8 collate utf8_general_ci;
    create database rman default charset utf8 collate utf8_general_ci;
    create database hue default charset utf8 collate utf8_general_ci;
    create database oozie default charset utf8 collate utf8_general_ci; 
    grant all on metastore.*  to 'metastore'@'%'  identified  by 'metastore';
    grant all on amon.*  to 'amon'@'%'  identified  by 'amon';
    grant all on rman.*  to 'rman'@'%'  identified  by 'rman';
    grant all on hue.*  to 'hue'@'%'  identified  by 'hue';
    grant all on oozie.*  to 'oozie'@'%'  identified  by 'oozie';
    

    權限回收:revoke all privileges,grant option from ‘root’@’%’;

  1. 安裝Httpd服務(hdfs1節點)
$ yum install httpd
$ service httpd start
$ systemctl enable httpd.service 設置httpd服務開機自啓
$ ps -ef | grep httpd 查看httpd服務是否啓動
  1. 配置Cloudera Manager包yum源(hdfs1節點)
    • 配置Web服務器

      $ mkdir -p /var/www/html/cloudera-repos/cdh6.2
      把 CDH 6.2 的三個文件放到該目錄下,注意把sha256後綴的文件名修改爲sha
      在這裏插入圖片描述
      $ mkdir -p /var/www/html/cloudera-repos/cm6.2
      將Cloudera Manager安裝需要的5個rpm包,asc文件以及jdk文件下載到本地,放在同一目錄,執行createrepo命令生成rpm元數據。

          $ cd /var/www/html/cloudera-repos/cm6.2 
          $ yum install createrepo 
          $ createrepo .#(注意此命令的最後帶一個點) 最終 cm6.2目錄下多了一個repodata目錄 
      
  • 修改 /etc/httpd/conf/httpd.conf 配置文件,在IfModule mime_module中修改以下內容: 把AddType application/x-gzip .gz .tgz 修改爲 AddType application/x-gzip .gz .tgz .parcel
    在這裏插入圖片描述
  • 重啓httpd服務 systemctl restart httpd,並在瀏覽器訪問:
    http://hdfs1/cloudera-repos/
  1. 製作Cloudera Manager的repo源(agent節點)
    • $ vi /etc/yum.repos.d/cloudera-manager.repo
       name=ClouderaManager
       baseurl=http://hdfs1/cloudera-repos/cm6.2
       enabled=1 # 或者enable=true 
       gpgcheck=0 # 或者gpgcheck=false	 
    
    • 更新yum源
    $ yum clean all 
    $ yum makecache 
    $ yum repolist
    
  • 重啓httpd服務 $ systemctl restart httpd
  1. 安裝Cloudera Manager Server(hdfs1)

    • 安裝CM6.2時,沒安裝jdk的要在各節點先安裝官方提供的JDK:oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

      • 第一種方式:因爲已經配置好repo倉庫所以yum時會到hdfs1/cm6.2目錄下找到oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm進行安裝

      $ yum -y install oracle-j2sdk1.8-1.8.0+update181-1.x86_64
      默認安裝在 /usr/java/jdk1.8.0_181-cloudera

      $ vim /etc/profile 文件中添加如下內容

      export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
      export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
      export PATH=$JAVA_HOME/bin:$PATH
      

      重新加載profile配置文件,讓配置文件生效:$ source /etc/profile
      檢查是否已配置好新的JDK:$ java -version
      然後scp到其他節點.

      • 第二種方式
        直接使用 rpm -ivh 命令安裝 rpm 文件的方式
        $ rpm -ivh /var/www/html/cm6.2/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
    • 通過yum安裝Cloudera Manager Server:(Cloudera Manager Server的源 已經配置到了repo庫中) $ yum -y install cloudera-manager-server cloudera-manager-agent

      最後一行顯示 Complete!安裝完CM後/opt/ 下會出現cloudera目錄

      $ mv /opt/parcels/* /opt/cloudera/parcel-repo # 將parcel包移動到指定位置

    • 初始化數據庫,格式:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password
      /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -hmysql_host -uroot -p'root' --scm-host hdfs1 cm cm_user cm_pwd
      注意:如果cm庫已經存在,會報錯,需要刪除
      執行成功最後一行顯示 All done, your SCM database is configured correctly!
      必須保證/usr/share/java目錄中已經存在 mysql-connector-java.jar 的軟連接:ln -s mysql-connector-java-5.1.46.jar mysql-connector-java.jar

    • 啓動Cloudera Manager Server

    $ systemctl start cloudera-scm-server
    $ ps -ef | grep cloudera-scm-server #查看是否啓動
    $ systemctl status cloudera-scm-server #顯示 Active: active (running) 	
    
    • 檢查端口是否監聽
    $ yum install net-tools #安裝 netstat
    $ netstat -lnpt | grep 7180 #要等一段時間啓動完全啓動成功後,才能看到端口被使用,然後才能真正訪問到CM的登錄網頁
    tcp 0  0 0.0.0.0:7180  0.0.0.0:*  LISTEN  68289/java	
    
    • 通過 hdfs1:7180/cmf/login 訪問 CM,之後相關組件可在頁面進行安裝了
  2. 遇到的問題:

  • 在部署agent時出現錯誤:
    MainThread agent ERROR Failed to connect to previous supervisor.
    這時候要確認一下:hostname 和ip是否對應 (/etc/sysconfig/network 和 /etc/hosts )
    (hostname 臨時修改方法: hostname master)
    如果對的話,還存在問題,那麼嘗試用這種方法(殺掉進程):
    kill -9 $(pgrep -f supervisord) 然後重啓agent即可。
  • 如果在界面安裝部署agent過程出現中斷導致無法繼續安裝:
    需要kill掉agent節點兩個進程:
kill -9 ${pgrep -f 'cloudera-scm-agent/events'}
kill -9 $(pgrep -f supervisord)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章