1. 程式人生 > >CDH5.12.0 (5.X)安裝筆記(離線parcel安裝)

CDH5.12.0 (5.X)安裝筆記(離線parcel安裝)

作業系統:CentOS 7.3

本教程採用虛擬機器安裝CDH的完全分散式。

機器環境配置

配置虛擬機器與安裝系統

本教程選擇VMware 10 作為虛擬機器執行工具。

首先,需要配置虛擬機器的虛擬網路,以及為虛擬機器和物理主機之間配置閘道器,使虛擬機器能夠連上網路。

開啟Vmware,編輯-> 虛擬網路編輯器-> 子網IP (192.168.2.0) 子網掩碼(255.255.255.0)->  應用 -> 確定

回到windows --> 開啟網路和共享中心 -> 更改介面卡設定 -> 右鍵VMnet8 -> 屬性 -> 雙擊IPv4 -> 設定windows的IP:192.168.2.2子網掩碼:255.255.255.0  ,閘道器 192.168.2.1,

首選DNS :8.8.8.8,備用DNS:114.114.114.114

安裝CentOS

使用VMware安裝CentOS,由於自己筆記本記憶體8G,為了流暢執行CentOS,選擇最小(Mini)版安裝即可。

設定主節點機器記憶體為:2G,處理器:1,核心數:1。(其餘節點,設定記憶體為:512M,處理器:1,核心數:1)

建立使用者 :hadoop  密碼:hadoop

修改普通使用者執行許可權

讓普通使用者具備sudo執行許可權

切換到root

然後  vi /etc/sudoers   加入一行

root    ALL=(ALL)       ALL
hadoop  ALL=(ALL)       ALL

關閉防火牆和selinux

關閉firewall:

[[email protected] ~]# systemctl stop firewalld.service      #停止firewall
[[email protected] ~]# systemctl disable firewalld.service   #禁止firewall開機啟動
[[email protected] ~]# firewall-cmd --state                  #檢視預設防火牆狀態(關閉後顯示notrunning,開啟後顯示running)

配置閘道器和IP

查詢此虛擬機器正在執行的網絡卡

[[email protected] ~]# ifconfig

可以看到該虛擬機器的網絡卡為 ens33 .

接下來,修改網絡卡配置檔案

