1. 程式人生 > >clouder manager完整搭建cdh叢集

clouder manager完整搭建cdh叢集

搭建cdh全過程


1)根據文件 “安裝RedHat+Linux+7”  安裝好centos7的作業系統 (3臺機器,記憶體9g、3g、3g; 磁碟40g、15g、15g)

    思考問題:如果叢集幾十臺機器,難道要逐一經行ip的配置嗎?  
              建立centos系統時,選擇的是本機模式,然後搭建系統的過程中進行的網路ip對應的是vm8的網段,配置的ip不對,沒對 應(本機模式 --》vmware1, Nat模式 --》 vmware8)
              以後搭建一開始就選擇NAT模式。(配置好後,再檢視機器的ip跟ifcfg-ens33的IP是否一致)
              這樣ip配置成功之後,就可以使用shell工具進行配置多臺機器,可以通過shell給每臺機器配置ssh,配置ssh之前得給各機器使用者新增無密碼使用sudo命令的許可權(同時關閉SELinux,否則ssh連線會要密碼) ,再寫指令碼配置多臺機器
              這樣的方案應該可以是可以執行的,雖然虛擬機器都是通過克隆出來的,但是它們的ip都不一樣的
              我們這裡因為機器比較少,所以就用手動配置了,上述這種方案遇到多臺機器的時候可以嘗試

              給cdh使用者新增無密碼使用sudo命令的許可權 (這裡也先不配置吧),我這次主要想能通過clouder manager把cdh叢集搭建起來,其它的問題先不管了
                vi /etc/sudoers 
                cdh ALL=(ALL) NOPASSWD: ALL
                                
             關閉SELinux,否則ssh連線會要密碼  (沒關也沒見要密碼)
                檢視SELinux狀態 
                /usr/sbin/sestatus -v                                             
                修改配置檔案需要重啟機器: 
                vim /etc/selinux/config 
                SELINUX=disabled
                
                
2)配置網絡卡設定ip、讓虛擬機器可以上網
            虛擬機器怎麼ping不通百度呢?(四個方面)
            a.windows中的vmware8的網段對應windows中的網段(手動設定)
            b.虛擬機器中開啟編輯網路編輯器,點選vmware8,選擇NAT模式,子網網段與之前的保持一致,如:192.168.1.0
            c.虛擬機器中點選設定,選擇NAT模式
            d.vi /etc/sysconfig/network-scripts/ifcfg-ens33    
            
            sudo chmod 777 /etc/sysconfig/network-scripts/ifcfg-ens33
            vi /etc/sysconfig/network-scripts/ifcfg-ens33    
            選擇NET模式,配置ip閘道器                                 
                    BOOTPROTO=static 
                    IPADDR=192.168.1.11
                    GATEWAY=192.168.1.2 
                    DNS1=8.8.8.8
                    DNS2=8.8.4.4
                    NETMASK=255.255.255.0 
                    ONBOOT=yes

                    sudo chmod 777 /etc/resolv.conf
                        更改DNS vi /etc/resolv.conf 
                        nameserver 8.8.8.8 
                        nameserver 8.8.4.4 

                    重啟網路 systemctl restart network 
                    
                    
                                                                  

3) 更改主機名字 vi /etc/hostname    
    修改hosts檔案,匹配主機名與ip 
    sudo chmod 777 /etc/hosts
    vi /etc/hosts
    
    192.168.1.11  cdh01
    192.168.1.12  cdh02
    192.168.1.13  cdh03

 

4)關閉防火牆 (永久性)
    關閉防火牆 
    systemctl stop firewalld.service 
    關閉開機自動啟動 
    systemctl disable firewalld.service
    
    reboot: 再進行後續操作
    
