章節內容
上一節完成:
- HDFS集群XML的配置
- MapReduce集群XML的配置
- Yarn集群XML的配置
- 統一權限
- DNS統一配置
背景介紹
這里是三臺公網云服務器,每臺 2C4G,搭建一個Hadoop的學習環境,供我學習。
之前已經在 VM 虛擬機上搭建過一次,但是沒留下筆記,這次趁著前幾天薅羊毛的3臺機器,趕緊嘗試在公網上搭建體驗一下。
注意,如果你和我一樣,打算用公網部署,那一定要做好防火墻策略,避免不必要的麻煩!!!
請大家都以學習為目的,也請不要對我的服務進行嗅探或者攻擊!!!
但是有一臺公網服務器我還運行著別的服務,比如前幾天發的:autodl-keeper 自己寫的小工具,防止AutoDL機器過期的。還跑著別的Web服務,所以只能擠出一臺 2C2G 的機器。那我的配置如下了:
- 2C4G 編號 h121
- 2C4G 編號 h122
- 2C2G 編號 h123
請確保上一節內容已經配置完畢
Hosts 修改(必須!重要!坑多!)
這里是必須的,不然后續集群之間互通會很麻煩。配置不好的話集群之間會互相不認證。
vim /etc/hosts
由于云服務器會給你配置一些沒用的東西,導致后續的集群通信有問題,你需要參考我的配置:
目前我在 h121
節點上,你需要把自己這臺的域名映射到 0.0.0.0
。
比如你在h122
節點上,你需要配置成0.0.0.0 h122.wzk.icu
。
此外,其他的你需要注意,盡量不要
綁定127
、localhost
,避免服務無法暴露,統一都到 0.0.0.0
!!!
下面的配置供你參考!
h121機器
0.0.0.0 h121.wzk.icu
101.35.209.96 h122.wzk.icu
124.223.26.81 h123.wzk.icu# The following lines are desirable for IPv6 capable hosts
# :::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
#127.0.1.1 localhost
# 127.0.1.1 hecs-393573 hecs-393573
0.0.0.0 hecs-393573 hecs-393573
配置結果如下:
h122機器
0.0.0.0 h122.wzk.icu
114.115.221.144 h121.wzk.icu
124.223.26.81 h123.wzk.icu#127.0.1.1 localhost.localdomain VM-12-12-ubuntu
#127.0.0.1 localhost
0.0.0.0 localhost.localdomain VM-12-12-ubuntu#::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
配置結果如下:
h123機器
0.0.0.0 h123.wzk.icu
114.115.221.144 h121.wzk.icu
101.35.209.96 h122.wzk.icu0.0.0.0 localhost.localdomain VM-4-5-ubuntu
#127.0.0.1 localhost# ::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
開啟ROOT
如果你的賬戶不是ROOT,那你需要過一下這章節。
如果你是ROOT,那請略過!!!
ROOT密碼
sudo passwd root
輸入密碼,兩次確認。
開啟SSH
sudo vim /etc/ssh/sshd_config
編輯如下內容,請確保都有:
PasswordAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes
退出保存,重啟SSH服務
sudo systemctl restart ssh
SSH Key
生成SSH秘鑰
# 121機器上
ssh-keygen -t rsa -b 4096 -C "h121.wzk.icu"
# 122機器上
ssh-keygen -t rsa -b 4096 -C "h122.wzk.icu"
# 123機器上
ssh-keygen -t rsa -b 4096 -C "h123.wzk.icu"
一路回車就可以,什么都不需要設置。
免密登錄
配置免密
需要在三臺機器上,都執行一次如下的命令。
ssh-copy-id root@h121.wzk.icu
ssh-copy-id root@h122.wzk.icu
ssh-copy-id root@h123.wzk.icu
此時會要求你輸入登錄機器的密碼,輸入即可。
測試免密
ssh h122.wzk.icu
如果是可以正常登錄,那表示你已經成功配置,恭喜你!
查看免密
所有免密的 Key 都會放在這里:
~/.ssh/authorized_keys
移除免密
對當中的內容編輯即可,刪除對應的,免密就會失效。
vim ~/.ssh/authorized_keys
分發腳本
安裝工具
這里選擇使用 rsync
sudo apt install rsync
編寫腳本
在 /usr/local/bin
下的命令 可以全局執行
cd /usr/local/bin
sudo vim rsync-script
寫入如下內容,你可能需要稍稍做一些修改,修改成你的,僅供參考:
#!/bin/bash
#1 獲取命令輸入參數的個數,如果個數為0,直接退出命令
paramnum=$#
if((paramnum==0));thenecho no params;exit;
fi
#2 根據傳入參數獲取文件名稱
p1=$1
file_name=`basename $p1`
echo fname=$file_name
#3 獲取輸入參數的絕對路徑
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 獲取用戶名稱
user=`whoami`
#5 循環執行rsync
for((host=121; host<124; host++)); doecho ------------------- h$host.wzk.icu --------------rsync -rvl $pdir/$file_name $user@h$host.wzk.icu:$pdir
done
執行權限
sudo chmod 777 rsync-script
測試腳本
寫了一個文本文件,測試腳本是否正常。
1.txt
helloworld!
執行腳本:
rsync-script /opt/wzk