[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

需要將配置檔案中修改(或新增)項 如下:

  • BOOTPROTO="static" #dhcp改為static 
  • ONBOOT="yes" #開機啟用本配置  

  • IPADDR=192.168.2.110 #靜態IP

  • GATEWAY=192.168.2.1 #預設閘道器 
  • NETMASK=255.255.255.0 #子網掩碼 

  • DNS1=192.168.2.1 #DNS 配置

配置完畢,重啟網絡卡。並查詢一下本機的ip地址。

[[email protected] ~]# systemctl restart network
[[email protected] ~]#  ip addr

回到windows,檢測一下物理主機能否ping通虛擬機器(本人物理主機使用windows系統)

ping 192.168.2.110

回到虛擬機器,檢測一下虛擬機器能否ping通網路

ping www.baidu.com

若都能ping通,則表示網絡卡閘道器配置成功!


通過Secure CRT遠端連線虛擬機器

在物理主機安裝 Secure CRT 軟體,輸入hostname和username對虛擬機器進行遠端連線。

修改主機名

修改hosts檔案和hostname檔案

vi /etc/hosts    #在hosts檔案中新增記錄,192.168.2.110 master
vi /etc/hostname   # 把檔案中原來的名字去掉,修改為 master
vi /etc/sysconfig/network   #把檔案中的主機名修改為 master

再次查詢,可見主機名已經更改。

更改yum源

yum源都在國外,我們現在更改為 163 的源。(因為本教程中是在CentOS 7 利用yum安裝 mysql 5.7,aliyun源缺少相關元件,不建議使用 )

下載  CentOS7-Base-163.repo 檔案,將虛擬機器中的源 進行備份,並替換掉。

 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

在Secure CRT 中,上傳下載的 CentOS7-Base-163.repo  檔案,同時按下 alt + p 後,出現sftp視窗,然後put d:\CentOS7-Base-163.repo  

檔案會上傳至 /home/hadoop 根目錄中

接下來,將檔案放到 /etc/yum.repos.d 中,並重命名稱。

 mv /etc/yum.repos.d/CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo 

接下來,我們要makecache一下,然後更新包。

 yum makecache
 yum update

過程可能很長,y輸入一直繼續。

至此,yum源更新完畢。

安裝JDK

雖然 jdk1.7 已經停止維護了,但是根據cloudera官方的文件表示,支援的jdk1.8,會使某些元件執行不正常。所以,根據官方文件,選擇了 jdk-7u80-linux-x64.tar.gz (注意:7u80是已經測試的版本,不同的jdk7更新版本 支援能力不同)

  • 上傳 jdk-7u80-linux-x64.tar.gz 檔案。上傳alt+p 後出現sftp視窗,然後put d:\ jdk-7u80-linux-x64.tar.gz 
  • 解壓jdk。 建立資料夾 

     mkdir /home/hadoop/app

    解壓

     tar -zxvf jdk-7u80-linux-x64.tar.gz -C /home/hadoop/app

  • 將java新增到環境變數中

     vi /etc/profile

    在/etc/profile檔案最後新增

    export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585 

    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CLASSPATH     

    export PATH=$JAVA_HOME/bin:$PATH  

    重新整理配置    

     source /etc/profile
  • 檢測安裝是否成功。

      java -version

修改hosts檔案

(因為是用虛擬機器配置完全分散式,所以,提前在/etc/hosts中配置好所節點的IP和主機名)

    我們在/etc/hosts中修改、新增如下內容:   

         192.168.2.110  master
         192.168.2.111  slave1
         192.168.2.112  slave2

這裡,我們配置一個主節點,兩個從節點。

安裝配置MySQL

我們需要一個外部資料庫來儲存叢集的資訊,我們使用MySQL。這裡,我們採用MySQL的最新版:5.7,包採用   mysql57-community-release-el7-11.noarch.rpm   

根據Cloudera的官方文件,MySQL的5.7是支援的。

注意:由於centos 7不支援 mysql的版本,所以,我們需要用rpm包來進行安裝。下圖顯示無法直接使用yum命令安裝mysql。

然後,我們開始安裝mysql的rpm包,此處注意,我們只在master上安裝:

 rpm -ivh mysql57-community-release-el7-11.noarch.rpm


然後我們更新yum(一直輸入 y ):

 yum update

然後安裝mysql-server(一直輸入 y ):

 yum install mysql-server

接下來,設定mysql開機啟動:

 systemctl enable mysqld.service

然後啟動mysql:

 systemctl start mysqld

接下來,設定root使用者密碼:

由於mysql 5.7 或是更高版本,在安裝完成後會生成隨機密碼,而且儲存在mysql的error log日誌裡面,所以,需要查詢隨機密碼,並修改密碼。

如下,以前版本的mysql預設沒有密碼,但是mysql5.7會報錯誤

 [[email protected] local]# mysql -u root -p   
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

查詢隨機密碼:

sudo grep 'temporary password' /var/log/mysqld.log   NT,M85Z/kAw_

修改mysql密碼: mysqladmin -u root -p password "111111" 然後輸入之前的密碼(這是我的隨機密碼  : 4bqK(h3ly<Gy

[[email protected] local]# mysqladmin -u root -p password "111111"
Enter password: 
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
mysqladmin: unable to change password; error: 'Your password does not satisfy the current policy requirements'

此時,可以發現,設定的新密碼太弱了,不滿足當前的密碼策略,這個錯誤和密碼安全等級相關,檢視安全等級命令如下:

 mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+

關於安全等級更詳細的介紹如下

  • LOW 政策只測試密碼長度。 密碼必須至少有8個字元長。
  • MEDIUM 政策的條件 密碼必須包含至少1數字字元,1 大寫和小寫字元,和1特別 (nonalphanumeric)字元。
  • STRONG 政策的情況 密碼子字串長度為4的或更長時間不能匹配 單詞在字典檔案中,如果一個人被指定。

直接通過 my.cnf 配置檔案關閉 validate_password 外掛。

只需要新增一行 :

validate_password = off

再進行查詢時,可以看到validate_password外掛已經關閉了。

最後,為了解決密碼失效問題,要在配置檔案的[mysqld]欄位下,增加欄位(不知道 my.cnf 檔案在哪裡,可以使用 whereis my.cnf 命令查詢

[mysqld]

default_password_lifetime=0

重啟mysql服務: 

shell > systemctl restart mysqld

修改mysql 的 root 使用者密碼

[[email protected] local]# mysqladmin -u root -p password "111111"
Enter password: 

測試密碼是否修改成功:

[[email protected] local]# mysql -u root -p 
Enter password: 

安裝配置NTP

安裝ntp服務,使伺服器同步。

yum -y install ntp

更改配置檔案/etc/ntp.conf

在master節點namenode節點,註釋掉原有的server指向,把時間伺服器的域名地址指向一個靠譜可連的時間伺服器,我選擇的是ntp.api.bz.

# vi /etc/ntp.conf
     ……
     #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
    server ntp.api.gz iburst
    ......

設定系統開機自動啟動,並啟動ntp服務。

systemctl enable ntpd
systemctl start ntpd

VMware克隆機器

  • 建立快照

  • 根據快照,克隆虛擬機器


  • 至此,我們已經擁有三個節點的機器,新克隆出來的機器需要進行另外的配置。

修改新克隆機器上的主機名

vi /etc/hostname   # 把檔案中原來的名字去掉,修改為 本主機名稱(slave1/slave2)
vi /etc/sysconfig/network   #把檔案中的主機名修改為本主機名稱 (slave1/slave2)

修改新克隆機器上的IP地址

修改另外兩臺節點的IP,如下:

  • IPADDR=192.168.2.111 #靜態IP(slave1)
  • IPADDR=192.168.2.112 #靜態IP(slave2)

利用Secure CRT 進行遠端連線配置。

修改新克隆機器上的NTP配置

修改另外兩臺節點的 配置檔案/etc/ntp.conf,把時間伺服器的server指向master namenode節點

# vi /etc/ntp.conf
     ……
     #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
    server 192.168.2.110 iburst
    ......

啟動NTP,並設定開機啟動。

 systemctl start ntpd
 systemctl enable ntpd 


配置SSH免密碼登入

每臺機器執行:ssh-keygen -t rsa,一路回車

輸入命令 ll -a ,  可以檢視到 .ssh 目錄。

生成兩個檔案,一個私鑰,一個公鑰,在master(/home/hadoop/.ssh)中執行:

cp id_rsa.pub authorized_keys

  • 本機無金鑰登入

               修改authorized_keys許可權:chmod 644 authorized_keys

               此時重啟ssh服務:(sudo systemctl restart sshd.service)sudo service sshd restart

               ssh master

  • master與其他節點無金鑰登入         

               從master中把authorized_keys分發到各個結點上:

scp /home/hadoop/.ssh/authorized_keys slave1:/home/hadoop/.ssh
scp /home/hadoop/.ssh/authorized_keys slave2:/home/hadoop/.ssh 

           然後在各個節點對authorized_keys執行(一定要執行該步,否則會報錯):chmod 644 authorized_keys

嘗試在master上,通過ssh連線 slave1

備註:可以修改成這一句話。

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

Cloudera安裝開始

安裝Cloudera manager

下載CM包: http://archive.cloudera.com/cm5/cm/5/    選擇  cloudera-manager-centos7-cm5.12.0_x86_64.tar.gz 版本下載。

現在我們要正式開始安裝cloudera manger了,首先把我們事先下載好的cloudera manager上傳到各個機器,並解壓。

  • alt + p 通過SFTP 上傳檔案。
  • 然後,把檔案解壓到 /opt 目錄下(每臺機器都如此)

接下來,我們要在所有機器上配置主節點主機的名字:

vi /opt/cm-5.12.0/etc/cloudera-scm-agent/config.ini

例如,在master主機上,就把這個配置檔案修改成如下。同樣的,在slave1主機上,修改為master,在slave2主機上,修改為master。

接下來,我們要在所有機器上建立使用者,

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

下載 檔案後,我們解壓,把 mysql-connector-java-5.1.42-bin.jar 檔案上傳到/opt/cm-5.12.0/share/cmf/lib/目錄下:

cp mysql-connector-java-5.1.42-bin.jar /opt/cm-5.12.0/share/cmf/lib/

並把該驅動檔案,傳到其他節點對應的目錄中:

scp mysql-connector-java-5.1.42-bin.jar slave1:/opt/cm-5.12.0/share/cmf/lib/
scp mysql-connector-java-5.1.42-bin.jar slave2:/opt/cm-5.12.0/share/cmf/lib/

之後,我們開始在主節點建立資料庫,CM給了指令碼自動建立資料庫,所以,我們只需要執行該指令碼即可:

/opt/cm-5.12.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p111111 --scm-host localhost scm 111111

其中111111是資料庫的root使用者密碼,而後面的111111是新的使用者scm的密碼。


執行完指令碼檔案,可以檢視一下mysql是否有該資料庫。

現在,我們開始啟動 Cloudera Manager , 首先在master上啟動 server :

/opt/cm-5.12.0/etc/init.d/cloudera-scm-server start


然後我們在所有機器上啟動agent

/opt/cm-5.12.0/etc/init.d/cloudera-scm-agent start


安裝CDH

  • CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel
  • CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel.sha1
  • manifest.json

(其中,下載結束後,要把 *.sha1 檔案修改為 *.sha  )

然後,把三個檔案一起放到 /opt/cloudera/parcel-repo/ 目錄下(只是主節點如此操作):

mv CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel /opt/cloudera/parcel-repo/
mv CDH-5.10.2-1.cdh5.10.2.p0.5-el7.parcel.sha /opt/cloudera/parcel-repo/
mv manifest.json /opt/cloudera/parcel-repo/

安裝accumulo (CM 5.12 web安裝介面要求安裝accumulo ,其他版本未測試)

  • ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel
  • ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel.sha1
  • manifest.json

(其中,下載結束後,要把 *.sha1 檔案修改為 *.sha)

然後,把三個檔案一起放到 /opt/cloudera/parcel-repo/ 目錄下(只是主節點如此操作):

mv ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel /opt/cloudera/parcel-repo/
mv ACCUMULO-1.7.2-5.5.0.ACCUMULO5.5.0.p0.8-el7.parcel.sha /opt/cloudera/parcel-repo/
mv manifest.json /opt/cloudera/parcel-repo/

由於虛擬機器分配的記憶體不夠,可能程式執行要等5~8分鐘的時間才能啟動完畢。

我們在master上檢視相應埠是否已經開啟(如果沒有查到結果,請耐心等候一下):

netstat -ntlp | grep 7180

終於等到查詢到埠結果:


最後,我們在瀏覽器檢視:

登陸,我們進入到如下介面(預設賬號和密碼: admin   admin),先不要著急點選繼續



Cloudera啟動和配置

安裝Cloudera manager

我們在剛才的網頁,點選 “接受”  和 “繼續” 。我們選擇了 免費版 。

如下圖所示,在 其他Parcel 中 選擇自己需要安裝的 元件