1. 程式人生 > 其它 >基於阿里雲安裝CDH6.3.2

基於阿里雲安裝CDH6.3.2

第一章Cloudera Manager(CM)簡介

1.1 CM簡介

  Cloudera Manager是一個擁有叢集自動化安裝、中心化管理、叢集監控、報警功能的一個工具,使得安裝叢集從幾天的時間縮短在幾個小時內,運維人員從數十人降低到幾人以內,極大的提高叢集管理的效率。

1.2 CM架構

第二章 阿里雲伺服器準備

  本次我們選擇使用阿里雲伺服器進行專案部署,以便於以後更好的適應雲開發環境。

2.1 註冊並登入阿里雲賬戶

  阿里雲網址為:https://aliyun.com/,註冊賬號並登入。

2.2 購買ECS雲伺服器

  1)點選右上角控制檯

  2)開啟側邊欄,點選雲伺服器ECS

  3)點選左側例項,然後點選右上角建立例項

  4)選擇付費模式和地域可用區

    包年包月一般是企業中會使用。學習階段可以選擇按量付費或者搶佔式例項。按量付費稍微貴一些,按照使用時長進行計費。搶佔式例項有被釋放的風險,但一般情況下不會出現,且搶佔式例項遠遠低於前兩種的價格,建議選擇,但搶佔式例項不能更改或升級實力規格。(後兩種模式在停機不收費的情況下,公網IP可能會被收回,下次啟動可能會改變,這裡需要注意。)

  5)選擇伺服器配置和系統(如果提示餘額不足,請先充值並保證阿里雲賬戶餘額大於100元。)

  6)網路和安全組配置

    頻寬我們選擇按用量付費,並把頻寬設定為100Mbps。完成後點選下一步:系統設定。

  7)系統配置

  8)分組設定,全部使用預設即可,或根據業務需求分組或者分配標籤。

  9)確認訂單,建立例項

  10)建立成功之後,點選管理控制檯進入控制檯管理介面

2.3 ECS升級配置及安全組修改

  1)停止例項,勾選hadoop102,點選停止按鈕

  2)更改例項規格,可點選右上方進行例項狀態重新整理,等到hadoop102狀態變為已停止後,點選更改例項規格

  3)重啟升級後的hadoop102,並更改網路安全組配置

  4)點選配置規則

    CDH中需要放行的埠如下:

埠號

元件

備註

7180

CDH web UI

9870

HDFS web UI

8088

Yarn web UI

19888

Historyserver web UI

8080

8888

Hue(未優化)

8889

Hue(優化)

3306

MySQL

6379

Redis

9092

kafka

2181

zk

4040

Spark

18088

Spark

10000

Hiveserve2

10002

Hive

11000

Oozie

51000

Sentry

8020

HDFS

  可點選手動新增進行配置,也可使用檔案進行匯入,可使用該json檔案進行匯入:https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/fileshare/ecs_cn-shenzhen.json

  點選左側安全組內例項列表,確保三個例項都在安全組內。如果沒有在同一個安全組內,通過點選右上角批量匯入例項進行新增

第三章 CM部署環境準備

3.1 shell工具連線伺服器

  開啟遠端連線工具(如XshellFinalshell等)並連線至三個例項。我們在訪問公網資源時候需要使用例項的公網IP

  點選公網IP旁的複製按鈕進行復制,並複製到遠端連線工具的主機名處進行連線

  如下圖,已經成功連線三臺例項

3.2 修改例項中hosts檔案

vim /etc/hosts
172.17.84.61    hadoop102       hadoop102
172.17.84.62    hadoop103       hadoop103
172.17.84.63    hadoop104       hadoop104

  注意:三個例項都需要配置,這裡每個人的IP不一樣,填寫的是內網IP,做完後ping一下看是否能ping通,如果能ping通表示配置成功。(如果想要在Windows環境中使用hostname訪問阿里雲主機,需要配置Windows本地hosts

3.3 SSH免密登入

  配置hadoop102、hadoop103、hadoop104三臺伺服器免密登入。CDH服務開啟與關閉是通過server和agent來完成的,所以這裡不需要配置SSH免密登入,但是為了我們分發檔案方便,在這裡我們也配置SSH。

3.3.1生成公鑰和私鑰

  執行ssh-keygen -t rsa並敲三次回車,會在我們的/root/.ssh目錄下生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)

ssh-keygen -t rsa

  由於Linux系統中名稱首位為.的檔案和資料夾會被隱藏,因此使用ll -a命令才可顯式地看到".ssh"資料夾

3.3.2拷貝公鑰

  將公鑰拷貝到要免密登入的目標機器上(需要輸入yes和對應例項的root密碼一共輸入9遍)

[root@hadoop102 .ssh]# ssh-copy-id hadoop102
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'hadoop102 (172.17.84.61)' can't be established.
ECDSA key fingerprint is SHA256:SeLIbTWo16rK/9sFijEhRUmAvvJJV3XOOU5nJh5cGiA.
ECDSA key fingerprint is MD5:bc:fd:55:d1:38:95:26:03:47:b4:c8:d8:46:ba:e8:be.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hadoop102's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'hadoop102'"
and check to make sure that only the key(s) you wanted were added.
[root@hadoop102 .ssh]# ssh-copy-id hadoop103
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'hadoop103 (172.17.84.62)' can't be established.
ECDSA key fingerprint is SHA256:F2xQpv+atNNuES8eUhgnPkEDWltgWhPFOmNzkmIFwDY.
ECDSA key fingerprint is MD5:1a:8f:a1:51:00:3f:6b:92:3f:35:a0:16:28:d5:3b:f2.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hadoop103's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'hadoop103'"
and check to make sure that only the key(s) you wanted were added.
[root@hadoop102 .ssh]# ssh-copy-id hadoop104
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'hadoop104 (172.17.84.63)' can't be established.
ECDSA key fingerprint is SHA256:jHmx2MOSM11uh9H1miowKwdmpvVubYo6U0h5UugRjY4.
ECDSA key fingerprint is MD5:dd:87:aa:6f:19:33:81:40:2b:88:ef:c7:0d:4d:82:2b.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@hadoop104's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'hadoop104'"
and check to make sure that only the key(s) you wanted were added.

