centos7聯網環境搭建ambari叢集及其本地源

2020-10-16 20:00:25

Centos7聯網環境搭建ambari叢集及其本地源

一、前提準備

1、使用vm建立5臺Centos7虛擬機器器
(主機數不定,但通常,至少應使用三臺主機:一臺主機和兩臺從機。)
五臺虛擬機器器均為:
磁碟:1T(精簡置備)
記憶體:4G
cpu:4核
2、下載ambari及其本地源(HDP),連結之後給出。

連結:
ambari2.6.2.2下載地址
HDP2.6.5.0下載地址
HDP-UTILS-1.1.0.22下載地址
HDP-GPL-2.6.5.0下載地址

檔案較大,提前下載為之後本地源搭建做準備

3、以下為本次搭建所用到的所有檔案

在這裡插入圖片描述

本次搭建五臺虛擬機器器均使用root使用者

二、準備安裝

1、為虛擬機器器設定網路卡資訊

在centos7系統下,輸入cd /etc/sysconfig/network-scripts/進入網路卡組態檔夾,使用vi編輯器編輯網路卡檔案。為虛擬機器器設定ip地址資訊。
在這裡插入圖片描述
在這裡插入圖片描述
此操作要求五臺虛擬機器器中均完成。之後使用systemctl network restart命令重新啟動網路卡。
使用ping命令,ping www.baidu.com,若能夠ping通,則虛擬機器器可聯網。

2、設定hostname

(1)在每臺虛擬機器器中執行hostnamectl set-hostname (你設定的主機名稱)。
本次演示中,五臺虛擬機器器名稱為

ambari
client
master
slave1
slave2

(2)在每臺虛擬機器器中執行vi /etc/hosts,進入vi編輯器編輯hosts檔案,將五臺虛擬機器器的IP地址及主機名(hostname)加入其中。
格式為:

ip地址 主機名

若無特殊說明之後所有操作均在ambari主機上操作

3、設定ssh