5)
    掛載光碟:mount /dev/cdrom /mnt  (每臺機器都需要掛載光碟),在此之前每臺機器cd上都對應在centos系統檔案
    刪除原來的所有repo檔案   rm -rf    /etc/yum.repos.d/*     (每臺機器都要刪完,不然install不成功)
    建立yum的原始檔: vi /etc/yum.repos.d/my.repo
    [centos-yum]
    baseurl=file:///mnt 
    enabled=1
    gpgcheck=0    
    沒有源就無法下載yum install ntp,源在安裝的系統檔案中,所以需要掛載光碟讀取
    
    開啟NTP服務
    所有節點都需要操作
    yum install ntp
    systemctl is-enabled ntpd
    systemctl enable ntpd
    systemctl start ntpd

    ntpdate手動同步一下時間     
    sudo service ntpd stop
    sudo ntpdate cn.pool.ntp.org : 同步網路時間
    sudo service ntpd start

    
6)配置免密ssh(每臺機器都執行 )  
   SSH安裝  (centos中預設已經安裝好了ssh)
   重啟OpenSSH服務   service sshd restart

生成公鑰和金鑰:ssh-keygen -t rsa
cd ~/.ssh     cat id_rsa.pub  >> authorized_keys  (追加,不會覆蓋)

修改.ssh目錄的許可權以及authorized_keys 的許可權(這個必須修改,要不然還是需要密碼,所有機器上) 
     chmod   700   ~/.ssh
     chmod    600    ~/.ssh/authorized_keys
     
ssh-copy-id  -i  id_rsa.pub  [email protected]    ---將你的公共金鑰填充到一個遠端機器上的authorized_keys檔案中
                        

    
7)java安裝的目錄:  解除安裝原有的jdk,刪完全部檔案
    rpm -qa | grep java 
    rpm -e –nodeps java-1.8.0-openjdk-1.8.0.121-0.b13.el7_3.x86_64 
    java -version 

    rpm -ivh jdk-8u161-linux-x64.rpm  (.rpm包與.gz包不一樣)

    配置環境變數: echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment


快照下
----------------------------------------------

8)clouder manager搭建cdh叢集

clouder manager放到/opt目錄
安裝包、解壓包存放地方分別是:  /root/package 、/root/training/
    
    
cdh01         clouder manager 、mysql、Agent
cdh02、03     Agent

 

8)-1)安裝mysql
a)centos7自帶的是mariadb,需要先解除安裝掉
    rpm -qa | grep mariadb
    rpm -e --nodeps mariadb-libs-5.5.41-2.el7_0.x86_64
    將下載好的mysql rpm包拷貝到伺服器上然後解壓
    tar -xvf mysql-5.7.19-1.el7.x86_64.rpm-bundle.tar -C /root/training/

    然後安裝 rpm -ivh  (互相依賴有先後順序,就裝這四個即可)
    mysql-community-common-5.7.9-1.el7.x86_64.rpm  
    mysql-community-libs-5.7.9-1.el7.x86_64.rpm             --(依賴於common)  
    mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm     -- (後面校驗資料庫hue需要)
    mysql-community-client-5.7.9-1.el7.x86_64.rpm          --(依賴於libs)  
    mysql-community-server-5.7.9-1.el7.x86_64.rpm         --(依賴於client、common) 
    mysql-community-devel-5.7.19-1.el7.x86_64.rpm  (hue會用到)

    安裝後的mysql會自動初始化

b)配置開機啟動(systemctl enable mysqld.service)
   啟動MySQL: systemctl start mysqld.service    

    檢視root使用者的密碼:cat /var/log/mysqld.log | grep password
    登入後修改密碼:
    mysql -u root -p
    alter user 'root'@'localhost' identified by '123456';

c)允許mysql遠端訪問
    use mysql;
    select user,host from user;
    update user set host='%' where user='root' AND host='localhost';
    FLUSH PRIVILEGES;


d)拷貝mysql-connector-java到各個節點指定目錄下(所有的節點)
   cp mysql-connector-java-5.1.36-bin.jar  /usr/share/java/mysql-connector-java.jar


e)建立資料庫
    create database hive ;
    create database amon ;   ---> 這個是CDH的activity monitor
    create database hue ;
    create database oozie ; 
                             
    grant all on *.* to [email protected]"%" identified by "123456";    
    

    注意:需要在cdh71上建立report資料庫,如下:
    create database report;
    create user 'reportmanager'@'%' identified by '123456';
    grant all on report.* TO 'reportmanager'@'%';
    grant all on report.* TO 'reportmanager'@'localhost' identified by '123456';

快照下
-----------

8)-2)安裝配置Clouder Manager(在cdh01上)
a)將cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz上傳至/opt目錄,並解壓
     tar -zxvf cloudera-manager-centos7-cm5.12.1_x86_64.ta r.gz   

b)將mysql的驅動放到/opt/cm-5.12.1/share/cmf/lib/中   
     cp /usr/share/java/mysql-connector-java.jar /opt/cm-5.12.1/share/cmf/lib/

c)初始化Cloudera Manager的資料庫元資訊
     /opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -hcdh01 -uroot -p123456 --scm-host cdh01 scm scm scm
        <最後三個引數是:資料庫名,資料庫使用者名稱,資料庫密碼注意符合規則>
        mysql:資料庫用的是mysql,如果安裝過程中用的oracle,那麼該引數就應該改為oracle。-hcdh01:資料庫建立在cdh01主機上面。也就是主節點上面。-uroot:root身份執行mysql。-123456:mysql的root密碼是***。–scm-host cdh01:CMS的主機,一般是和mysql安裝的主機是在同一個主機上。最後三個引數是:資料庫名,資料庫使用者名稱,資料庫密碼。 

        遇到問題:Your password does not satisfy the current policy requirements

        解決如下:修改密碼規則
        SHOW VARIABLES LIKE 'validate_password%';
        set global validate_password_policy=0;
        set global validate_password_mixed_case_count=0;
        set global validate_password_number_count=1;
        set global validate_password_special_char_count=0;
        set global validate_password_length=1;
        FLUSH PRIVILEGES;


d)建立cloudera-scm使用者
      useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

e)將以下檔案上傳至/opt/cloudera/parcel-repo/目錄
        CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel
        CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1
        manifest.json

    重新命名檔案CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1
    改名為:CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha (注意:少了一個1)

  修改 /opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名
         
         
         
8)-3)配置Cloudera  Agent(cdh02和cdh03)
a)從主節點cdh01上將Cloudera Manager Agent複製到agent節點(cdh02和cdh03)上
    scp -r  /opt/cm-5.12.1 [email protected]:/opt/
    scp -r  /opt/cm-5.12.1 [email protected]:/opt/
    
b)在agent節點(cdh02和cdh03)上建立cloudera-scm使用者
   useradd --system --home=/opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm 

   
   
8)-4)部署CDH5
a)在cdh71啟動服務Cloudera Manager Server
             /opt/cm-5.12.1/etc/init.d/cloudera-scm-server start

b)在cdh71、cdh72和cdh73上啟動的agent :             
     /opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start

c)訪問cdh71上的Cloudera Manager:
        埠:7180(http://192.168.1.11:7180/cmf/login)

  使用者名稱密碼:admin/admin
接受使用者條款
選擇60天試用版
點選“繼續”
為CDH群集安裝指定主機(選擇cdh01、cdh02和cdh03)

d)選擇儲存庫
        (點選“Parcel更多選項”刪除預設的遠端庫。如果之前沒有做這一步,會有錯誤。需要重新安裝) ---       對於不能上網的虛擬機器,能上網應該沒問題,沒試過!

        
  e)驗證正確性
        在cdh01、cdh02和cdh03上,執行下面的語句,並點選“重新執行”按鈕
        echo 10 > /proc/sys/vm/swappiness
        echo never > /sys/kernel/mm/transparent_hugepage/defrag
        echo never > /sys/kernel/mm/transparent_hugepage/enabled

f)選擇自定義,選擇要在群集上安裝的 CDH 5 服務(不要選擇kafka,後期手動整合kafka)
      預設已經分配好,但個別地方改下,zookeeper分配三臺機器,以及為activity monitor分配主機

g)校驗資料庫
     填寫mysql中建立的資料庫名、使用者名稱、密碼
     密碼之前配的是Welcome_1,測試怎麼變成了123456,hue還驗證不通過??
     因為後來我把root使用者的密碼改為了123456,這裡的資料庫對應的使用者也是root,所以密碼跟著變
     安裝mysql的時候,將 mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm 也裝上hue就校驗通過了
       
     
  h)建立成功
     驗證每臺機器上的Java後臺程序
     
     
  i)報錯客戶端配置生成需要啟用以下其他 Parcel:[kafka]
    CDH的parcel包中是沒有kafka的,說明cdh叢集要另外整合kafka,整合kafka的前提條件是要先搭建好叢集
    附上鍊接:https://www.cnblogs.com/lenmom/p/9157087.html
    
    a.根據要求選擇對應的版本下載   https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html#pcm_kafka
    b.下載kafka 的csd包(一個jar包)、parcel包(兩個parcel加一個json檔案)
    c.上傳CSD包的jar,到/opt/cloudera/csd
      上傳parcel包中的3個檔案,到/opt/cloudera/parcel-repo(檔案重名改掉、sha1字尾去掉1)
    d.進入CDH的管理介面,點選主機->parcel->檢查新parcel
      kafka出來後,點選分配、啟用按鈕,操作成功
      向叢集中新增kafka服務
    f.回到CDH主頁面,點選kafka,進入配置頁面,點選下方警告處,修改 Java Heap Size of Broker為1G
    
    
    解除安裝之前安裝不成功的叢集,重新安裝:
    刪除所有主機以及服務
    點擊向叢集新增主機,就會跟之前一樣重新開始搭建叢集
        
    
    clouder manager介面很多標紅問題:(增加記憶體、磁碟分配得到解決)
    主機記憶體磁碟感覺都不夠呢主要是記憶體,我都還沒跑任務記憶體就滿了什麼鬼(刪除不用的服務留下spark就好、試下直接新增虛擬機器記憶體)
    從節點磁碟不太夠(但可以通過克隆新增從節點解決)
    虛擬機器的記憶體、磁碟容量都可以修改莫慌