3.3.3配置所有免密登入

  重複12的操作,配置hadoop103和hadoop104hadoop102hadoop103hadoop104三臺伺服器免密登入。

3.4 叢集同步指令碼

  1)/root目錄下建立bin目錄,並在bin目錄下建立檔案xsync,檔案內容如下:

mkdir bin
cd bin/
vim xsync
#!/bin/bash
#1. 判斷引數個數
if [ $# -lt 1 ]
then
  echo Not Enough Arguement!
  exit;
fi
#2. 遍歷叢集所有機器
for host in hadoop102 hadoop103 hadoop104
do
  echo ====================  $host  ====================
  #3. 遍歷所有目錄,挨個傳送
  for file in $@
  do
    #4. 判斷檔案是否存在
    if [ -e $file ]
    then
      #5. 獲取父目錄
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 獲取當前檔案的名稱
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
done

  2)修改指令碼xsync具有執行許可權

chmod u+x xsync

  3)分發指令碼本身

xsync xsync

3.5 叢集整體操作指令碼

  1)/root/bin目錄下建立指令碼xcall.sh

vim xcall.sh

  2)在指令碼中編寫如下內容

#! /bin/bash

for i in hadoop102 hadoop103 hadoop104
do
        echo --------- $i ----------
        ssh $i "$*"
done

  3)修改指令碼執行許可權

chmod u+x xcall.sh

  4)將/etc/profile檔案追加到~/.bashrc後面

    修改.bashrc檔案,這種方法更為安全,它可以把使用這些環境變數的許可權控制到使用者級別,這裡是針對某一個特定的使用者,如果你需要給某個使用者許可權使用這些環境變數,你只需要修改其個人使用者主目錄下的.bashrc檔案就可以了

    登陸 linux 啟動 bash時首先會去讀取~/.bash_profile檔案,在.bash_profile檔案中會顯式呼叫.bashrc,這樣 ~/.bashrc也就得到執行了。(這裡請不要用xcall.sh 指令碼去執行,分別手動進行執行,不然會出錯

[root@hadoop102 ~]# cat /etc/profile >> ~/.bashrc
[root@hadoop103 ~]# cat /etc/profile >> ~/.bashrc
[root@hadoop104 ~]# cat /etc/profile >> ~/.bashrc

  5)分發xcall.sh

xsync /root/bin/xcall.sh

  6)測試

xcall.sh jps

3.6 檢查防火牆是否關閉

  6.3.x 官方部署文件(英文):https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/installation_reqts.html

  如果已經關閉,則進行下一步;如果未關閉,則先備份當前防火牆規則並關閉防火牆

[root@hadoop102 bin]# sudo systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

  此處是防火牆未關閉的情況需要執行的命令

# 儲存當前防火牆規則
sudo iptables-save > ~/firewall.rules
# 禁用防火牆
sudo systemctl disable firewalld
# 停止防火牆
sudo systemctl stop firewalld

3.7 檢查hostname是否配置成功

  # 使用命令 hostname 或者 hostnamectl status進行檢視

[root@hadoop102 bin]# hostname
hadoop102
[root@hadoop102 bin]# hostnamectl status
   Static hostname: hadoop102
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 20210623111207095151419199170789
           Boot ID: 0088c360a7414da9a73db12a3dcfb950
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1160.31.1.el7.x86_64
      Architecture: x86-64

3.8 禁用SELinux mode

  安全增強的Linux (SELinux)允許通過策略設定訪問控制。如果在部署CDH時遇到困難,請在將CDH部署到叢集之前,在每個主機上將SELinux設定為permissive模式。(關於什麼是SELinux,不是課程重點,感興趣的同學可以自行查詢。這裡只需要按照下面命令進行配置,即可在後面環境檢查時候順利通過。)

  # 使用命令getenforce檢查當前SELinux mode狀態

[root@hadoop102 bin]# getenforce
Disabled

  如果輸出結果為Permissive Disabled,則可進行3.9中的操作。

  如果輸出結果為enforcing,則需要:

  1)開啟/etc/selinux/config檔案

  2)將SELINUX= enforcing這一行改為SELINUX= permissive

  3)儲存並關閉檔案

  4)重新啟動系統或執行setenforce 0命令來立即禁用SELinux

3.9 禁用透明大頁配置

  Cloudera公司建議我們關閉透明大頁。如果未關閉,則在後面的環境檢測中會報如下錯誤。(關於什麼是透明大頁,不是課程重點,感興趣的同學可以自行查詢。這裡只需要按照下面命令進行配置,即可在後面環境檢查時候順利通過。)

  1)三臺例項上分別執行以下四行程式碼

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local

  2)前兩行程式碼只能暫時生效,當重啟後配置會消失

[root@hadoop102 ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag
[root@hadoop102 ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled

  3)永久生效需要把資訊加到啟動項中

[root@hadoop102 ~]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.local
[root@hadoop102 ~]# echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.local

3.10啟用NTP服務可選

  CDH要求在叢集中的每臺機器上配置一個網路時間協議(NTP)服務。大多數作業系統使用時間同步的ntpd服務。(RHEL 7相容的作業系統預設使用chronyd而不是ntpd。如果chronyd正在執行,Cloudera Manager將使用它來確定主機時鐘是否同步。否則,Cloudera Manager使用ntpd。)

[root@hadoop102 bin]# ps -ef |grep chronyd
chrony     570     1  0 15:51 ?        00:00:00 /usr/sbin/chronyd
root      1744  1303  0 17:01 pts/0    00:00:00 grep --color=auto chronyd

  我們使用的阿里雲實例,已經運行了chronyd。且阿里雲自動會同步時間,所以如果在阿里雲上部署的話,這一步同步時間操作可以跳過

3.11hue安裝python2.7服務

  CentOS 7版本可跳過,我們使用的是CentOS 7,使用命令可觀察當前的python版本。

[root@hadoop102 bin]# python --version
Python 2.7.5

3.12【瞭解】CDH平臺許可權與命令概覽

任務

需要的許可權

安裝Cloudera Manager Server

安裝CM Server的主機需要有root or sudo許可權。

使用servicesystemctl工具啟動、停止或重新啟動Cloudera Manager伺服器

Cloudera Manager Server 的主機需要有root or sudo許可權 預設情況下服務執行在cloudera-scm使用者下

使用CM安裝CDH元件

Cloudera Manager初始安裝時配置的如下之一:
有密碼或者ssh祕鑰的方式訪問root使用者的許可權
為特定使用者提供無密碼的sudo訪問.
對於此任務,不支援使用另一個提供rootsudo訪問的系統(例如PowerBroker)

使用CM安裝CM Agent

Cloudera Manager初始安裝時配置的如下之一:

有密碼或者ssh祕鑰的方式訪問root使用者的許可權
為特定使用者提供無密碼的sudo訪問.
對於此任務,不支援使用另一個提供rootsudo訪問的系統(例如PowerBroker)

自動啟動CM Agent程序

在執行時訪問root帳戶,通過以下場景之一:
Cloudera ManagerCDH安裝期間,如果安裝成功,代理將自動啟動。然後使用以下其中一種啟動它,這與Cloudera Manager初始安裝期間的配置相同:
有密碼或者ssh祕鑰的方式訪問root使用者的許可權
為特定使用者提供無密碼的sudo訪問.
對於此任務,不支援使用另一個提供rootsudo訪問的系統(例如PowerBroker)
在系統啟動過程中使用init自動啟動。

手動啟動、停止或重新啟動Cloudera Manager Agent程序

root or sudo 許可權。
這個許可權要求確保Cloudera Manager代理管理的服務可以作為適當的使用者執行(例如hdfs服務的hdfs使用者)。在CDH服務的Cloudera Manager中執行命令不需要rootsudo訪問,因為操作是由Cloudera Manager Agent處理的,它已經作為root在運行了。

  如果您想為Cloudera Manager使用者配置特定的sudo訪問(預設情況下是Cloudera -scm),您可以使用以下列表來完成,Cloudera Manager執行的sudo命令有:

yum (RHEL/CentOS/Oracle)
zypper (SLES)
apt-get (Ubuntu)
apt-key (Ubuntu)
sed
service
/sbin/chkconfig (RHEL/CentOS/Oracle)
/usr/sbin/update-rc.d (Ubuntu)
id
rm
mv
chown
install

3.13【瞭解】CDH平臺使用的埠概覽

  1)Cloudera ManagerCloudera Navigator使用的埠

  2)點對點包裹分發中使用的埠

  3)外部埠

元件

服務

配置

說明

Cloudera Manager Server

HTTP (Web UI)

7180

管理 > 設定 > 類別 > 埠和地址 > HTTP 埠的管理控制檯

web 控制檯使用的 HTTP 埠。

HTTPS (Web UI)

7183

管理 > 設定 > 類別 > 埠和地址 > HTTPS 管理控制檯埠

如果啟用了 HTTPS,則 web 控制檯使用的埠。如果啟用,埠 7180 將保持開啟,但是將所有請求重定向到埠 7183 上的 HTTPS。

Cloudera Navigator Metadata Server

HTTP (Web UI)

7187

Cloudera Management Service > 配置 > 類別 > 埠和地址 > 導航器元資料伺服器埠

Navigator元資料伺服器偵聽請求的埠。

Backup and Disaster Recovery

HTTP (Web UI)

7180

管理 > 設定 > 類別 > 埠和地址 > Admin Console 的 HTTP 埠

用於與 Cloudera Manager 通訊

HTTPS (Web UI)

7183

管理 > 設定 > 類別 > 埠和地址 > Admin Console 的 HTTPS 埠

在啟用 https 時,用於與 Cloudera Manager 通訊

HDFS NameNode

8020

HDFS 服務 > 配置 > 類 > 埠和地址 > NameNode 埠

HDFS 和 Hive/Impala 複製: 從目標 HDFS 和 MapReduce 主機到源 HDFS NameNode(s) 的通訊。Hive/Impala 複製: 從源 Hive 主機到目標 HDFS NameNode(s) 的通訊

HDFS DataNode

50010

HDFS 服務 > 配置 > 類 > 埠和地址 > DataNode 收發器埠

HDFS 和 Hive/Impala 複製: 從目標 HDFS 和 MapReduce 主機到源 HDFS DataNode(s) 的通訊。Hive/Impala 複製: 從源 Hive 主機到目標 HDFS DataNode(s) 的通訊。

Telemetry Publisher(??)

HTTP

10110

叢集 > Cloudera Management Service > 類別 > 埠和地址 > Telemetry Publisher Server Port

遙測釋出伺服器偵聽請求的埠

Telemetry Publisher

HTTP (Debug)

10111

叢集 > Cloudera Management Service > 類別 > 埠和地址 > Telemetry Publisher Web UI Port

遙測釋出者啟動除錯 web 伺服器的埠。設定為 - 1 以禁用除錯伺服器

  4)內部埠

元件

服務

配置

描述

Cloudera Manager Server

Avro (RPC)

7182

管理 > 設定 > 類 > 埠和地址 > 連線到伺服器的代理埠

用於代理伺服器心跳

嵌入式 PostgreSQL 資料庫

7432

可選的嵌入式 PostgreSQL 資料庫,用於儲存 Cloudera Manager 伺服器的配置資訊。

點對點包裹分佈

7190, 7191

主機 > 所有主機 > 配置 > P2P Parcel 分配埠

用於在安裝和升級操作期間向叢集主機分發包。

Cloudera Manager Agent
監聽埠

Custom protocol

9000

/etc/cloudera-scm-agent/config.ini

用於檢索日誌和診斷資訊,如結果摘要。已完成命令的 json 檔案。還用於從代理請求即時心跳並檢視代理狀態,如心跳、主機和服務資訊。

Event Server

