Cloudera Manager和CDH5.8離線安裝


https://blog.csdn.net/zzq900503/article/details/52982828

簡介

我們在上篇文章中已經了解了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    root@cm0:/root/.ssh

 

cm2使用命令

scp  authorized_keys_cm2    root@cm0:/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 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

 

 

 

配置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版本鏈接:

http://www.cloudera.com/documentation/cdh/5-1-x/CDH5-Requirements-and-Supported-Versions/cdhrsv_jdk.html

 

卸載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版本鏈接

http://www.cloudera.com/documentation/cdh/5-1-x/CDH5-Requirements-and-Supported-Versions/cdhrsv_db.html

所以 我們還是需要把原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

詳細安裝步驟查看

CentOS6.4離線安裝mysql5.6.22

 

 

安裝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     root@cm1:/opt/

scp -r   /opt/cm-5.8.2     root@cm2:/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-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 '.*\.pyshpy‖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)---Create Job History Dir 失敗

 

啟動 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 '.*\.pyshpy‖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看了詳細的報錯發現仍然是權限問題,解決方法跟之前一樣,進入這個路徑后更改下權限即可。

 

 

 

 

可能遇到的問題--Solr, HBase--Command Start is not currently available for execution

這種情況界面上沒有詳細的信息但是在日志中可以看到是超時了,這種情況下確保局域網網絡好的情況下並且master服務器服務良好的情況下直接重試。

 

 

 

 

可能遇到問題---啟動hive---Failed to Create Hive Metastore Database Tables

 

++ 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確認已經放進去了。

然后點擊右下角的重試。

 

 

 

 

 

 

 

 

可能遇到的問題---啟動 Oozie, Impala---Create Oozie Database Tables 失敗

 

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系統進行備份。虛擬機的就很方便,直接復制壓縮虛擬機文件即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM