1. 程式人生 > >CDH-5.10.2叢集的搭建【史上最全,不全不要錢】(已經實現,但是非預期效果,可能是由於記憶體不足)

CDH-5.10.2叢集的搭建【史上最全,不全不要錢】(已經實現,但是非預期效果,可能是由於記憶體不足)

說在前面的話:本文適合電腦記憶體16G以上的,安裝的是純正的CDH,不是三個節點的,純正四節點。建議配置主節點3G記憶體,從節點1.5G記憶體,硬碟大小建議單節點配置20G以上,CDH版本比apache吃記憶體和硬碟,請準備好再安裝

如果你是新手學習,強烈!建議不要瞎改瞎命名,因為後面都是有關聯的。如果跟我的一模一樣,完全無腦CV保證安裝成功,安裝過程中遇到的報錯各種問題都在相應的環節有說明,不要慌稍微往後看看。

1.下載 CentOS-6.7-x86_64-bin-DVD1.iso

2.安裝CentOS

3.配置相關

可以先刪除當前賬戶家目錄無用檔案

[[email protected] ~]$ rm -rf *

3.1 修改主機名

在 root 賬號下用命令:vi /etc/sysconfig/network

或者如果配置了 hadoop sudo 許可權,則在 hadoop 登入情況下使用命令:sudo vi /etc/sysconfig/network

3.2 設定系統預設啟動級別

在 root 賬號下輸入 vi /etc/inittab

3.3 配置 hadoop 使用者 sudoer 許可權

在 root 賬號下,命令終端輸入:vi /etc/sudoers

找到 root ALL=(ALL) ALL 這一行,

然後在他下面新增一行:

hadoop ALL=(ALL) ALL

儲存,退出

3.4 關閉防火牆/關閉 Selinux

防火牆操作相關:

檢視防火牆狀態:service iptables status

關閉防火牆:service iptables stop

開啟防火牆:service iptables start

重啟防火牆:service iptables restart

關閉防火牆開機啟動:chkconfig iptables off

開啟防火牆開機啟動:chkconfig iptables on

關閉 Selinux:具體做法是修改vim /etc/selinux/config

配置檔案中的 SELINUX=disabled

3.5 安裝 JDK

1、 上傳 jdk-8u73-linux-x64.tar.gz

2、 切換成root使用者,su root

[[email protected] ~]# cd /home/hadoop/

[[email protected] ~]# mkdir /usr/java/

解壓到 cd /usr/java 目錄下 tar -zxvf jdk-8u73-linux-x64.tar.gz -C /usr/java

注意:/usr/local/ 這個目錄需要有root許可權才行。所以要切換使用者。

3、 配置環境變數

a) vi /etc/profile

b)在最後加入兩行:

export JAVA_HOME=/usr/java/jdk1.8.0_73

export PATH=$PATH:$JAVA_HOME/bin

c)儲存退出

4、 source /etc/profile

5、 檢測是否安裝成功,輸入命:java -version

3.4 配置網路

在VM虛擬機器的設定中改成下圖所示

然後ping baidu.com

看一下ip地址:ifconfig

3.5 配置內網域名對映

注意需要root使用者

[[email protected] ~]$ vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.123.202 CDH02
192.168.123.203 CDH03
192.168.123.204 CDH04
192.168.123.205 CDH05

3.6 設定linux系統的時間

修改時區為上海CST

[[email protected] ~]# mv /etc/localtime /etc/localtime.bak

[[email protected] ~]# ln -s /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

[[email protected] ~]# date

修改時間為windows系統時間

[[email protected] ~]# ntpdate time.windows.com

4.克隆虛擬機器

1、 選中一臺已關閉的虛擬機器,在虛擬機器名稱上,右鍵點選,選擇“管理”,再選擇“克隆”,出現如下畫面:

2、 點選“下一步”,出現如下畫面:

3、 點選“下一步”,出現如下畫面:

記得選中“建立完整克隆”

4、 點選“下一步”,出現如下畫面,改號裡面的值:改虛擬機器名字分別為CDH03、CDH04、CDH05

記得更改“虛擬機器名稱”和“位置”的值

5、 點選“完成”,vmware 將為我們克隆一臺新的虛擬機器,下面是克隆的狀態

6、 到此為止,新的CDH03 就被創建出來了。但是CDH03 跟之前的 CDH02 完全一模一樣。所以還有幾個地方需要修改