(1)在每臺主機中執行ssh -keygen
(2)在root檔案下,使用cd命令,進入.ssh/資料夾
(3)執行cp id_rsa.pub authorized_keys
(4)執行ls命令檢視資料夾,執行vi authorized_keys命令,將其餘四臺主機中的id_rsa.pub內的內容複製貼上入ambari主機中的authorized_keys檔案中。
(5)執行scp -p authorized_keys root@client:/root/.ssh/
該命令將authorized_keys檔案傳入client主機中,以此類推,將檔案傳入其餘三臺主機中。
(6)執行ssh client命令檢視是否能夠免密登入,以此類推檢查每個主機間的免密登入情況(所有主機間都需要實現免密登入

4、關閉firewalld、selinux

(1)關閉防火牆
在每個主機中執行以下兩條命令:

systemctl stop firewalld
systemctl disable firewalld

使用systemctl status firewalld檢視防火牆狀態
(2)關閉Selinux

vi /etc/sysconfig/selinux
SELINUX=enforcing 改為 SELINUX=disabled

改操作需重新啟動機器後生效
重新啟動後使用getenforce命令檢視selinux狀態

5、安裝JDK1.8

(1)執行命令mkdir /opt/jdk/,將jdk安裝包傳入jdk資料夾,使用tar命令解壓。
(2)使用scp命令將jdk檔案傳入其餘四臺主機

scp -p /opt/jdk/ root@client:/opt/

以此類推,將jdk資料夾傳入其餘三臺主機。
(3)修改環境變數

vi /etc/profile

在檔案最後填入以下內容

export PATH
export JAVA_HOME=/opt/jdk/jdk1.8.0_261
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

使用java -version命令檢查java安裝情況
(4)修改其餘四臺主機的環境變數,並使用java -version驗證java安裝情況

6、NTP時間同步

在虛擬機器器能夠聯網的情況下,可跳過這個操作,如若需要請自行尋找教學。

7、安裝httpd

依次執行以下命令

yum install httpd -y #安裝
systemctl start httpd #啟動
systemctl enable httpd #開機預設啟動

預設網站根目錄為/var/www/html,無需更改

8、安裝mysql

(1)在mysql官網下載mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar,下載過程中,在ambari建立/opt/mysql/資料夾

mkdir /opt/mysql

將下載好的壓縮包傳入該資料夾中,並使用tar -xvf命令釋放壓縮包。
(2)由於Centos7自帶mariadb資料庫,該資料庫驅動與mysql驅動衝突,所以在安裝mysql資料庫前應將其解除安裝。
執行以下命令

rpm -qa | grep mariadb

使用rpm命令刪除查詢出的所有檔案

rpm -e --nodeps 檔名

(3)安裝perl

yum install perl -y

(4)安裝mysql
之前解壓出來的幾個rpm包之間有依賴關係,所以需要按照順序依次執行以下命令安裝:

rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm

至此mysql資料庫安裝完成。
(5)執行mysql

systemctl start mysqld

(6)修改root使用者密碼
在執行mysql後,mysql會自動幫我們建立一個root使用者,需要進入mysql.log中檢視root使用者密碼,初始密碼非常複雜,建議更改。
檢視mysql.log:

cat /var/log/mysqld.log

找到A temporary password is generated for root@localhost:字樣,之後跟著的就是密碼,複製儲存一會使用。
登入:

mysql -u root -p

輸入剛才複製的密碼
修改密碼:

set global validate_password_policy=0;
set password = password('root1234');
grant all privaileges on *.* to 'root'@'%';
flush privileges;

設定開機啟動

systemctl enable mysqld

9、安裝mysql jdbc

自行載入jar包,將其放入/usr/share/java
本次使用的jar包下載地址:
https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar
可使用wget命令將該檔案直接下載到/usr/share/java檔案中

cd /usr/share/java
wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar

將下載的包名稱改為mysql-connector-java.jar

mv mysql-connector-java-8.0.11.jar mysql-connector-java.jar

10、搭建資料庫

使用root使用者登入mysql

mysql -u root -p

建立如下資料庫

create database ambari;
CREATE USER 'ambari'@ '%' IDENTIFIED BY 'Ambari-123';
GRANT ALL PRIVILEGES ON *.* TO 'ambari'@ '%';
FLUSH PRIVILEGES
create database hive;
CREATE USER 'hive'@ '%' IDENIFIED BY 'Hive-123';
GRANT ALL PRIVILEGES ON *.* TO 'hive'@ '%';
FLUSH PRIVILEGES

11、製作本地源

(1)將之前下載的ambari,HDP,HDP-UTILS,HDP-GPL壓縮包傳入ambari的/var/www/html/ambari資料夾中。(自行建立ambari資料夾)
(2)使用tar命令將其解壓,結果如下:

在這裡插入圖片描述
我們可以在網頁中查詢到這些檔案,在瀏覽器中輸入http://ambari的ip地址/ambari,便可以看到上述檔案。
在這裡插入圖片描述
(3)安裝建立yum源工具

yum install yum-utils createrepo yum-plugin-priorities -y
createrepo ./   #在var/www/html/ambari/下執行即可

(4)設定本地源
將ambari.repo、hdp.repo、hdp-gpl.gpl.repo檔案傳入/etc/yum.repos.d/。上述三個檔案依次在解壓後的ambari/、HDP/、HDP-GPL/下。
可使用wget命令下載至/etc/yum.repos.d/中,也可直接複製到該資料夾下。
ip地址=httpd服務所在主機的ip地址 (下同)

wget http://{ip地址}/ambari/ambari/centos7/2.6.2.2-1/ambari.repo
wget http://{ip地址}/ambari/HDP/centos7/2.6.5.0-292/hdp.repo
wget http://{ip地址}/ambari/HDP-GPL/centos7/2.6.5.0-292/hdp-gpl.gpl.repo

修改ambari.repo檔案:

vi ambari.repo

將baseurl屬性改為

http://{ip地址}//ambariambari/centos7/2.6.2.2-1/

同上述操作,將hdp.repo、hdp-gpl.gpl.repo檔案中的baseurl屬性全改為相應的地址。其中hdp.repo中還有HDP-UTILS的資訊,也要改成hdp-utils的相應地址。
最後,將這三個檔案傳送到其餘四個節點
(4)製作本地源

yum clean all
yum makecache
yum repolist

三、執行安裝程式

1、安裝Ambari

yum install ambari-server -y

2、設定Ambari

ambari-server setup

之後按照提示進行操作:
1)提示是否自定義設定。輸入y

在這裡插入圖片描述
2)設定ambari-server賬號。輸入:root

在這裡插入圖片描述
3)設定JDK。輸入:3
在這裡插入圖片描述
選擇本地jdk,輸入JAVA_HOME
4)設定資料庫,輸入:3

在這裡插入圖片描述
屬性依次為:

服務所在主機名、埠(預設3306)、資料庫名、資料庫使用者名稱、相應密碼

5)將Ambari資料庫指令碼匯入到資料庫
使用Ambari使用者登入mysql

mysql -u ambari -p
use ambari
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql

至此Ambari服務設定完成

3、啟動ambari

將/usr/share/java/中的mysql-connector-java.jar複製到/var/lib/ambari-server/resources/中。

cp /usr/share/java/mysql-connector-java.jar /var/lib/ambari-server/resources/

修改/etc/ambari-server/conf/ambari.properties檔案

vi /etc/ambari-server/conf/ambari.properties

在其中新增

server.jdbc.driver.path=/usr/share/java/mysql-connector-java.jar

啟動ambari

ambari-server start

成功啟動後,在瀏覽器中輸入ambari地址:http://{ip地址}:8080

四、安裝、設定和部署叢集

1、登入

進入瀏覽器後,出現登入介面,預設管理員賬戶登入

賬戶:admin
密碼:admin

