章节内容
上一节完成:
- 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