7、 先開機 CDH03,然後正常登陸

8、 第一個修改的地方,是網絡卡,請按照下面的說明步驟來,修改一個配置檔案,執行命令:vi /etc/udev/rules.d/70-persistent-net.rules

發現是如此結果:

我們要做的事情是把第一個紅框,也就是 eth0 網絡卡,給刪掉然後再把下面紅框當中的“eth1”改為“eth0”,改完之後的結果是:

然後儲存退出

9、 第二個要修改的地方是網絡卡配置檔案,執行命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0

我們把紅框當中的“UUID”和“HWADDR”這兩行資訊刪掉,然後把“IPADDR”再重新分配一個 IP,我在此給它改為 192.168.123.203,結果如下:

儲存退出。這個地方就改好了。

10、重啟

最後注意:如果該主機配置主機名,那麼還要記得改掉主機名

5.配置免密登陸

a) 在 hadoop 登入狀態下,

輸入命令 ssh-keygen

b) 之後你會發現,在/home/hadoop/.ssh 目錄下生成了公鑰檔案

[[email protected] ~]$ cd .ssh

c) 使用一個更簡單的方式,使用命令:ssh-copy-id CDH03 建立 CDH02 到 CDH03 的免密登入

d)測試ssh是否成功

ssh CDH02

exit

6.禁用 IPV 6(在root使用者下執行)

echo " " >> /etc/modprobe.d/dist.conf

echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf

echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

在所有主機上執行如上命令,並重啟生效。

7.設定使用者最大能開啟檔案數目、程序數和記憶體(所有節點)

在linux終端中輸入 ulimit -a 進行檢視

“open files”引數選項後面的數值就是當前系統支援的最大開啟檔案數

vim /etc/security/limits.conf

通過拷貝修改

* soft nofile 32728

* hard nofile 1029345

* soft nproc 65536

* hard nproc unlimited

* soft memlock unlimited

* hard memlock unlimited

修改後 reboot 重啟系統

8.安裝 MySQL 資料

8.1、 檢查以前是否裝過 MySQL

rpm -qa|grep -i mysql

8.2、 發現有的話就都解除安裝(需要root使用者)

rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64

8.3、 刪除老版本 mysql 的開發標頭檔案和庫

rm -rf /usr/lib/mysql

rm -rf /usr/include/mysql

rm -rf /etc/my.cnf

rm -rf /var/lib/mysql

注意:解除安裝後/var/lib/mysql 中的資料及/etc/my.cnf 不會刪除,確定沒用後就手工刪除

8.4、 準備安裝包 

MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar,上傳到 全部節點,

解壓命令:tar -xvf mysql-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar 

8.5、 安裝 server

【注意需要在root使用者下】

su

cd /home/hadoop

rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm

開頭:

結尾:

如上圖所提示,即安裝 server 成功

8.6.安裝客戶端

rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm

8.7.登陸 MYSQL(登入之前千萬記得一定要啟動 mysql 服務)

service mysql start

初始密碼在cat /root/.mysql_secret 這個檔案裡

[[email protected] hadoop]# mysql -uroot -pbWUI51vd6vv28yfn

8.8.修改密碼

set PASSWORD=PASSWORD('root');

8.9.退出登陸驗證,看是否改密碼成功

8.10.增加遠端登陸許可權

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

mysql>FLUSH PRIVILEGES;

8.11.修改資料庫的預設編碼和執行引擎

第一步:先登入檢視,資料庫的字元編碼,命令:show variables like '%char%';

第二步:關閉 MySQL,拷貝一個配置檔案到/etc 目錄下,具體請看命令:

[[email protected] hadoop]# cp /usr/share/mysql/my-default.cnf /etc/my.cnf

第三步:修改該配置檔案:vim /etc/my.cnf,新增以下內容:

[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci

[client]
default-character-set = utf8

並給最後一行加上 #空格 如圖所示,否則關閉mysql會報錯

第四步:重啟mysql

關閉mysql:mysqladmin -u root -p shutdown

啟動mysql:service mysql start

檢視預設編碼:show variables like '%char%';

8.12新增使用者組合使用者名稱

yum list | grep mysql

新增使用者組:groupadd mysql

新增使用者名稱:useradd -r -g mysql mysql

在 MySQL 裡執行如下命令:

CREATE USER 'temp'@'localhost' IDENTIFIED BY 'temp';

grant all privileges on *.* to 'temp'@'%' identified by 'temp' with grant option;

grant all privileges on *.* to 'temp'@'CDH02' identified by 'temp' with grant option;

flush privileges;

9.CDH軟體的安裝

9.1 建立安裝目錄(所有節點)

需要root許可權

su

[[email protected] ~]# mkdir -p /opt/cloudera-manager

[[email protected] ~]# mkdir -p /opt/cloudera-manager

[[email protected] ~]# mkdir -p /opt/cloudera-manager

[[email protected] ~]# mkdir -p /opt/cloudera-manager

9.2到官網下載相對應的安裝包(所有節點)

點選去官網

說明:

EL是Red Hat Enterprise Linux的簡寫 
- EL6軟體包用於在Red Hat 6.x, CentOS 6.x, and CloudLinux 6.x進行安裝 
- EL5軟體包用於在Red Hat 5.x, CentOS 5.x, CloudLinux 5.x的安裝 
- EL7 軟體包用於在Red Hat 7.x, CentOS 7.x, and CloudLinux 7.x的安裝

這裡我們下載

上傳到各個節點上

解壓cloudera-manager-el6-cm5.10.2_x86_64.tar.gz到 /opt/cloudera-manager/下 (所有節點)

cd /home/hadoop

tar -zxvf cloudera-manager-el6-cm5.10.2_x86_64.tar.gz -C /opt/cloudera-manager/

解壓過程時間較長,出現如下圖即為成功

9.3 修改config.ini檔案(所有節點)

進入下面的檔案路徑

cd /opt/cloudera-manager/cm-5.10.2/etc/cloudera-scm-agent

vim config.ini

修改server_host=CDH02

9.4 建立CM使用者(只需要CDH02執行即可)

在CM的server節點上(這裡是CDH02)找到下面目錄下的指令碼

[[email protected] schema]# cd /opt/cloudera-manager/cm-5.10.2/share/cmf/schema

[[email protected] schema]# ./scm_prepare_database.sh mysql -h CDH02 -utemp -ptemp --scm-host CDH02 scm scm scm

注意:這裡的temp是在安裝mysql那裡就設定好的,如果你的主機對映跟我不同是可以的,別的就不能修改了

第一個:CDH02:MySQL 的安裝位置

第二個:CDH02:CM server 服務的位置

注意此時是報錯的:

需要把Mysql的驅動包傳送到/usr/share/java 目錄下(server)

注意要把jar包名稱重新命名為 mysql-connector-java.jar

首先:

注意:Mysql5.5版本之後全部採用統一的驅動jar即為MySqlConnector/J 8.0.11

[[email protected] hadoop]# mkdir /usr/share/java

其次:去官網下載mysql驅動包

上傳到CDH02中

注意:下載的是tar.gz檔案不能直接用,需要解壓,然後找到裡面的mysql-connector-java-8.0.11.jar檔案,然後再修改移動再修改名字。

[[email protected] java]# cd /home/hadoop

[[email protected] hadoop]# scp -r mysql-connector-java-8.0.11.tar.gz /usr/share/java/

[[email protected] hadoop]# cd /usr/share/java/

[[email protected] mysql-connector-java-8.0.11]# tar -zxvf mysql-connector-java-8.0.11.tar.gz -C $PWD

[[email protected] mysql-connector-java-8.0.11]# cd mysql-connector-java-8.0.11

[[email protected] mysql-connector-java-8.0.11]# scp -r mysql-connector-java-8.0.11.jar /usr/share/java/

[[email protected] java]# mv mysql-connector-java-8.0.11.jar mysql-connector-java.jar

最後的效果如下圖所示

再次執行上面建立CM使用者的兩個命令:

[[email protected] schema]# cd /opt/cloudera-manager/cm-5.10.2/share/cmf/schema

[[email protected] schema]# ./scm_prepare_database.sh mysql -h CDH02 -utemp -ptemp --scm-host CDH02 scm scm scm

9.5 配置CDH源:(這裡的命令只需要CDH02執行即可)

找到相應的源並下載:

下載對應版本的源,我們這裡下載如上圖紅線所示的兩個檔案

上傳到CDH02節點中

在Server伺服器(CDH02)中:把上面的兩個源放在/opt/cloudera/parcel-repo/     該步驟不用著急,後面有程式碼,按照我的教程一步一步走(這裡只是為了講我們下面要做什麼)

(該步驟是CDH自動進行,我們不需要手動操作)在Agent伺服器中:把上面這兩個源放在/opt/cloudera/parcels/

[[email protected] ~]#mkdir -p /opt/cloudera/parcel-repo/         這條命令所有節點都要執行

[[email protected] ~]# mkdir -p /opt/cloudera/parcels/                這條命令所有節點都要執行

在CDH02中:(下面沒特殊說明均在server節點,本文為CDH02節點執行)

[[email protected] ~]# cd /home/hadoop/

[[email protected] hadoop]# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel /opt/cloudera/parcel-repo/
[[email protected] hadoop]# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 /opt/cloudera/parcel-repo/

注意:

我們一開始只需要把源放到server端(本文是CDH02)的/opt/cloudera/parcel-repo/目錄下即可

然後安裝的時候server會把相對應的源放到agent的/opt/cloudera/parcels/目錄下

注意修改CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 的檔名,把末尾的1去掉

[[email protected] ~]# cd /opt/cloudera/parcel-repo

[[email protected] parcel-repo]# mv CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha1 CDH-5.10.2-1.cdh5.10.2.p0.5-el6.parcel.sha

9.6 CDH內部使用者(這裡的命令全部節點都要執行)

執行以下命令建立 cloudera-scm 使用者 [所有節點]上都要建立

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

修改

server:/opt/cloudera/parcel-repo

agent:/opt/cloudera/parcels/

的所屬者和所屬組為 cloudera-scm 使用者(按照下面的程式碼執行即可,不要自己瞎搞)

[[email protected] cloudera]# cd /opt/cloudera          這條命令所有節點都要執行

[[email protected] cloudera]# chgrp cloudera-scm parcel-repo/          這條命令所有節點都要執行

[[email protected] cloudera]# chown cloudera-scm parcel-repo/         這條命令所有節點都要執行

所有 agent 節點(所有節點)執行:chown -R cloudera-scm:cloudera-scm /opt/cloudera/

修改前如下圖所示:

修改後如下圖所示:

可以看到所有節點的cloudera資料夾的所屬者和所屬組都變了

9.7 啟動CM

a.首先啟動server(在server伺服器上,本文是CDH02)

注意:mysql一定要保證啟動,必須要使用root使用者執行下面命令

cd /opt/cloudera-manager/cm-5.10.2/etc/init.d 下執行 ./cloudera-scm-server start

檢視啟動結果:需要通過檢視 server 的啟動日誌檔案

[[email protected] ~]# cd /opt/cloudera-manager/cm-5.10.2/log/cloudera-scm-server/

[[email protected] ~]# tail -f cloudera-scm-server.log

看到如上圖所示即為成功(跟上圖不一樣也不要慌,因為我第二次裝跟上圖就不一樣,往下繼續即可)

b.啟動agent(在所有節點執行下面的命令)(必須要使用root使用者)

cd /opt/cloudera-manager/cm-5.10.2/etc/init.d 執行:./cloudera-scm-agent start

所有節點的狀態應如下圖

10. CDH的演示及使用

使用者名稱:admin

密碼:admin

選擇免費版,一路【繼續】

選擇CDH版本時,選擇我們之前已經上傳上去的版本

花費時間較長

選擇自定義,需要什麼就安裝什麼

安裝完CDH後,CDH Manager一般會提示使用者需要做一些Linux系統層面的優化,主要包括兩類:禁止透明大頁面及交換分割槽設定。

在所有節點執行下面命令

作用:關閉透明大頁面

首先檢視透明大頁是否啟用,[always] never表示已啟用,always [never]表示已禁用

cat /sys/kernel/mm/redhat_transparent_hugepage/defrag

如果是啟用狀態,先執行一次下面的兩行程式碼,再修改vim /etc/rc.local檔案並新增以下兩行,

[[email protected] ~]# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag 
[[email protected] ~]# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled 


修改swappiness

Linux核心引數vm.swappiness,值的範圍為0~100,表示系統什麼時候開始進行實體記憶體與虛擬記憶體的交換。舉個例子,系統總記憶體為64G,vm.swappiness為60,表示在系統記憶體使用64*0.4=25.6G的時候開始實體記憶體與虛擬記憶體的交換,這個動作勢必會影響系統的效能。因此,Cloudera建議把這個值修改為1~10。 
首先檢查當前設定的vm.swappiness值,

在所有節點執行以下命令

[[email protected] ~]# cat /proc/sys/vm/swappiness

臨時修改swappiness(重啟後恢復)

[[email protected] ~]# sysctl -w vm.swappiness=10

永久生效(重啟後不恢復)

[[email protected] ~]# echo "vm.swappiness=10" >> /etc/sysctl.conf

按照上圖所示進行勾選,然後下一步,

建議:配置之前先了解一下

Cloudera Manager(CDH5)內部結構、功能包括配置檔案、目錄位置

Cloudera Management Service將各種管理功能實現為一組角色:

  • Activity Monitor - collects information about activities run by the MapReduce service. This role is not added by default.

收集關於MapReduce服務執行的活動的資訊。預設情況下不會新增這個角色。

  • Host Monitor - collects health and metric information about hosts

收集關於主機的健康和指標資訊

  • Service Monitor - collects health and metric information about services and activity information from the YARN and Impala services

從YARN和Impala服務收集有關服務和活動資訊的執行狀況和度量標準資訊

  • Event Server - aggregates relevant Hadoop events and makes them available for alerting and searching

聚合相關的Hadoop事件,並使其用於警報和搜尋

  • Alert Publisher - generates and delivers alerts for certain types of events

為特定型別的事件生成併發送警報

  • Reports Manager - generates reports that provide an historical view into disk utilization by user, user group, and directory, processing activities by user and YARN pool, and HBase tables and namespaces. This role is not added in Cloudera Express.

生成報告,按使用者,使用者組和目錄提供磁碟利用率的歷史檢視,按使用者和YARN池處理活動,以及HBase表和名稱空間。Cloudera Express中未新增此角色。

Cloudera Manager分別管理每個角色,而不是作為Cloudera Manager Server的一部分,以實現可伸縮性(例如,在大型部署中將監視器角色放在自己的主機上很有用)和隔離。

1. 相關目錄 /var/log/cloudera-scm-installer : 安裝日誌目錄。


/var/log/* : 相關日誌檔案(相關服務的及CM的)。
/usr/share/cmf/ : 程式安裝目錄。
/usr/lib64/cmf/ : Agent程式程式碼。
/var/lib/cloudera-scm-server-db/data : 內嵌資料庫目錄。
/usr/bin/postgres : 內嵌資料庫程式。
/etc/cloudera-scm-agent/ : agent的配置目錄。
/etc/cloudera-scm-server/ : server的配置目錄。
/opt/cloudera/parcels/ : Hadoop相關服務安裝目錄。
/opt/cloudera/parcel-repo/ : 下載的服務軟體包資料,資料格式為parcels。
/opt/cloudera/parcel-cache/ : 下載的服務軟體包快取資料。
/etc/hadoop/* : 客戶端配置檔案目錄。

2. 配置


Hadoop配置檔案
 
配置檔案放置於/var/run/cloudera-scm-agent/process/目錄下。如:/var/run/cloudera-scm-agent/process/193-hdfs-NAMENODE/core-site.xml。這些配置檔案是通過Cloudera Manager啟動相應服務(如HDFS)時生成的,內容從資料庫中獲得(即通過介面配置的引數)。
 
在CM介面上更改配置是不會立即反映到配置檔案中,這些資訊會儲存於資料庫中,等下次重啟服務時才會生成配置檔案。且每次啟動時都會產生新的配置檔案。
 
CM Server主要資料庫為scm基中放置配置的資料表為configs。裡面包含了服務的配置資訊,每一次配置的更改會把當前頁面的所有配置內容新增到資料庫中,以此儲存配置修改歷史。

scm資料庫被配置成只能從localhost訪問,如果需要從外部連線此資料庫,修改vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf檔案,之後重啟資料庫。執行資料庫的使用者為cloudera-scm。
 
檢視配置內容
 
1). 直接查詢scm資料庫的configs資料表的內容。
2). 訪問REST API: http://hostname:7180/api/v4/cm/deployment,返回JSON格式部署配置資訊。

配置生成方式
CM為每個服務程序生成獨立的配置目錄(檔案)。所有配置統一在服務端查詢資料庫生成(因為scm資料庫只能在localhost下訪問)生成配置檔案,再由agent通過網路下載包含配置檔案的zip包到本地解壓到指定的目錄。
 
配置修改
CM對於需要修改的配置預先定義,對於沒有預先定義的配置,則通過在高階配置項中使用xml配置片段的方式進行配置。而對於/etc/hadoop/下的配置檔案是客戶端的配置,可以在CM通過部署客戶端生成客戶端配置。
 

3. 資料庫 


Cloudera manager主要的資料庫為scm,儲存Cloudera manager執行所需要的資訊:配置,主機,使用者等。
 

4. CM結構 


CM分為Server與Agent兩部分及資料庫(自帶更改過的嵌入Postgresql)。它主要做三件事件:
1). 管理監控叢集主機。
2). 統一管理配置。
3). 管理維護Hadoop平臺系統。
 
實現採用C/S結構,Agent為客戶端負責執行服務端發來的命令,執行方式一般為使用python呼叫相應的服務shell指令碼。Server端為Java REST服務,提供REST API,Web管理端通過REST API呼叫Server端功能,Web介面使用富客戶端技術(Knockout)。
1). Server端主體使用Java實現。
2). Agent端主體使用Python, 服務的啟動通過呼叫相應的shell指令碼進行啟動,如果啟動失敗會重複4次呼叫啟動指令碼。
3). Agent與Server保持心跳,使用Thrift RPC框架。
 

5. 升級 


在CM中可以通過介面嚮導升級相關服務。升級過程為三步:
1). 下載服務軟體包。
2). 把所下載的服務軟體包分發到叢集中受管的機器上。
3). 安裝服務軟體包,使用軟連結的方式把服務程式目錄連結到新安裝的軟體包目錄上。
 

6. 解除安裝 


sudo /usr/share/cmf/uninstall-scm-express.sh, 然後刪除/var/lib/cloudera-scm-server-db/目錄,不然下次安裝可能不成功。
 

7. 開啟postgresql遠端訪問 


CM內嵌資料庫被配置成只能從localhost訪問,如果需要從外部檢視資料,資料修改vim /var/lib/cloudera-scm-server-db/data/pg_hba.conf檔案,之後重啟資料庫。執行資料庫的使用者為cloudera-scm。

然後下一步:

出現如上問題是因為mysql沒有新建使用者,不能使用root使用者

使用root使用者登入mysql,使用下面的命令新建使用者cdh密碼cdh

mysql> GRANT USAGE ON *.* TO 'cdh'@'%' IDENTIFIED BY 'cdh' WITH GRANT OPTION; 

然後在CDH02中的mysql中執行下面程式碼:(建立需要mysql作為元資料的資料庫)

mysql> create database ActivityMonitorDatabase;

mysql> create database OozieDatabase;

mysql> create database HiveDatabase;

mysql> create database HueDatabase;

使用root使用者登入mysql資料庫 為cdh使用者授權所有資料庫的全部許可權

mysql>  grant all privileges on *.* to [email protected]"%" identified by 'cdh'; 

@"%" 表示對所有非本地主機授權,不包括localhost。對localhost授權:加上下面這句

mysql> grant all privileges on *.* to [email protected] identified by 'cdh';

mysql> FLUSH PRIVILEGES;

然後去設定元資料的使用者名稱,密碼如下圖所示。

再次連線可以看見如下圖,Hue報錯 Unexpected error. Unable to verify database connection.

其實就是缺少mysql的一些包(如果和本文不同的mysql版本,低於5.5的請自己在官網找一下對應版本,5.5以上統一採用本文的方案)

下載下面三個

下載完畢後全部上傳到CDH02節點(其實是上傳到Hue的節點)

依次!執行下面的命令:(注意是有順序的,層層依賴,如果不按順序執行會提示你需要上一個依賴)

[[email protected] hadoop]# rpm -ivh mysql-community-common-8.0.11-1.el6.x86_64.rpm

[[email protected] hadoop]# rpm -ivh mysql-community-libs-8.0.11-1.el6.x86_64.rpm

[[email protected] hadoop]# rpm -ivh mysql-community-libs-compat-8.0.11-1.el6.x86_64.rpm

然後下一步:

如下圖所示不用動,預設就好

下一步:

其實是spark這裡沒有去環境變數裡面找jdk,而是跑到了 /usr/java/default 這個目錄下去找jdk,所有報錯說沒有找到JAVA_HOME,只需要在叢集機器上面建立 /usr/java 目錄,然後建立軟連線就行:

[[email protected] java]# mkdir /usr/java

[[email protected] java]# ln -s /usr/local/jdk1.8.0_73 /usr/java/default