cdh 安裝hadoop叢集
hadoop基礎----hadoop實戰(六)-----hadoop管理工具---Cloudera Manager---CDH介紹
簡介
我們在上篇文章中已經瞭解了CDH,為了後續的學習,我們本章就來安裝CDH5.8。CDH5.8是目前比較新的版本,自帶hadoop2.0以上的hadoop,而且已經包含了很多元件,也是我們接下來需要學習的hadoop生態圈中的元件。
環境
Cloudera Manager是為了簡化hadoop及其元件的部署,但是由於包含的元件較多,對記憶體要求也比較大。所以我們儘量要保持主節點master和副節點足夠的記憶體和磁碟空間,否則會出現一些無法預估的錯誤。
官方推薦配置
主節點 記憶體10G以上 磁碟30G
副節點 記憶體4G以上 磁碟30G
如果不滿足條件的話可以適當減一些配置,但不保證能安裝成功。
我們這裡還是用VM虛擬機器建立三個虛擬機器來部署。
因為條件限制我的虛擬機器建立如下:
PC機系統win10(這個隨意,應該不影響)
PC機記憶體16G
虛擬機器VMware-workstation11
虛擬機器系統CentOS-6.4-x86_64 也就是 CentOS6.4版本64位的linux系統
作為master的主節點的虛擬機器 cloudera scm server記憶體 8G 磁碟30G
作為slave1的副節點的虛擬機器1 cloudera scm agent記憶體 2G 磁碟30G
作為slave2的副節點的虛擬機器2 cloudera scm agent 記憶體 2G 磁碟30G
Cloudera Manager 5.8.2
CDH 5.8.2
JDK 1.8
Mysql 5.6.34
選擇安裝方式
第一種使用cloudera-manager-installer.bin線上安裝
第二種使用rpm、yum、apt-get方式線上安裝
第三種使用是Tarballs的方式離線安裝
我們前面講到cloudera有三種安裝方式,第一種是最方便的,就像安裝一個客戶端軟體一樣就可以了,操作簡單。
但是第一種第二種方式都是線上安裝,也就是需要網路網速,虛擬機器需要連線外網,尤其是部分資源被牆了,所以線上安裝會很慢。。。而且安裝中斷安裝失敗的可能性很大。
所以我們還是用第三種方式來安裝,離線安裝虛擬機器不需要連線外網,可實現全離線安裝,但是需要三臺虛擬機器和PC機能相互ping通。
我現在的情況是PC機能上外網,三臺虛擬機器不能上外網(作了ip限制),所以採用完全離線安裝。
下載相關包
因為下載可能需要點時間,所以我們先把需要下載的東西全部列出來,可以邊下載邊安裝配置linux系統,到最後快到安裝部分時才需要用到下面的安裝包。
oracle版本的jdk
需要oracle的java1.7以上的jdk
下載地址
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
我這裡選擇了一個rpm。
mysql離線安裝包
http://dev.mysql.com/downloads/mysql/ 開啟網址: Select Platform: 選擇 Linux-Generic
選擇選擇 Linux - Generic (glibc 2.5) (x86, 64-bit), RPM 進行下載
我這裡下載5.6.34版本的,如果跟我下載的一樣,可以使用連結
http://cdn.mysql.com//Downloads/MySQL-5.6/MySQL-5.6.34-1.linux_glibc2.5.x86_64.rpm-bundle.tar
JDBC
hive/Oozie/Hue等都會使用到MySQL,因而安裝MySQL是必須的。連線MySQL會用到JDBC驅動。
我們可以去Mysql的官網下載選一個版本即可,我這裡選5.1.40,這裡的版本隨意,不需要跟什麼搭配對應:
http://download.softagency.net/MySQL/Downloads/Connector-J/
或者
http://dev.mysql.com/downloads/connector/j/
http://download.softagency.net/MySQL/Downloads/Connector-J/mysql-connector-java-5.1.40.zip
Cloudera Manager安裝包
資源連結
http://archive.cloudera.com/cm5/
大家可以根據自己所用的linux系統選擇相應的版本來下載。
由於我們虛擬機器的系統是CentOS6.4,所以需要下載如下檔案:
Cloudera Manager 5.8.2安裝包
http://archive.cloudera.com/cm5/cm/5/cloudera-manager-el6-cm5.8.2_x86_64.tar.gz
CDH安裝包
資源連結 http://archive.cloudera.com/cdh5/
這裡版本需要與系統對應centos 6.x使用的CDH版本為CDH-X.X.X-1.cdhX.X.X.p0.22-el6.parcel,而centos 5.x使用的CDH版本為CDH-X.X.X-1.cdhX.X.X.p0.22-el5.parcel。
而且需要注意的是CDH的版本需要等於或者小於CM的版本,因為我們的CM是5.8.2版本,所以要選擇小於或者等於5.8.2的版本。
我們是centOS系統,選擇parcels資料夾即可。
根據自己的系統和環境版本選擇安裝包。
我這裡用CDH5.8.0安裝包
需要注意的是這裡的CDH5.8.2沒找到CDH5.8.2-0的版本,CDH5.8.2-1版本是大於CMCDH5.8.2的,所以我這裡用CDH5.8.0。
http://archive.cloudera.com/cdh5/parcels/5.8.0/CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel
http://archive.cloudera.com/cdh5/parcels/5.8.0/CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
http://archive.cloudera.com/cdh5/parcels/5.8.0/manifest.json
下載完成後的檔案
系統安裝
如果是用的真機或者阿里雲伺服器等可省略此步驟,這裡我們是學習環境,所以需要用VM11建立三臺虛擬機器。
詳細步驟檢視:
(注意選擇虛擬機器型別時選擇Minimal Desktop,如果選擇Minimal 最小安裝會沒有圖形介面)
hadoop基礎------虛擬機器(二)---虛擬機器安裝以及安裝linux系統
我們可以先建立一個記憶體2G的 磁碟30G的虛擬機器 然後克隆出另外2個。
然後把其中一個的記憶體修改成8G作為主機master-cloudera scm server即可。
現在我們有了3臺虛擬機器
配置如下
cm0 記憶體8G 磁碟30G
cm1 記憶體2G 磁碟30G
cm2 記憶體2G 磁碟30G
我這裡安裝的是所有元件服務,安裝完成後的磁碟和記憶體情況如下,所以記憶體太小和磁碟空間不夠的話真的不行。。。
安裝vmware tools
如果是真機可以忽略這個步驟。
vmware tools工具可以實現虛擬機器和PC主機之間的複製貼上,否則命令需要全部手打,會比較不方便。
安裝vmware tools的詳細步驟可參考:
hadoop基礎-------虛擬機器(三)-----VMware虛擬機器下linux系統的與windows主機實現複製貼上
以及
hadoop基礎------虛擬機器(四)-----VMware虛擬機器下linux系統的圖形介面和命令列文字介面的切換
網路配置
為了虛擬機器之間能相互ping通,我們需要對虛擬機器的網路根據PC的主機進行一下配置。如果是真機的話,也需要配置並測試是否能相互ping通。
因為我們之前已經學習過了,大家可以按照下面這篇文章詳細操作:
注意:因為虛擬機器克隆產生的VM的網絡卡號一般都會自動增加,也就是原VM是eth0,克隆生成的就是eth1,eth2等。
所以命令中的網絡卡號要對應
所以DEVICE=ethX這裡需要對應。
linux基礎(十)----linux網路配置詳細步驟---橋接模式和兩臺機子的遠端通訊
對虛擬機器網路不熟悉的也可以參考閱讀:
hadoop基礎-------虛擬機器(五)-----虛擬機器linux系統網路配置的三種模式
ps:都設定好之後如果發現物理機和虛擬機器都能ping通192.168.X.1而且物理機能ping通虛擬機器,但虛擬機器ping不通物理機,一般是防火牆問題。
可能遇到的問題
遇到的問題----linux系統中的eth0網路不見了--重啟不載入ifcfg-eth0的配置--需要重新啟用
配置完成後用ifconfig檢視網路情況如下:
關閉防火牆
物理機和虛擬機器的防火牆和SElinux都需要關閉
在安裝過程中需要關閉防火牆和SElinux,否則會異常。
使用getenforce命令檢視SElinux是否關閉
修改/etc/selinux/config 檔案
將SELINUX=enforcing改為SELINUX=disabled,執行該命令後重啟機器生效
service iptables status 檢視防火牆狀態
chkconfig iptables off
修改主機名和hosts檔案
修改主機名命令
vi /etc/sysconfig/network
檢視主機名命令
hostname
修改如下(重啟後生效)
修改hosts檔案
hosts檔案主要是把ip和主機名對映起來。
vi /etc/hosts
三臺虛擬機器都在hosts檔案中增加(根據自己的主機名和設定的ip):
192.168.30.168 cm0
192.168.30.171 cm1
192.168.30.170 cm2
修改如下:
設定ssh無密碼登陸(所有節點)
因為hadoop叢集在安裝的時候需要叢集中所有機器的許可權。
所以我們需要打通所有節點的ssh無密碼登陸。
思路是生成每臺機子的金鑰,集中在一個檔案中,再分發到每臺機子上。
為了確保下面的命令能順利執行,請先重啟所有節點並且保證所有節點能夠通過主機名ping通。
三臺機子都分別使用
ssh-keygen -t rsa
然後一直回車生成金鑰。
我們可以看到/root/.ssh目錄下有了金鑰檔案id_rsa以及公鑰檔案id_rsa.pub。
cd /root/.ssh
ls
三個節點中分別把公鑰id_rsa.pub複製一份命名為authorized_keys_cm0、authorized_keys_cm1、authorized_keys_cm2。
也就是cm0中執行
cp id_rsa.pub authorized_keys_cm0
也就是cm1中執行
cp id_rsa.pub authorized_keys_cm1
也就是cm2中執行
cp id_rsa.pub authorized_keys_cm2
把從節點cm1和cm2的公鑰傳送到cm0節點的/root/.ssh資料夾中
cm1使用命令
scp authorized_keys_cm1 [email protected]:/root/.ssh
cm2使用命令
scp authorized_keys_cm2 [email protected]:/root/.ssh
這個時候我們在cm0中的root/.ssh目錄會看到authorized_keys_cm0、authorized_keys_cm1、authorized_keys_cm2三個檔案。
把它們合併追加到authorized_keys檔案中。
cat authorized_keys_cm0>> authorized_keys
cat authorized_keys_cm1>> authorized_keys
cat authorized_keys_cm2>> authorized_keys
我們可以看到這個通行證authorized_keys中已經有了三臺機子的公鑰。
把這個通行證authorized_keys分發到其他節點----cm1和cm2中。
scp authorized_keys [email protected]:/root/.ssh
scp authorized_keys [email protected]:/root/.ssh
檢檢視看 cm1和cm2中已經有通行證了
測試節點之間相互ssh
例如在cm0中
ssh cm1
exit
ssh cm2
exit
例如在cm1中
ssh cm0
exit
ssh cm2
exit
配置NTP服務
叢集中所有主機必須保持時間同步,如果時間相差較大會引起各種問題。 執行時會報執行狀況不良具體思路如下:
master節點作為ntp伺服器與外界對時中心同步時間,隨後對所有slave節點提供時間同步服務。(如果不能上外網那需要保證所有salve節點與master時間同步)
所有slave節點以master節點為基礎同步時間。
步驟如下
檢視NTP服務狀態
ntpstat
啟動ntp
service ntpd start
一般CentOS系統自帶ntp服務,如果沒安裝的話需要安裝一下,如果能連線外網,最方便的安裝方法是yum
yum install ntp
如果不能連線外網只能自己查一下離線安裝了--下載rpm包安裝一下即可。
設定開機啟動
chkconfig ntpd on
配置ntp
在配置前,先使用ntpdate手動同步下時間,免得本機與外部時間伺服器時間差距太大,讓ntpd不能正常同步。
使用命令
master節點cm0 ntpdate -u 65.55.56.206 (沒有外網的話master就不需要配置了)
slave節點cm1和cm2 ntpdate cm0 (主節點ntp伺服器)
vi /etc/ntp.conf
進入配置檔案
master節點cm0選用65.55.56.206作為對時中心。(沒有外網的話master就不需要配置了)
主要配置如下
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default nomodify notrap
server 65.55.56.206 prefer
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
主要是增加
server 65.55.56.206 prefer
slave節點cm1和cm2選用cm0作為對時中心。
主要配置如下
driftfile /var/lib/ntp/drift
restrict 127.0.0.1
restrict -6 ::1
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
#這裡是主節點的主機名或者ip
server cm0
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
主要是增加
server cm0
配置檔案完成,儲存退出,啟動服務,執行如下命令
service ntpd start
執行啟動5到10分鐘後檢查是否成功。(才執行完命令一般本地的ntp伺服器還沒有正常啟動,一般需要等待5-10分鐘才可以正常同步。)
用
ntpstat
命令檢視同步狀態,出現以下狀態代表啟動成功:
synchronised to NTP server () at stratum 2time correct to within 74 mspolling server every 128 s
檢查是否設定成功
chkconfig --list ntpd 其中2-5為on狀態就代表成功。
watch "ntpq -p"
檢視同步報告。
因為NTP的時間同步是平滑同步,不是跳躍式同步,如果設定得不好的話,很難校驗出它同步成功了沒,總感覺會缺少幾秒鐘的感覺。
有一種解決方法是 我們這裡不用NTP的自動同步,而是使用crond每分鐘ntpdate 跳躍式同步一次。
這種方法不建議在生產環境使用,但是一般生成環境都有外網,所以就能正確設定NTP。
所以下面我們在區域網無外網的情況下可以用以下方法(偏方)確保時間同步:
為了確保能同步時間,我們這裡再加上定時同步步驟。
首先保證cm0的NTP服務是開啟的。
然後停止cm1和cm2的NTP服務。
在cm0中執行
service ntpd start
在cm1和cm2中執行
service ntpd stop
cm1上的配置:
修改crond自動執行程式的配置檔案:
vi /var/spool/cron/root (此處是以root使用者為例,如果是其他使用者,替換為對應的使用者檔名,即可),在該配置檔案中,新增一行:
*/1 * * * * ntpdate cm0
(每隔一分鐘,從cm0同步一次時間)
儲存,重新啟動crond服務:
service crond restart。
一分鐘以後,cm1的時間就同步為cm0的時間了。
cm2的配置:同cm1一樣。區域網內還有其他機器,設定方法也同cm1一樣。
然後CM中的NTP驗證需要抑制。
所有節點安裝jdk
CentOS自帶OpenJdk,不過執行CDH5需要使用Oracle的Java 7以上的jdk支援。
所以我們需要把OpenJdk解除安裝,然後安裝Oracle的java7以上的jdk。
檢視最低需要支援的jdk版本連結:
解除安裝OpenJdk
使用
rpm -qa | grep java
查詢java相關的包,使用
rpm -e --nodeps 包名
解除安裝。
圖中我們可以看到有3個java相關的包,使用命令
rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
rpm -e --nodeps tzdata-java-2012j-1.el6.noarch
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
都解除安裝之後jdk解除安裝成功了。
安裝oraclejdk
我們之前已經下載了oracle的java jdk1.8.現在用ssh工具把檔案傳到這幾臺虛擬機器中。
連線之後我們新建一個目錄用來安裝jdk,目錄新建為/usr/local/java,然後把jdk-8u111-linux-x64.rpm拉過去。
進入該目錄使用命令
rpm -ivh 包名
安裝。
我們這裡也就是
cd /usr/local/java
rpm -ivh jdk-8u111-linux-x64.rpm
由於是rpm包並不需要我們來配置環境變數,我們只需要配置一個全域性的JAVA_HOME變數即可,執行命令:
JAVA_HOME的目錄對應我們的安裝目錄,我們這裡放rpm的目錄是/usr/local/java/,但是用rpm安裝的jdk預設路徑是usr/java/latest。
所以我們的JAVA_HOME變數應該是/usr/java/latest/。
echo "JAVA_HOME=/usr/java/latest/" >> /etc/environment
然後用
java -version
檢查是否安裝成功。
其他兩臺cm1和cm2也類似操作安裝即可。
主節點安裝mysql
注意,僅在server節點也就是master節點cm0安裝mysql。
CentOS自帶了mysql,但是版本較低是5.1的。
使用命令
rpm -qa | grep mysql
檢視系統之前是否已安裝MySQL。
檢視元件需要需要的mysql版本連結
所以 我們還是需要把原mysql解除安裝,安裝新的mysql5.6以上。
解除安裝舊mysql
我們還是使用命令
rpm -e --nodeps 包名
解除安裝舊的mysql,我們這裡也就是使用
rpm -e --nodeps mysql-libs-5.1.66-2.el6_3.x86_64
命令來進行解除安裝。
rpm -qa | grep mysql 驗證一次是否刪除成功。
安裝mysql
然後把我們之前下載好的mysql安裝檔案MySQL-5.6.34-1.linux_glibc2.5.x86_64.rpm-bundle.tar用ssh工具上傳到虛擬機器中。
我們還是新建一個目錄/usr/local/mysql
詳細安裝步驟檢視
安裝mysql其他相關元件
除了安裝mysqlsever和client之外我們還需要安裝其他相關的mysql元件,這些元件都在加壓出來的目錄中。
解壓mysql檔案的目錄裡發現了除了
MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.34-1.linux_glibc2.5.x86_64.rpm
這兩個安裝檔案之外另外的rpm包。
我們把其他幾個關聯rpm包也安裝一下。
rpm -ivh MySQL-shared-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-embedded-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-test-5.6.34-1.linux_glibc2.5.x86_64.rpm
修改密碼和建立資料庫並授權
舊版mysql才安裝完root密碼為空,新版mysql的root密碼為隨機密碼儲存在/root/.mysql_secret中。
修改密碼
使用
service mysql start
啟動mysql
使用
netstat -ntlp | grep 3306
查詢3306埠確認是否已經啟動成功。
cat /root/.mysql_secret
檢視隨機密碼
mysql -u root -p mysql
然後輸入隨機密碼首次登入mysql並且選擇mysql資料庫
使用以下命令設定root的新密碼
mysql> SET PASSWORD = PASSWORD('123456');
mysql>create database roger;
mysql> quit
我這裡新密碼設定為123456.
然後
mysql -u root -p
使用123456登陸成功。
建立資料庫並授權
我們需要建立cdh5.8元件中會使用到的資料庫,建立語句如下:
mysql -u root -p 輸入密碼進入mysql命令列,建立以下資料庫:
#hive
mysql>create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
mysql>create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity oozie
mysql>create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#hue資料庫
mysql>create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
設定root授權訪問以上所有的資料庫:
#授權root使用者在主節點擁有所有資料庫的訪問許可權---'123456' 對應剛才設定的root的密碼。
mysql>grant all privileges on *.* to 'root'@'cm0' identified by '123456' with grant option;
mysql>flush privileges;
檢查環境
在正式開始安裝CDH之前最好先檢查一下能不能相互免密ssh,以及防火牆是否關閉,叢集中的時間是否統一,java版本是否是oracle的版本,主節點mysql是否安裝正確等。
ssh測試
例如在cm0中
ssh cm1
exit
ssh cm2
exit
例如在cm1中
ssh cm0
exit
ssh cm2
exit
例如在cm2中
ssh cm0
exit
ssh cm1
exit
時間是否統一
每臺機子中使用
date
命令檢視當前時間,最好是完全一樣或者差距不大即可。
或者在cm0中使用命令
date;ssh cm1 date;ssh cm2 date
java的版本
每個機子中使用
java -version
命令查詢jdk的版本。只要不是自帶的openJDK即可。
防火牆狀態
每個機子中使用
service iptables status
檢視防火牆狀態
SElinux狀態
每個機子中使用
getenforce
命令檢視SElinux是否關閉
mysql狀態和資料庫
mysql -u root -p
使用123456登陸成功後。
show databases;
看看是否新建需要用到的資料庫
主節點安裝Cloudera Manager Server 和所有節點配置Agent
主節點安裝cloudera manager
在主節點cm0中解壓安裝cloudera manager。
首先把我們下載好的cloudera-manager-*.tar.gz包和mysql驅動包mysql-connector-java-*-bin.jar放到主節點cm0的/opt中。如圖:
我下載的版本分別是:cloudera-manager-el6-cm5.8.2_x86_64.tar.gz和mysql-connector-java-5.1.40.zip。
cloudera manager的目錄預設位置在/opt下
所以我們在opt目錄解壓安裝檔案,命令如下:
cd /opt
tar xzvf cloudera-manager-el6-cm5.8.2_x86_64.tar.gz
使用命令
ls
確保cm-5.8.2和cloudera目錄在/opt目錄下。
Cloudera Manager建立資料庫
我們把mysql-connector-java-5.1.40.zip也解壓一下。
unzip mysql-connector-java-5.1.40.zip
ls
cd mysql-connector-java-5.1.40
發現jar包mysql-connector-java-5.1.40-bin.jar已經解壓出來了。
使用命令
cp mysql-connector-java-5.1.40-bin.jar /opt/cm-5.8.2/share/cmf/lib/
把mysql-connector-java-5.1.40-bin.jar放到/opt/cm-5.8.2/share/cmf/lib/中。
cd /opt/cm-5.8.2/share/cmf/lib/
ls|more
確認已經放進去了。
在主節點初始化CM5的資料庫
使用命令
在命令裡scm_prepare_database.sh後面的引數分別是:資料庫型別 資料庫名稱(可以隨便起一個名稱) 資料庫主機名 資料庫使用者名稱 密碼 --scm-host 主節點機名 scm scm scm
/opt/cm-5.8.2/share/cmf/schema/scm_prepare_database.sh mysql cm -h cm0 -u root -p 123456 --scm-host cm0 scm scm scm
Agent配置
主節點修改agent配置檔案。
/opt/cm-5.8.2/etc/cloudera-scm-agent/config.ini中的server_host為主節點的主機名。
使用命令
vim /opt/cm-5.8.2/etc/cloudera-scm-agent/config.ini
在主節點cm0用命令同步Agent到其他所有節點
scp -r /opt/cm-5.8.2 [email protected]:/opt/
scp -r /opt/cm-5.8.2 [email protected]:/opt/
在所有節點建立cloudera-scm使用者
在每臺機子中
使用命令
useradd --system --home=/opt/cm-5.8.2/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
啟動cm和agent
主節點cm0通過命令
/opt/cm-5.8.2/etc/init.d/cloudera-scm-server start
啟動服務端。
所有節點通過命令
/opt/cm-5.8.2/etc/init.d/cloudera-scm-agent start
啟動Agent服務。 (所有節點都要啟動Agent服務,包括服務端)
我們啟動的其實是個service指令碼,需要停止服務將以上的start引數改為stop就可以了,重啟是restart。
Cloudera Manager Server和Agent都啟動以後,就可以進行嘗試訪問了。
http://master:7180/cmf/login
我這裡master是主節點cm0,也就是應該訪問
http://192.168.30.168:7180/cmf/login
安裝CM成功。
安裝到此處,可以考慮備份節點,為將來的節點拓展做準備。
CDH5的安裝和叢集配置
Cloudera Manager Server和Agent都啟動以後,就可以進行CDH5的安裝配置了。
準備檔案
把CDH5需要的安裝檔案放到主節點上,新建目錄為
/opt/cloudera/parcel-repo
把我們之前下載的三個檔案放到這個目錄下
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1
manifest.json
需要注意的是
CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha1需要重新命名成CDH-5.8.0-1.cdh5.8.0.p0.42-el6.parcel.sha
安裝parcel
訪問CM的主頁
http://192.168.30.168:7180/cmf/login
使用者名稱和密碼均為admin。
登入之後同意條款。
右下角點選繼續。
選擇版本然後右下角繼續。
點選繼續,各個Agent節點正常啟動後,可以在當前管理的主機列表中看到對應的節點。選擇要安裝的節點,點繼續。
接下來,出現以下包名,說明本地Parcel包配置無誤,直接點繼續就可以了。
如果此處發現不到parcel包,就重啟所有節點的agent服務,和master的server服務,然後重新嘗試。並且確認CDH版本小於或者等於CM的版本
本地通過Parcel安裝過程與本地通過Package安裝過程完全一致,不同的是兩者的本地源的配置。
區別如下:
Package本地源:軟體包是.rpm格式的,數量通常較多,下載的時候比較麻煩。通過”createrepo .”的命令建立源,並要放到存放原始檔主機的web伺服器的根目錄下,詳見建立本地yum軟體源,為本地Package安裝Cloudera Manager、Cloudera Hadoop及Impala做準備
Parcel本地源:軟體包是以.parcel結尾,相當於壓縮包格式的,一個系統版本對應一個,下載的時候方便。如centos 6.x使用的CDH版本為CDH-X.X.X-1.cdhX.X.X.p0.22-el6.parcel,而centos 5.x使用的CDH版本為CDH-X.X.X-1.cdhX.X.X.p0.22-el5.parcel。
這些檔案放好之後,CM會獲取這個包,並出現在主機->包裹的頁面。出現的快慢跟你設定的包的重新整理頻率有關,預設是1小時。也可以重啟CM服務和agent服務識別。
可以在管理頁面的屬性標籤下的包裹種類裡修改。
等待parcel安裝
正常情況下 內網網速速好的話 10分鐘左右啟用完畢,最多不超過30分鐘 如果卡住了 建議看看日誌
安裝過程中有什麼問題 可以用
/opt/cm-5.8.2/etc/init.d/cloudera-scm-agent status
/opt/cm-5.8.2/etc/init.d/cloudera-scm-server status
檢視伺服器客戶端狀態
也可以通過
/var/log/cloudera-scm-server/cloudera-scm-server.log
/var/log/cloudera-scm-agent/cloudera-scm-agent.log
檢視日誌
如果上面的路徑找不到則在
日誌資料夾"/opt/cm-5.8.2/log"檢視日誌,裡面包含server和agent的log,使用命令如下:
tail -f /opt/cm-5.8.2/log/cloudera-scm-server/cloudera-scm-server.log
tail -f /opt/cm-5.8.2/log/cloudera-scm-agent/cloudera-scm-agent.log
例如我這裡NTP因為沒有外網,所以會報錯,不過有些錯誤不影響的話不需要管。
成功啟用後繼續右下角點選繼續
主機檢查
會進入自動檢查主機(耗時2分鐘左右)然後給出報告,包括需要修改的部分和元件的版本
解決警告
這裡有2個警告需要解決一下,至於版本里的不可用不適用不需要管。
警告一
Cloudera 建議將 /proc/sys/vm/swappiness 設定為最大值 10。當前設定為 60。使用 sysctl 命令在執行時更改該設定並編輯 /etc/sysctl.conf,以在重啟後儲存該設定。您可以繼續進行安裝,但 Cloudera Manager 可能會報告您的主機由於交換而執行狀況不良。以下主機將受到影響
解決方法
每臺受影響的主機執行
echo 10 > /proc/sys/vm/swappiness 即可解決。
警告二
已啟用透明大頁面壓縮,可能會導致重大效能問題。請執行“echo never > /sys/kernel/mm/transparent_hugepage/defrag”以禁用此設定,然後將同一命令新增到 /etc/rc.local 等初始指令碼中,以便在系統重啟時予以設定。以下主機將受到影響
解決方法
每臺受影響的主機執行命令
echo never > /sys/kernel/mm/transparent_hugepage/defrag
並且
vim /etc/rc.local
加入echo never > /sys/kernel/mm/transparent_hugepage/defrag這條命令。
然後點選重新執行進行重新檢查
全部綠勾了,然後點選右下角的完成。
選擇安裝哪些元件服務--這裡根據需求選擇即可。
選擇元件服務
右下角點選繼續,然後配置角色。一般情況下保持預設就可以了(Cloudera Manager會根據機器的配置自動進行配置,如果需要特殊調整,自行進行設定就可以了)。
我這裡使用預設配置,所以直接點選繼續就可以了。
配置資料庫
然後配置資料庫
這裡需要輸入自己的mysql的對應資料庫名稱和使用者名稱以及密碼。
我們之前在mysql中新建的資料名分佈對應填入 然後點選測試連線。
hive root 123456
oozie root 123456
hue root 123456
如果測試連線全部是Successful,則點選右下角的繼續。
可能遇到的問題---hue--unable to verify
檢視日誌後發現原因是
Error loading MySQLdb module: libmysqlclient_r.so.16: cannot open shared object file: No such file or directory
這個是因為cm的服務端是用java編寫的,cm的客戶端是python編寫的,這裡測試連線時是用python去連線資料庫。但是CentOS系統本身會缺少一些python連線資料庫需要的關聯庫。
解決方法
在mysql的安裝目錄找到系統缺少的這個包,關聯到系統即可。
根據最後提示,應該是找不著一個交libmysqlclient_r.so.16的檔案,於是到mysql安裝目錄裡找到這個檔案並且做一個軟連線到/usr/lib
如果是按照我們之前的離線安裝mysql步驟安裝的話 預設的mysql安裝目錄是/var/lib/mysql/
ln -s /var/lib/mysql/lib/libmysqlclient_r.so.16 /usr/lib64/libmysqlclient_r.so.16
但是/var/lib/mysql/ 目錄下沒有找到lib目錄
使用
find / -name libmysqlclient_r.so.16
whereis libmysqlclient_r.so.16
也找不到libmysqlclient_r.so.16。
我們在之前解壓mysql檔案的目錄裡發現了除了
MySQL-client-5.6.34-1.linux_glibc2.5.x86_64.rpm
MySQL-server-5.6.34-1.linux_glibc2.5.x86_64.rpm
這兩個安裝檔案之外另外的rpm包。
我們把其他幾個關聯rpm包也安裝一下。
rpm -ivh MySQL-shared-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-devel-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-shared-compat-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-embedded-5.6.34-1.linux_glibc2.5.x86_64.rpm
rpm -ivh MySQL-test-5.6.34-1.linux_glibc2.5.x86_64.rpm
安裝完成後再查詢
whereis libmysqlclient_r.so.16
發現已經有了libmysqlclient_r.so.16而且已經在/usr/lib64路徑下了。
再次點選測試連線,成功。
稽核更改
稽核更改中列出相關目錄和配置,如果有需要的話就修改,無特殊需求使用預設的即可,點選右下角的繼續。
另外如果需要自己設定資料夾,一定要先mkdir資料夾,否側hdfs會無法啟動,並且報錯資料夾不存在,並確保訪問許可權。
叢集啟動
叢集會首次執行所有的元件,這過程中可能會有一些錯誤,不要擔心,解決重試即可。下面會依次給出我遇到的情況供大家參考,基本上都是許可權或者驅動問題。
正確首次啟動後如下圖(是不是很激動^^)
右下角繼續,離成功安裝一步之遙。
可能遇到的問題---hdfs啟動失敗--建立/tmp目錄失敗
Directory /tmp does not currently exist
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/supervisor.conf: Permission denied.
報錯資訊
Mon Nov 28 14:20:59 CST 2016
JAVA_HOME=/usr/java/latest/
using /usr/java/latest/ as JAVA_HOME
using 5 as CDH_VERSION
using /opt/cm-5.8.2/run/cloudera-scm-ag