Custom protocol

7184

Cloudera Management Service > 配置 > 類別 > 埠和地址 > 事件釋出埠

事件伺服器偵聽事件釋出的埠。

Custom protocol

7185

Cloudera Management Service > 配置 > 類別 > 埠和地址 > 事件查詢埠

事件伺服器偵聽事件查詢的埠。

HTTP (Debug)

8084

Cloudera Management Service > 配置 > 類別 > 埠和地址 > Event Server Web UI 埠

事件伺服器除錯頁面的埠。設定為 - 1 以禁用除錯伺服器。

警報釋出

Custom protocol

10101

Cloudera Management Service> 配置 > 類別 > 埠和地址 > 警報:偵聽埠

警報釋出者偵聽內部 API 請求的埠。

服務監控

HTTP (Debug)

8086

Cloudera Management Service> 配置 > 類別 > 埠和地址 >Service Monitor Web UI 埠

服務監視器除錯頁面的埠。設定為 - 1 以禁用除錯伺服器。

HTTPS (Debug)

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Service Monitor Web UI HTTPS Port

服務監視器的 HTTPS 除錯頁面的埠。

Custom protocol

9997

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Service Monitor 偵聽埠

服務監視器監聽代理訊息的埠。

Internal query API (Avro)

9996

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Service Monitor 噴嘴埠

服務監視器的查詢 API 公開的埠。

Activity Monitor

HTTP (Debug)

8087

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Activity Monitor Web UI 埠

活動監視器除錯頁的埠。設定為 - 1 以禁用除錯伺服器。

HTTPS (Debug)

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Activity Monitor Web UI HTTPS Port

活動監視器的 HTTPS 除錯頁面的埠。

Custom protocol

9999

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Activity Monitor 偵聽埠

活動監視器偵聽代理訊息的埠。

Internal query API (Avro)

9998

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Activity Monitor 噴嘴埠

活動監視器的查詢 API 公開的埠。

Host Monitor

HTTP (Debug)

8091

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Host Monitor Web UI 埠

主機監視器除錯頁的埠。設定為 - 1 以禁用除錯伺服器。

Custom protocol

9995

Cloudera Management Service> 配置 > 類別 > 埠和地址 >Host Monitor 偵聽埠

主機監視器監聽代理訊息的埠。

Internal query API (Avro)

9994

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Host Monitor 噴嘴埠

主機監視器的查詢 API 公開的埠。

Reports Manager

Queries (Thrift)

5678

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Reports Manager Server Port

報告管理器偵聽請求的埠。

HTTP (Debug)

8083

Cloudera Management Service> 配置 > 類別 > 埠和地址 > Reports Manager Web UI Port

報告管理器啟動除錯 web 伺服器的埠。設定為 - 1 以禁用除錯伺服器。

Cloudera Navigator 審計服務

HTTP

7186

Cloudera Management Service> 配置 > 類別 > 埠和地址 >Navigator Audit Server Port

導航器審計伺服器偵聽請求的埠。

HTTP (Debug)

8089

Cloudera Management Service> 配置 > 類別 > 埠和地址 >Navigator Audit Server Web UI Port

導航器審計伺服器執行除錯 web 伺服器的埠。設定為 - 1 以禁用除錯伺服器。

  5)CDH 元件使用的外部埠

元件

服務

配置

說明

Apache Hadoop HDFS

DataNode

9866

dfs.datanode.address

DataNode HTTP 伺服器埠

1004

dfs.datanode.address

9864

dfs.datanode.http.address

9865

dfs.datanode.https.address

1006

dfs.datanode.http.address

9867

dfs.datanode.ipc.address

NameNode

8020

fs.default.nameor fs.defaultFS

已不推薦使用fs.default.nameis(但仍然可以使用)

8022

dfs.namenode. servicerpc-address

HDFS 守護程序使用的可選埠,以避免共享客戶端使用的 RPC 埠 (8020)。Cloudera 建議使用埠 8022。

9870

dfs.http.address or dfs.namenode.http-address

dfs.http.address 不推薦使用 (但仍然有效)

NFS gateway

2049

nfs3.server.port

nfs port

4242

nfs3.mountd.port

mountd port

111

埠對映(或 Rpcbind)埠

50079

nfs.http.port

NFS 閘道器守護程序使用這個埠來服務指標。該埠在版本 5.10 或更高版本上是可配置的。

50579

nfs.https.port

NFS 閘道器守護程序使用這個埠來服務指標。該埠在版本 5.10 或更高版本上是可配置的。

HttpFS

14000

14001

Apache Hadoop YARN (MRv2)

ResourceManager

8032

yarn. resourcemanager. address

8033

yarn. resourcemanager. admin.address

8088

yarn. resourcemanager. webapp.address

8090

yarn. resourcemanager. webapp.https.address

NodeManager

8042

yarn. nodemanager. webapp.address

8044

yarn. nodemanager. webapp.https.address

JobHistory Server

19888

mapreduce. jobhistory. webapp.address

19890

mapreduce. jobhistory. webapp.https.address

ApplicationMaster

ApplicationMaster 使用無法限制的臨時埠提供 HTTP 服務。客戶端永遠不會從叢集外部直接訪問此埠。對 ApplicationMaster web 伺服器的所有請求都使用 YARN ResourceManager(代理服務) 路由。鎖定對叢集網路內臨時埠範圍的訪問可能會限制您對 ApplicationMaster UI 及其日誌的訪問,以及檢視正在執行的應用程式的能力。

Apache Flume

Flume Agent

41414

Apache Hadoop KMS

Key Management Server

16000

kms_http_port

適用於 Java 金鑰儲存庫 KMS 和金鑰受信者 KMS。

Apache HBase

Master

16000

hbase.master. port

IPC

16010

hbase.master. info.port

HTTP

RegionServer

16020

hbase. regionserver. port

IPC

6030

hbase. regionserver. info.port

HTTP

REST

20550

hbase.rest.port

HBase 中的預設 REST 埠是 8080。因為這是一個常用的埠,Cloudera Manager 將預設值設定為 20550。

