基於阿里雲安裝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工具連線伺服器
開啟遠端連線工具(如Xshell、Finalshell等)並連線至三個例項。我們在訪問公網資源時候需要使用例項的公網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配置所有免密登入
重複1和2的操作,配置hadoop103和hadoop104對hadoop102、hadoop103、hadoop104三臺伺服器免密登入。
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.11為hue安裝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許可權。 |
使用service或systemctl工具啟動、停止或重新啟動Cloudera Manager伺服器 |
Cloudera Manager Server 的主機需要有root or sudo許可權 預設情況下服務執行在cloudera-scm使用者下 |
使用CM安裝CDH元件 |
在Cloudera Manager初始安裝時配置的如下之一: |
使用CM安裝CM Agent |
在Cloudera Manager初始安裝時配置的如下之一:
有密碼或者ssh祕鑰的方式訪問root使用者的許可權 |
自動啟動CM Agent程序 |
在執行時訪問root帳戶,通過以下場景之一: |
手動啟動、停止或重新啟動Cloudera Manager Agent程序 |
root or sudo 許可權。 |
如果您想為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 Manager和Cloudera 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 starthttpd啟動httpd服務
systemctl start httpd
systemctl status httpd
4)設定開機自啟
systemctl enable httpd.service
3.14.2yum源工具安裝
需要使用yum-utils和createrepo來建立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.2將InnoDB 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編輯器貼上,則會出現#號問題,建議使用外部編輯器進行編輯!也可以使用:
set
paste編輯
)
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安裝daemons,agent,server
hadoop102需要安裝daemons,agent,server,hadoop103和hadoop104僅需要安裝daemons,agent
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.
下面可能會出現報錯資訊,這個是因為2021年CDH,此時登入網頁:http://你的hadoop102的IP地址:7180,就能訪問CDH叢集;預設的使用者名稱:admin;預設的密碼為:admin
第五章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 初始引數配置
建議一:將kafka在zk中的根路徑改為/kafka
建議二:將kafka的堆記憶體調大
其他選擇預設即可
5.17 叢集進入自動部署
完成的選項將會顯示綠色
5.18 安裝部署完成
提示安裝完成並在執行中,點選完成
5.19 修改介面語言
進入叢集介面發現為英文,我們可以改為中文介面
5.20 對叢集配置做優化和修改
我們可以觀察到及群眾有一些警示資訊
其中HDFS中的資訊點選進去檢視發現,是提示我們當前的節點少於9個不滿足某種規定。但是我們現在只有三個節點,所以我們選擇忽視這條警告。
點選“Suppress”抑制警告
再來看一些提示優化的資訊:HDFS建議最小的堆記憶體為4G,因為每百萬塊資料會佔用1G的記憶體。但是現在我們只是練習階段,且記憶體較少較為珍貴,所以忽視這條優化。在生產中可以根據資料塊的總量適當調整HDFS的記憶體。
hue提示資訊為需要我們安裝HBase的Thrift Server在同一節點中。我們可以新增一下。
處理之後我們就完成了對叢集的配置和優化。
第六章 引數配置
6.1 HDFS配置域名訪問
在阿里雲環境下Hadoop叢集必須用域名訪問,不能用IP訪問。進入HDFS的configuration介面,開啟如下配置dfs.client.use.datanode.hostname
6.2 設定物理核和虛擬核佔比
當前購買的阿里雲配置物理核一共為6核,為演示效果將虛擬核擴大1倍,一般真實場景下物理核和虛擬核對比值為1:1或1: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的配置
因為我們刪除了yarn的default佇列,但是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.xml的Hive服務高階配置程式碼段(安全閥)新增如圖所示三個引數
在hive-site.xml 的 Hive 客戶端高階配置程式碼段(安全閥)再次新增
重啟過時服務,重新部署過期客戶端配置,再次進入hive,就可以正常使用hivesql了。