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 中 選擇自己需要安裝的 元件。