REST UI

8085

Thrift Server

9090

Pass -p on CLI

Thrift Server

9095

9090

Pass --port on CLI

Lily HBase Indexer

11060

Apache Hive

Metastore

9083

HiveServer2

10000

hive. server2. thrift.port

Beeline 命令直譯器要求您在命令列上指定此埠。如果使用 Oracle 資料庫,則必須手動保留此埠。有關更多資訊,請參見HiveServer 2 的預留埠

HiveServer2 Web User Interface (UI)

10002

hive. server2. webui.portin hive-site.xml

WebHCat Server

50111

templeton.port

Apache Hue

Server

8888

Load Balancer

8889

Apache Impala

Impala Daemon

21000

用於通過impala-shell和 Cloudera ODBC 驅動程式的 1.2 版傳輸命令和接收結果。

21050

用於通過應用程式 (如商業智慧工具) 傳輸命令和接收結果,使用 JDBC、Hue 中的 Beeswax 查詢編輯器和 Cloudera ODBC 驅動程式的 2.0 或更高版本。

25000

用於管理員監視和故障排除的 Impala web 介面。

Apache Kafka

Broker

9092

port

生產者和消費者使用的主要通訊埠; 也用於內部節點間通訊。

9093

ssl_port

生產者和消費者使用的受保護的通訊埠; 也用於節點間通訊。

Apache Kudu

Master

7051

Kudu Master RPC port

8051

Kudu Master HTTP server port

TabletServer

7050

Kudu TabletServer RPC port

8050

Kudu TabletServer HTTP server port

Apache Oozie

Oozie Server

11000

OOZIE_HTTP_PORTin oozie-env.sh

HTTP

11443

HTTPS

Apache Sentry

Sentry Server

8038

sentry.service. server.rpc-port

51000

sentry.service. web.port

Apache Solr

Solr Server

8983

HTTP 埠的所有 solr 具體的行動,更新 / 查詢。

8985

用於所有特定於 solr 的操作、更新 / 查詢的 HTTPS 埠。

Apache Spark

Default Master RPC port

7077

Default Worker RPC port

7078

Default Master web UI port

18080

Default Worker web UI port

18081

History Server

18088

history.port

Apache Sqoop

Metastore

16000

sqoop. metastore. server.port

Apache ZooKeeper

Server (with CDH or Cloudera Manager)

2181

clientPort

Client port

  6)CDH元件使用的內部埠

元件

服務

配置

說明

Apache Hadoop HDFS

Secondary NameNode

9868

dfs.secondary.http.addressor dfs.namenode. secondary. http-address

dfs.secondary.http.address 不推薦使用 (但是依然有效)

9869

dfs.secondary.https.address

JournalNode

8485

dfs.namenode. shared.edits.dir

8480

dfs.journalnode. http-address

8481

dfs.journalnode. https-address

Failover Controller

8019

用於 NameNode HA

Apache Hadoop YARN (MRv2)

ResourceManager

8030

yarn.resourcemanager.scheduler.address

8031

yarn. resourcemanager. resource-tracker. address

NodeManager

8040

yarn. nodemanager. localizer. address

8041

yarn. nodemanager. address

JobHistory Server

10020

mapreduce. jobhistory. address

10033

mapreduce. jobhistory.admin. address

Shuffle HTTP

13562

mapreduce.shuffle.port

Apache Hadoop KMS

Key Management Server

16001

kms_admin_port

適用於 Java 金鑰儲存庫 KMS 和金鑰受信者 KMS。

Apache HBase

HQuorumPeer

2181

hbase. zookeeper. property. clientPort

HBase-managed 管理員模式

2888

hbase. zookeeper. peerport

HBase-managed 管理員模式

3888

hbase. zookeeper. leaderport

HBase-managed 管理員模式

Apache Impala

Impala Daemon

22000

內部使用。Impala 守護程序使用這個埠互相通訊。

23000

內部使用。Impala 守護程序在這個埠上偵聽來自 statestore 守護程序的更新。

StateStore Daemon

24000

內部使用。statestore 守護程序在這個埠上偵聽註冊 / 取消註冊請求。

Catalog Daemon

23020

內部使用。目錄守護程序在此埠上偵聽來自 statestore 守護程序的更新。

26000

內部使用。目錄服務使用這個埠與 Impala 守護程序通訊。

Apache Kafka

Broker

9092

port

生產者和消費者使用的主要通訊埠; 也用於代理間通訊。ion.

9093

ssl_port

生產者和消費者使用的受保護的通訊埠; 也用於代理間通訊。

9393

jmx_port

內部使用。用於通過 JMX 進行管理。

9394

kafka.http.metrics.port

內部使用。這是 HTTP 度量報告器偵聽的埠。它用於通過 HTTP 而不是 JMX 檢索指標。

MirrorMaker

24042

jmx_port

內部使用。用於管理鏡子製造商的生產者和消費者。

Apache Spark

Shuffle service

7337

Apache ZooKeeper

Server (with CDH only)

2888

X in server.N =host:X:Y

Peer

Server (with CDH only)

3888

X in server.N =host:X:Y

Peer

Server (with CDH and Cloudera Manager)

3181

X in server.N =host:X:Y

Peer

Server (with CDH and Cloudera Manager)

4181

X in server.N =host:X:Y

Peer

ZooKeeper JMX port

9010

ZooKeeper 還將為 RMI 使用另一個隨機選擇的埠。要允許 Cloudera 管理員監視 ZooKeeper,您必須執行以下操作之一:

  7)DistCp 使用的埠

元件

服務

Qualifier

外 / 內部

配置

說明

Hadoop HDFS

NameNode

8020

External

fs.default. nameorfs.defaultFS

fs.default. name被棄用了(但還是有作用)

DataNode

Secure

1004

External

dfs.datanode. address

DataNode

50010

External

dfs.datanode. address

WebHDFS

NameNode

50070

External

dfs.http. addressordfs.namenode. http-address

dfs.http. address被棄用了(但還是有作用)

DataNode

Secure

