咱們在上篇文章中已經瞭解了CDH,爲了後續的學習,咱們本章就來安裝CDH5.8。CDH5.8是目前比較新的版本,自帶hadoop2.0以上的hadoop,並且已經包含了不少組件,也是咱們接下來須要學習的hadoop生態圈中的組件。css
Cloudera Manager是爲了簡化hadoop及其組件的部署,可是因爲包含的組件較多,對內存要求也比較大。因此咱們儘可能要保持主節點master和副節點足夠的內存和磁盤空間,不然會出現一些沒法預估的錯誤。html
官方推薦配置java
主節點 內存10G以上 磁盤30G node
副節點 內存4G以上 磁盤30G python
若是不知足條件的話能夠適當減一些配置,但不保證能安裝成功。mysql
咱們這裏仍是用VM虛擬機建立三個虛擬機來部署。linux
由於條件限制個人虛擬機建立以下:web
PC機系統win10(這個隨意,應該不影響)sql
PC機內存16G shell
虛擬機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。
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
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
資源連接
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
資源連接 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工具能夠實現虛擬機和PC主機之間的複製粘貼,不然命令須要所有手打,會比較不方便。
安裝vmware tools的詳細步驟可參考:
hadoop基礎-------虛擬機(三)-----VMware虛擬機下linux系統的與windows主機實現複製粘貼
以及
hadoop基礎------虛擬機(四)-----VMware虛擬機下linux系統的圖形界面和命令行文本界面的切換
爲了虛擬機之間能相互ping通,咱們須要對虛擬機的網絡根據PC的主機進行一下配置。若是是真機的話,也須要配置並測試是否能相互ping通。
由於咱們以前已經學習過了,你們能夠按照下面這篇文章詳細操做:
注意:由於虛擬機克隆產生的VM的網卡號通常都會自動增長,也就是原VM是eth0,克隆生成的就是eth1,eth2等。
因此命令中的網卡號要對應
因此DEVICE=ethX這裏須要對應。
linux基礎(十)----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
vi /etc/sysconfig/network
查看主機名命令
hostname
修改以下(重啓後生效)
hosts文件主要是把ip和主機名映射起來。
vi /etc/hosts
三臺虛擬機都在hosts文件中增長(根據本身的主機名和設置的ip):
192.168.30.168 cm0
192.168.30.171 cm1
192.168.30.170 cm2
修改以下:
由於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_cm一、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 root@cm0:/root/.ssh
cm2使用命令
scp authorized_keys_cm2 root@cm0:/root/.ssh
這個時候咱們在cm0中的root/.ssh目錄會看到authorized_keys_cm0、authorized_keys_cm一、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 root@cm1:/root/.ssh
scp authorized_keys root@cm2:/root/.ssh
檢查看看 cm1和cm2中已經有通行證了
測試節點之間相互ssh
例如在cm0中
ssh cm1
exit
ssh cm2
exit
例如在cm1中
ssh cm0
exit
ssh cm2
exit
集羣中全部主機必須保持時間同步,若是時間相差較大會引發各類問題。 運行時會報運行情況不良具體思路以下:
master節點做爲ntp服務器與外界對時中心同步時間,隨後對全部slave節點提供時間同步服務。(若是不能上外網那須要保證全部salve節點與master時間同步)
全部slave節點以master節點爲基礎同步時間。
步驟以下
ntpstat
service ntpd start
通常CentOS系統自帶ntp服務,若是沒安裝的話須要安裝一下,若是能鏈接外網,最方便的安裝方法是yum
yum install ntp
若是不能鏈接外網只能本身查一下離線安裝了--下載rpm包安裝一下便可。
chkconfig ntpd on
在配置前,先使用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驗證須要抑制。
CentOS自帶OpenJdk,不過運行CDH5須要使用Oracle的Java 7以上的jdk支持。
因此咱們須要把OpenJdk卸載,而後安裝Oracle的java7以上的jdk。
查看最低須要支持的jdk版本連接:
使用
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卸載成功了。
咱們以前已經下載了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也相似操做安裝便可。
注意,僅在server節點也就是master節點cm0安裝mysql。
CentOS自帶了mysql,可是版本較低是5.1的。
使用命令
rpm -qa | grep mysql
查看系統以前是否已安裝MySQL。
查看組件須要須要的mysql版本連接
因此 咱們仍是須要把原mysql卸載,安裝新的mysql5.6以上。
咱們仍是使用命令
rpm -e --nodeps 包名
卸載舊的mysql,咱們這裏也就是使用
rpm -e --nodeps mysql-libs-5.1.66-2.el6_3.x86_64
命令來進行卸載。
rpm -qa | grep mysql 驗證一次是否刪除成功。
而後把咱們以前下載好的mysql安裝文件MySQL-5.6.34-1.linux_glibc2.5.x86_64.rpm-bundle.tar用ssh工具上傳到虛擬機中。
咱們仍是新建一個目錄/usr/local/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是否安裝正確等。
例如在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 -version
命令查詢jdk的版本。只要不是自帶的openJDK便可。
每一個機子中使用
service iptables status
查看防火牆狀態
每一個機子中使用
getenforce
命令查看SElinux是否關閉
mysql -u root -p
使用123456登錄成功後。
show databases;
看看是否新建須要用到的數據庫
在主節點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目錄下。
咱們把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配置文件。
/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 root@cm1:/opt/
scp -r /opt/cm-5.8.2 root@cm2:/opt/
在每臺機子中
使用命令
useradd --system --home=/opt/cm-5.8.2/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
主節點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成功。
安裝到此處,能夠考慮備份節點,爲未來的節點拓展作準備。
本地經過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,則點擊右下角的繼續。
查看日誌後發現緣由是
這個是由於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會沒法啓動,而且報錯文件夾不存在,並確保訪問權限。
集羣會首次運行全部的組件,這過程當中可能會有一些錯誤,不要擔憂,解決重試便可。下面會依次給出我遇到的狀況供你們參考,基本上都是權限或者驅動問題。
正確首次啓動後以下圖(是否是很激動^^)
右下角繼續,離成功安裝一步之遙。
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-agent/process/61-hdfs-NAMENODE-createtmp as CONF_DIR
using as SECURE_USER
using as SECURE_GROUP
unlimited
Directory /tmp does not currently exist.
+ HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugin-cdh57-2.7.2-shaded.jar
+ set -x
+ replace_conf_dir
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp -type f '!' -path '/opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/logs/*' '!' -name '*.log' '!' -name '*.keytab' '!' -name '*jceks' -exec perl -pi -e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp#g' '{}' ';'
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/supervisor.conf: Permission denied.
+ make_scripts_executable
+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp -regex '.*\.py∥shpy‖sh$' -exec chmod u+x '{}' ';'
+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'
+ ulimit -l
+ export HADOOP_IDENT_STRING=hdfs
+ HADOOP_IDENT_STRING=hdfs
+ '[' -n '' ']'
+ acquire_kerberos_tgt hdfs.keytab
+ '[' -z hdfs.keytab ']'
+ '[' -n '' ']'
+ '[' validate-writable-empty-dirs = mkdir ']'
+ '[' file-operation = mkdir ']'
+ '[' bootstrap = mkdir ']'
+ '[' failover = mkdir ']'
+ '[' transition-to-active = mkdir ']'
+ '[' initializeSharedEdits = mkdir ']'
+ '[' initialize-znode = mkdir ']'
+ '[' format-namenode = mkdir ']'
+ '[' monitor-decommission = mkdir ']'
+ '[' jnSyncWait = mkdir ']'
+ '[' nnRpcWait = mkdir ']'
+ '[' -safemode = supergroup -a get = 1777 ']'
+ '[' monitor-upgrade = mkdir ']'
+ '[' finalize-upgrade = mkdir ']'
+ '[' rolling-upgrade-prepare = mkdir ']'
+ '[' rolling-upgrade-finalize = mkdir ']'
+ '[' nnDnLiveWait = mkdir ']'
+ '[' refresh-datanode = mkdir ']'
+ '[' mkdir = mkdir ']'
+ '[' 5 -ne 5 ']'
+ DIR=/tmp
+ USER=hdfs
+ GROUP=supergroup
+ PERMS=1777
+ RET=0
+ /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hadoop-hdfs/bin/hdfs --config /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp dfs -test -d /tmp
緣由是hdfs用戶或者cm用戶對這個文件沒有操做權限。咱們進入這個目錄查看
cd /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/
ls -l
發現確實是這個文件只有root才能讀寫,那麼咱們應該設置一下權限,由於cm是用hdfs用戶在操做的。
使用命令
cd /opt/cm-5.8.2/run/cloudera-scm-agent/process/61-hdfs-NAMENODE-createtmp/
chmod 666 supervisor.conf
ls -l
而後點擊右下角的重試。
啓動 Key-Value Store Indexer, YARN (MR2 Included)
僅完成 0/2 個步驟。首個失敗:在服務 Key-Value Store Indexer 上執行命令 Start 失敗
僅完成 0/2 個步驟。首個失敗:在服務 YARN (MR2 Included) 上執行命令 Create Job History Dir 失敗
使用用戶 mapred 組 hadoop 和權限 1777 建立 DFS 目錄 /tmp/logs
主機運行情況變成不良時,主機 cm0 (id=3) 上的進程 dfs-create-dir (id=72) 被標記爲失敗
Mon Nov 28 14:53:18 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-agent/process/72-dfs-create-dir as CONF_DIR
using as SECURE_USER
using as SECURE_GROUP
unlimited
Directory /tmp/logs does not currently exist.
Created directory /tmp/logs.
Changed ownership of /tmp/logs to mapred:hadoop.
Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/supervisor.conf: Permission denied.
+ HADOOP_CLASSPATH=/opt/cm-5.8.2/share/cmf/lib/plugins/event-publish-5.8.2-shaded.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/tt-instrumentation-5.8.2.jar:/opt/cm-5.8.2/share/cmf/lib/plugins/navigator/cdh57/audit-plugin-cdh57-2.7.2-shaded.jar
+ set -x+ replace_conf_dir+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir -type f '!' -path '/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/logs/*' '!' -name '*.log' '!' -name '*.keytab' '!' -name '*jceks' -exec perl -pi -e 's#{{CMF_CONF_DIR}}#/opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir#g' '{}' ';'Can't open /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir/supervisor.conf: Permission denied.+ make_scripts_executable+ find /opt/cm-5.8.2/run/cloudera-scm-agent/process/72-dfs-create-dir -regex '.*\.py∥shpy‖sh$' -exec chmod u+x '{}' ';'+ '[' DATANODE_MAX_LOCKED_MEMORY '!=' '' ']'+ ulimit -l+ export HADOOP_IDENT_STRING=hdfs+ HADOOP_IDENT_STRING=hdfs+ '[' -n '' ']'+ acquire_kerberos_tgt hdfs.keytab+ '[' -z hdfs.keytab ']'+ '[' -n '' ']'+ '[' validate-writable-empty-dirs = mkdir ']'
點擊stderr看了詳細的報錯發現仍然是權限問題,解決方法跟以前同樣,進入這個路徑後更改下權限便可。
這種狀況界面上沒有詳細的信息可是在日誌中能夠看到是超時了,這種狀況下確保局域網網絡好的狀況下而且master服務器服務良好的狀況下直接重試。
++ false++ exec /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hadoop/bin/hadoop jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib/hive-cli-1.1.0-cdh5.8.0.jar org.apache.hive.beeline.HiveSchemaTool -verbose -dbType mysql -initSchemaJava HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driverorg.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driverat org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:79)at org.apache.hive.beeline.HiveSchemaTool.getConnectionToMetastore(HiveSchemaTool.java:113)at org.apache.hive.beeline.HiveSchemaTool.testConnectionToMetastore(HiveSchemaTool.java:159)at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:257)at org.apache.hive.beeline.HiveSchemaTool.doInit(HiveSchemaTool.java:243)at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:473)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.util.RunJar.run(RunJar.java:221)at org.apache.hadoop.util.RunJar.main(RunJar.java:136)Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at org.apache.hive.beeline.HiveSchemaHelper.getConnectionToMetastore(HiveSchemaHelper.java:70)... 11 more*** schemaTool failed ***
這是hive的lib包中缺乏mysql的驅動致使的。咱們以前已經把mysql驅動包mysql-connector-java-*-bin.jar放到主節點cm0的/opt中,如今複製一份到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib(這裏CDH-5.8.0-1.cdh5.8.0.p0.42要跟本身的版本對應)
使用命令以下
cd /opt/mysql-connector-java-5.1.40cp mysql-connector-java-5.1.40-bin.jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib把mysql-connector-java-5.1.40-bin.jar放到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/lib中。 cd /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/hive/libls|more確認已經放進去了。
而後點擊右下角的重試。
Error: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.DriverStack trace for the error was (for debug purposes):--------------------------------------java.lang.Exception: Could not connect to the database: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:905)at org.apache.oozie.tools.OozieDBCLI.createDB(OozieDBCLI.java:185)at org.apache.oozie.tools.OozieDBCLI.run(OozieDBCLI.java:129)at org.apache.oozie.tools.OozieDBCLI.main(OozieDBCLI.java:80)Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at java.lang.Class.forName0(Native Method)at java.lang.Class.forName(Class.java:264)at org.apache.oozie.tools.OozieDBCLI.createConnection(OozieDBCLI.java:894)at org.apache.oozie.tools.OozieDBCLI.validateConnection(OozieDBCLI.java:901)... 3 more--------------------------------------
+ '[' 0 = 1 ']'+ '[' CLOUDERA_MYSQL_CONNECTOR_JAR '!=' '' ']'+ eval 'JAR_LOCATION=$CLOUDERA_MYSQL_CONNECTOR_JAR'++ JAR_LOCATION=/usr/share/java/mysql-connector-java.jar+ echo 'Copying JDBC jar from /usr/share/java/mysql-connector-java.jar to /var/lib/oozie'+ cp /usr/share/java/mysql-connector-java.jar /var/lib/oozie/cp: cannot stat `/usr/share/java/mysql-connector-java.jar': No such file or directory+ OOZIECPPATH=
跟hive啓動的問題同樣,缺乏驅動。
Oozie的lib包中缺乏mysql的驅動致使的。咱們以前已經把mysql驅動包mysql-connector-java-*-bin.jar放到主節點cm0的/opt中,如今複製一份到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/Oozie/lib(這裏CDH-5.8.0-1.cdh5.8.0.p0.42要跟本身的版本對應)
再複製一份到/var/lib/oozie/
使用命令以下把mysql-connector-java-5.1.40-bin.jar放到/opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib中。
cd /opt/mysql-connector-java-5.1.40
cp mysql-connector-java-5.1.40-bin.jar /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib
cp mysql-connector-java-5.1.40-bin.jar /var/lib/oozie
cd /opt/cloudera/parcels/CDH-5.8.0-1.cdh5.8.0.p0.42/lib/oozie/lib
ls|more
確認已經放進去了。
cd /var/lib/oozie
ls|more
點擊右下角重試。
恭喜您,安裝完成。
點擊完成後會進入監控界面。若是有紅色的話,仍是須要咱們去解決的。。。
具體排查的狀況能夠參考文章或者本身查資料。
hadoop基礎----hadoop實戰(九)-----hadoop管理工具---CDH的錯誤排查(持續更新)
所有解決後就全綠了。
到這裏咱們的安裝就算完成了。爲了之後的修復方便,咱們能夠對分別對linux系統進行備份。虛擬機的就很方便,直接複製壓縮虛擬機文件便可。