在這裡插入圖片描述

2、登入成功

登入成功後進入如下介面
在這裡插入圖片描述
點選Launch Install Wizard

3、準備開始

自定義cluser名稱
在這裡插入圖片描述

4、選擇堆疊

在這裡插入圖片描述
選擇本地源
在這裡插入圖片描述
填入相應地址:

http://{ip地址}/ambari/HDP/centos7/2.6.5.0-292/
http://{ip地址}/ambari/HDP-GPL/centos7/2.6.5.0-292/
http://{ip地址}/ambari/HDP-UTILS/centos7/1.1.0.22/

具體位置根據實際情況填入,以上僅供參考。
在這裡插入圖片描述

5、設定ambari-agent安裝選項

在這裡插入圖片描述
第一個文字方塊填入除ambari主機外的四臺主機名
第二個文字方塊填入所有五臺主機的私鑰(/root/.ssh/id_rsa)

6、安裝ambari-agent

第一次執行,可能會報錯
在這裡插入圖片描述

解決方法:
修改所有主機中的/etc/python/cert-verification.cfg檔案

vi /etc/python/cert-verification.cfg

[https]
verify=platform_default
將上述屬性值修改為disable

修改四臺從機中的/etc/ambari-agent/conf/ambari-agent.ini檔案
新增[security]欄以下內容

vi /etc/ambari-agent/conf/ambari-agent.ini

[security]
force_https_protocol=PROTOCOL_TLSv1_2

修改完成後,點選retry重新註冊
在這裡插入圖片描述
全部通過後,點選下一步

7、選擇服務

在這裡插入圖片描述
本次搭選擇的服務有:HDFS、YARN+MapReduce2、Tez、Hive、HBase、Pig、Sqoop、ZooKeeper、Ambari Metrics、Kafka、SmartSense、Spark、Slider。

8、分配服務所在主節點

預設就好,不用更改
在這裡插入圖片描述

9、分配節點

在這裡插入圖片描述
將client設定在client主機,其餘如圖即可(僅供參考,可根據需求自行選擇)

10、客製化服務

進入介面如下
在這裡插入圖片描述
HDFS欄:
將NameNode directories中的 ,/home/hadoop/hdfs/namenode 刪除
將DataNode directories中的 ,/home/hadoop/hdfs/data 刪除
在這裡插入圖片描述
YARN欄:
點選Advanced
將yarn.nodemanager.local-dirs中的 ,/home/hadoop/yarn/local 刪除
將yarn.nodemanager.log-dirs中的 ,/home/hadoop/yarn/log 刪除
在這裡插入圖片描述
Hive欄:
點選Advanced
選擇自行安裝的mysql;
填入之前建立的mysql使用者(hive)的密碼(Hive-123);
將Database URL中的master改為ambari(mysql安裝在ambari上);
點選測試,嘗試連線,連線成功即可。
在這裡插入圖片描述
Ambari Metrics欄:
自定義密碼即可
在這裡插入圖片描述
SmartSense欄:
點選Activity Analysis
自定義密碼即可
在這裡插入圖片描述
可能出現的問題
進入從虛擬機器器(除ambari外)使用命令

ds -lh  #檢視本機磁碟使用情況

在這裡插入圖片描述
可以發現 / 目錄下哦那個容量為50G

點選下一步時,會出現如下警告
在這裡插入圖片描述
hdfs預設為主機檔案系統保留60G的磁碟容量,上述警告為建議為主機檔案系統保留120G的磁碟容量,但是通過命令查詢hdfs掛載的節點容量僅為50G,若設定為120G,會導致hdfs無容量可用,導致一會叢集啟動失敗。
在這裡,我將dfs.datanode.du.reserved容量設定為20G。
該條屬性請根據虛擬機器器的具體情況進行自主設定

其餘可能的解決辦法:

1)增加一塊磁碟,如有必要請自行查詢教學
2)重新劃分分割區,將hdfs掛載節點的容量提高

將dfs.datanode.du.reserved屬性(位置在HDFS->General->Reserved space for HDFS)修改為20G(21474836480 bytes)後無視警告進行下一步。

11、檢查設定

複查,沒有問題進入下一步
在這裡插入圖片描述

12、安裝並啟動叢集

所有節點安裝並啟動成功,則至此ambari叢集搭建完成
若出現錯誤,則複查之前所有操作,或檢視紀錄檔,解決所有報錯
成功介面如下:
在這裡插入圖片描述

13、總結

在這裡插入圖片描述
點選Complete,進入管理介面:
在這裡插入圖片描述
至此,本次搭建ambari叢集及其本地源所有操作完成

參考資料:
http://ambari.apache.org/1.2.4/installing-hadoop-using-ambari/content/ambari-chap1.html

https://blog.csdn.net/weixin_42348946/article/details/90268875?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduend~default-2-90268875.nonecase&utm_term=ambari%E9%85%8D%E7%BD%AEyum%E6%BA%90