1006

External

dfs.datanode.http. address

HttpFS

web

14000

  8)第三方元件使用的埠

元件

服務

Qualifier

協議

外 / 內部

配置

說明

Ganglia

ganglia-gmond

8649

UDP/TCP

Internal

ganglia-web

80

TCP

External

Via Apachehttpd

Kerberos

KRB5 KDC Server

Secure

88

UDP/TCP

External

kdc_portsandkdc_tcp_portsin either the[kdcdefaults]or[realms]sections ofkdc.conf

By default only UDP

KRB5 Admin Server

Secure

749

TCP

External

kadmind_portin the[realms]section ofkdc.conf

kpasswd

464

UDP/TCP

External

SSH

ssh

22

TCP

External

PostgreSQL

5432

TCP

Internal

MariaDB

3306

TCP

Internal

MySQL

3306

TCP

Internal

LDAP

LDAP Server

389

TCP

External

LDAP Server over TLS/SSL

TLS/SSL

636

TCP

External

Global Catalog

3268

TCP

External

Global Catalog over TLS/SSL

TLS/SSL

3269

TCP

External

3.14建立本地yum

3.14.1httpd服務安裝

  1)建立本地yum源需要指定一臺主機提供http服務,所以我們在hadoop102上安裝httpd

yum -y install httpd

  2)安裝完成後,檢查httpd服務狀態

systemctl status httpd

  3)通過systemctl starthttpdhttpd服務

systemctl start httpd
systemctl status httpd

  4)設定開機自啟

systemctl enable httpd.service

3.14.2yum源工具安裝

  需要使用yum-utilscreaterepo來建立yum

yum -y install yum-utils createrepo

3.14.3匯入cm資源包

  1)建立/var/www/html/cm資料夾

[root@hadoop102 ~]# cd /var/www/html/
[root@hadoop102 html]# mkdir cm

  2)將資料包中cm資料夾下的檔案放入/var/www/html/cm資料夾中資料包較大,如果是購買了深圳地區伺服器的同學可通過以下命令進行檔案的匯入,該方法使用內網傳輸,速度較快且不耗費外部流量如果非深圳區域的伺服器,請手動上傳cm資料夾下的全部檔案到/var/www/html/cm目錄下

mkdir /root/shells
cd /root/shells
yum install -y wget && wget -P /root/shells/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/script/get_cm_from_shenzhenoss_internal.sh
bash /root/shells/get_cm_from_shenzhenoss_internal.sh

3.14.4建立repo

  1)使用createrepo命令建立本地yum

createrepo /var/www/html/cm/

  2)/etc/yum.repos.d/資料夾下建立新的yumrepo檔案這是為了告訴Linux我們自己新增的yum源的位置資訊),配置了hosts檔案的情況下我們可以直接使用hadoop102作為域名訪問

vim /etc/yum.repos.d/cloudera-manager.repo
#把下面五行程式碼寫入repo檔案中
[cloudera-manager]
name=Cloudera Manager, Version yum
baseurl=http://hadoop102/cm
gpgcheck=0
enabled=1

3.14.5清除快取並建立新的元資料快取

  1)清理快取

yum clean all

  2)建立元資料快取

yum makecache

  3)驗證源是否配置生效

yum list | grep cloudera-manager

  4)或者瀏覽器輸入以下網址進行訪問:http://47.107.113.119/cm

  5)如果能夠訪問到web頁面(如上圖),表示本地yum源建立成功。在其他兩個節點同樣執行建立元資料快取的命令,並驗證是否配置成功。

#先在Hadoop102上分發配置
xsync /etc/yum.repos.d/cloudera-manager.repo
yum clean all
yum makecache

  6)驗證源是否配置生效

yum list | grep cloudera-manager

第四章 CM及依賴元件安裝

4.1 安裝java

  1)在三臺節點上執行java的安裝,可以使用yum的方式進行安裝

xcall.sh yum -y install oracle-j2sdk1.8.x86_64

  2)配置java的環境變數,因為我們在上面已經把/etc/profile中的內容追加到/root/.bashrc中,所以我們現在只需要配置/root/.bashrc檔案即可。

vim /root/bin/setjavahome.sh
sed -i '$a\# JAVA_HOME' /root/.bashrc
sed -i '$a\export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera' /root/.bashrc
sed -i '$a\export PATH=$JAVA_HOME/bin:$PATH' /root/.bashrc
sed -i '$a\export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' /root/.bashrc
xsync /root/bin/setjavahome.sh

  3)在三臺上同時執行新增環境變數的和同步環境變數的操作

xcall.sh  bash /root/bin/setjavahome.sh && source /root/.bashrc

  4)驗證java是否安裝成功

xcall.sh java -version

4.2安裝MySQL(使用官方方法安裝)

4.2.1使用rpm的方式進行安裝

wget -v http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm
sudo yum -y update
sudo yum -y install mysql-server
sudo systemctl start mysqld
sudo systemctl stop mysqld 

4.2.2InnoDB log files做備份

mkdir /root/backup/
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile1 /root/backup/

4.2.3修改/etc/my.cnf檔案

  下面的配置是cloudera公司推薦的配置,可根據自己的生產實際情況進行調整。(注意:如果使用vim編輯器貼上,則會出現#號問題,建議使用外部編輯器進行編輯!也可以使用:setpaste編輯

vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# To prevent deadlocks, set the isolation level to READ-COMMITTED.
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
symbolic-links = 0

key_buffer_size = 32M
max_allowed_packet = 16M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1

#Allow 100 maximum connections for each database and then add 50 extra connections. For example, for two databases, set the maximum connections to 250. If you store five databases on one host (the databases for Cloudera Manager Server, Activity Monitor, Reports Manager, Cloudera Navigator, and Hive metastore), set the maximum connections to 550.
max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M

#log_bin should be on a disk with enough free space.
#Replace '/var/lib/mysql/mysql_binary_log' with an appropriate path for your
#system and chown the specified folder to the mysql user.
#如果需要替換mysql的log檔案存放位置,需要此處擁有足夠的空間並且把資料夾的屬主改為mysql使用者
log_bin=/var/lib/mysql/mysql_binary_log

#In later versions of MySQL, if you enable the binary log and do not set
#a server_id, MySQL will not start. The server_id must be unique within
#the replicating group.
server_id=1

binlog_format = mixed

read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M

# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit  = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
#The default settings in the MySQL installations in most distributions use conservative buffer sizes and memory usage. Cloudera Management Service roles need high write throughput because they might insert many records in the database. Cloudera recommends that you set the innodb_flush_method property to O_DIRECT.
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

sql_mode=STRICT_ALL_TABLES

4.2.4初始化MySQL

  1)配置my.cnf完成後,啟動MySQL

  需要注意:

    (1)因為當前無密碼,所以啟動時候直接回車。

    (2)Disallow root login remotely?選項需要輸入N,這樣root使用者才能遠端訪問。

sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo /usr/bin/mysql_secure_installation

  2)這裡需要配置密碼,密碼可以為簡單密碼,例如123456

Enter current password for root (enter for none):(這裡需要直接回車)
OK, successfully used password, moving on...
[...]
Set root password? [Y/n] Y
New password:(這裡輸入自定義的密碼)
Re-enter new password:(這裡輸入自定義的密碼)
Remove anonymous users? [Y/n] Y
[...]
Disallow root login remotely? [Y/n] N
[...]
Remove test database and access to it [Y/n] Y
[...]
Reload privilege tables now? [Y/n] Y
All done!

  3)將JDBC的jar包放入/usr/share/java/資料夾中

mkdir -p /usr/share/java/
cd /usr/share/java/
wget https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/fileshare/mysql-connector-java-5.1.46-bin.jar
mv mysql-connector-java-5.1.46-bin.jar mysql-connector-java.jar

  4)建立各使用者資料庫(注意hive的資料庫叫metastore)

Service

Database

User

Cloudera Manager Server

scm

scm

Activity Monitor

amon

amon

Reports Manager

rman

rman

Hue

hue

hue

Hive Metastore Server

metastore

hive

Sentry Server

sentry

sentry

Cloudera Navigator Audit Server

nav

nav

Cloudera Navigator Metadata Server

navms

navms

Oozie

oozie

oozie

  5)進入MySQL客戶端

mysql -u root -p
# 建表及修改許可權的格式:
CREATE DATABASE <database> DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON <database>.* TO '<user>'@'%' IDENTIFIED BY '<password>';

  6)以下是需要執行的SQL語句,替換之後需要執行的SQL為

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive';
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry';
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav';
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms';
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';

  7)注意此處再授權一個本主機名地址,不然web頁面配置很容易出錯,注意修改本地主機名hostname

GRANT ALL ON amon.* TO 'amon'@'hadoop102' IDENTIFIED BY 'amon';
FLUSH PRIVILEGES;
show grants for 'amon'@'%';  
show grants for 'rman'@'%';  
show grants for 'hive'@'%';
show grants for 'hue'@'%';
show grants for 'oozie'@'%';

  8)退出

quit

  9)重啟

systemctl restart mysql.service

4.3通過yum安裝daemonsagentserver

  hadoop102需要安裝daemons,agent,serverhadoop103和hadoop104僅需要安裝daemonsagent

  1)主節點hadoop102

yum list | grep cloudera-manager
yum -y  install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

  2)從節點hadoop103 hadoop104

yum list | grep cloudera-manager
yum -y  install cloudera-manager-daemons cloudera-manager-agent

  3)為scm資料庫建立表,密碼為scm(當我們看到All done,表示目前scm資料庫已經被正確配置)

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm

4.4配置本地Parcel儲存庫

  1)伺服器購買在深圳的同學可通過以下程式碼進行檔案讀取。伺服器未在深圳的同學則需要手動上傳4個檔案到/opt/cloudera/parcel-repo/之中這個資料夾是剛才安裝cm之後自動生成的

  2)伺服器在深圳的同學可以執行此wget命令

wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel
wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha256
wget -P /opt/cloudera/parcel-repo/ -v https://cdh-sgg.oss-cn-shenzhen.aliyuncs.com/cdh6.3.2/manifest.json
cp /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1  /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
sudo chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo/*
sudo chmod u+x /opt/cloudera/parcel-repo/*

4.5啟動cloudera-scm-server

#啟動
systemctl start cloudera-scm-server
#重啟命令為:
systemctl restart cloudera-scm-server
#可以用下面命令檢視server的資訊
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
#另開啟一個視窗,監控日誌中是否提示啟動成功
tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log|grep "Started Jetty server"
# 也可以用下面命令檢視埠號佔用情況
netstat -tunlp | grep 7180
# 當你看到以下資訊時候 證明啟動成功
INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

  下面可能會出現報錯資訊,這個是因為2021CDH,此時登入網頁:http://你的hadoop102IP地址:7180,就能訪問CDH叢集;預設的使用者名稱:admin;預設的密碼為:admin

  訪問:http://47.107.113.119:7180

第五章CM叢集部署

5.1 進入CM歡迎介面

  點選繼續

5.2 勾選條款協議

  點選繼續

5.3 選擇免費版本進行部署

5.4 進入cluster部署歡迎介面

  點選繼續

5.5 為叢集命名

5.6 指定叢集中的主機

5.7 填寫cm庫地址及選擇CDH parcel

5.8 JDK安裝

  我們之前安裝過了可以跳過

5.9 輸入root使用者的密碼

5.10 顯示正在部署安裝,頁面暫時不可點選

5.11 分發parcel並進入節點自動化部署

5.12 進入環境檢查頁面

  點選兩個檢查按鈕,CM會對整個叢集的環境做最後的檢測。第一個檢查是檢測叢集之間的通訊是否正常,如果為綠色,則為通過檢查。第二個檢查是檢測叢集的環境是否配置正常,如果為綠色,證明通過檢查。(注:只要把第三章中的配置做完,這裡的環境檢查應該不會出現問題);下方的表格可以告訴我們當前CDH6.3.2中各個元件的版本號。(標註為紅色的元件版本號建議同學們牢記)

All Hosts

hadoop[102-104]

---

---

Component

Version

---

---

Supervisord

3.0

Cloudera Manager Agent

6.3.1

Cloudera Manager Management Daemons

6.3.1

Flume NG

1.9.0+cdh6.3.2

Hadoop

3.0.0+cdh6.3.2

HDFS

3.0.0+cdh6.3.2

HttpFS

3.0.0+cdh6.3.2

hadoop-kms

3.0.0+cdh6.3.2

MapReduce 2

3.0.0+cdh6.3.2

YARN

3.0.0+cdh6.3.2

HBase

2.1.0+cdh6.3.2

Lily HBase Indexer

1.5+cdh6.3.2

Hive

2.1.1+cdh6.3.2

HCatalog

2.1.1+cdh6.3.2

Hue

4.2.0+cdh6.3.2

Impala

3.2.0+cdh6.3.2

Java 8

1.8.0_181

Kafka

2.2.1+cdh6.3.2

Kite

1.0.0+cdh6.3.2

kudu

1.10.0+cdh6.3.2

Oozie

5.1.0+cdh6.3.2

Parquet

1.9.0+cdh6.3.2

Pig

0.17.0+cdh6.3.2

sentry

2.1.0+cdh6.3.2

Solr

7.4.0+cdh6.3.2

spark

2.4.0+cdh6.3.2

Sqoop

5.7+cdh6.3.2

Zookeeper

3.4.5+cdh6.3.2

5.13元件選擇頁面

  繼續安裝,進入選擇元件頁面,點選最後一個“Custom Services”

  我們選擇一些常用的元件進行安裝,推薦安裝以下元件:

5.14 選擇需要安裝的服務及Host

5.15 配置資料庫密碼

5.16 初始引數配置

  建議一:將kafkazk中的根路徑改為/kafka

  建議二:將kafka的堆記憶體調大

  其他選擇預設即可

5.17 叢集進入自動部署

  完成的選項將會顯示綠色

5.18 安裝部署完成

  提示安裝完成並在執行中,點選完成

5.19 修改介面語言

  進入叢集介面發現為英文,我們可以改為中文介面

5.20 對叢集配置做優化和修改

  我們可以觀察到及群眾有一些警示資訊

  其中HDFS中的資訊點選進去檢視發現,是提示我們當前的節點少於9個不滿足某種規定。但是我們現在只有三個節點,所以我們選擇忽視這條警告。

  點選“Suppress”抑制警告

  再來看一些提示優化的資訊:HDFS建議最小的堆記憶體為4G,因為每百萬塊資料會佔用1G的記憶體。但是現在我們只是練習階段,且記憶體較少較為珍貴,所以忽視這條優化。在生產中可以根據資料塊的總量適當調整HDFS的記憶體。

  hue提示資訊為需要我們安裝HBaseThrift Server在同一節點中。我們可以新增一下。

  處理之後我們就完成了對叢集的配置和優化。

第六章 引數配置

6.1 HDFS配置域名訪問

  在阿里雲環境下Hadoop叢集必須用域名訪問,不能用IP訪問。進入HDFSconfiguration介面,開啟如下配置dfs.client.use.datanode.hostname

6.2 設定物理核和虛擬核佔比

  當前購買的阿里雲配置物理核一共為6核,為演示效果將虛擬核擴大1倍,一般真實場景下物理核和虛擬核對比值為1:11:2

  進入yarn配置,搜尋yarn.nodemanager.resource.cpu-vcores修改配置,每臺機器物理核2核虛擬成4

6.3 修改單個容器下最大cpu申請資源

  修改yarn.scheduler.maximum-allocation-vcores引數調整4

6.4 設定每個任務容器記憶體大小和單節點大小

  將每個任務容器預設大小從1G調大至4G,修改yarn.scheduler.maximum-allocation-mb調整每個任務容器記憶體所需大小

  當前叢集環境下每個節點的實體記憶體為8G,設定每個yarn可用每個節點記憶體為7G,修改yarn.nodemanager.resource.memory-mb調整每個節點記憶體所需大小

6.5 關閉Spark動態分配資源引數

  關閉spark.dynamicAllocation.enabled引數,否則分配的資源不受控制

6.6 修改HDFS副本數和許可權檢查配置

  修改dfs.replication副本數為1(可選,根據業務場景進行修改)

  關閉HDFS許可權檢查dfs.permissions

6.7 設定容量排程器

  CDH預設公平排程器,修改為容量排程器進入yarn,搜尋scheduler,找到項,修改為CapacityScheduler

  CDH預設為root佇列,可以配置多佇列,新增兩個佇列spark與hive,spark資源設定佔yarn叢集80%,hive設定佔yarn叢集20%;(請注意這四個配置項的順序不能出錯,且一定要寫清楚)

yarn.scheduler.capacity.root.queues
yarn.scheduler.capacity.root.capacity
#新增如下佇列 yarn.scheduler.capacity.root.spark.capacity yarn.scheduler.capacity.root.hive.capacity

  配置完畢後重啟服務,到yarn介面檢視排程器,已經發生變化,hive佇列和spark佇列

6.8 修改hive-site.xml的配置

  因為我們刪除了yarndefault佇列,但是hive裡面執行sql預設走的還是default,如果不做設定的話,在hive裡面執行sql會報錯,所以我們需要在hive裡面設定三個引數。

set mapreduce.job.queuename=hive;

set mapred.job.queue.name=hive;

set mapred.queue.names=hive;

  如果想要臨時生效,只需要在hive中執行這幾個配置項即可。如果想要永久生效,進入hive,選擇配置選項,然後搜尋hive-site.xml

  在hive-site.xmlHive服務高階配置程式碼段(安全閥)新增如圖所示三個引數

  在hive-site.xml Hive 客戶端高階配置程式碼段(安全閥)再次新增

  重啟過時服務,重新部署過期客戶端配置,再次進入hive,就可以正常使用hivesql了。