🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
文章目录
- 🚀一、集群环境搭建
- 🔎1.注意事项
- 🦋1.1 windows系统确认所有的关于VmWare的服务都已经启动
- 🦋1.2 确认好VmWare生成的网关地址
- 🦋1.3 确认VmNet8网卡已经配置好了IP地址和DNS
- 🔎2.复制虚拟机
- 🦋2.1 将虚拟机文件夹复制三份,并分别重命名, 并使用VM打开重命名
- 🦋2.2 分别设置三台虚拟机的内存
- 🦋2.3 启动虚拟机并修改Mac和IP
- ☀️2.3.1 集群规划
- ☀️2.3.2 设置ip和Mac地址
- ☀️2.3.3 inux系统重启
- 🦋2.4 三台虚拟机关闭防火墙和SELinux
- ☀️2.4.1 关闭防火墙
- ☀️2.4.2 三台机器关闭selinux
- 🔎3.Liux常用的命令
- 🦋3.1 查找命令
- 🦋3.2 用户管理命令
- 🦋3.3 用户权限管理命令
- 🦋3.4 系统服务命令
- 🔎4.Linux的Shell编程
- 🦋4.1 变量
- 🦋4.2 特殊字符
- 🦋4.3 运算符
- 🦋4.4 if语句
- 🦋4.5 for语句
- 🦋4.6 函数
- 🔎5.环境配置
- 🦋5.1 三台虚拟机关闭防火墙
- 🦋5.2 三台机器关闭selinux
- 🦋5.3 三台机器机器免密码登录
- 🦋5.4 三台机器时钟同步
- 🚀感谢:给读者的一封信
🚀一、集群环境搭建
🔎1.注意事项
🦋1.1 windows系统确认所有的关于VmWare的服务都已经启动
🦋1.2 确认好VmWare生成的网关地址
🦋1.3 确认VmNet8网卡已经配置好了IP地址和DNS
🔎2.复制虚拟机
🦋2.1 将虚拟机文件夹复制三份,并分别重命名, 并使用VM打开重命名
🦋2.2 分别设置三台虚拟机的内存
- 需要三台虚拟机, 并且需要同时运行, 所以总体上的占用为: 每台虚拟机内存 × 3 每台虚拟机内存 \times 3 每台虚拟机内存×3
- 在分配的时候, 需要在总内存大小的基础上, 减去2G-4G作为系统内存, 剩余的除以3, 作为每台虚拟机的内存
每台机器的内存 = ( 总内存 − 4 ) ÷ 3 每台机器的内存 = \left ( 总内存 - 4\right ) \div 3 每台机器的内存=(总内存−4)÷3
🦋2.3 启动虚拟机并修改Mac和IP
☀️2.3.1 集群规划
IP | 主机名 | 环境配置 | 安装 |
---|---|---|---|
192.168.174.100 | node01 | 关防火墙和selinux, host映射, 时钟同步 | JDK, NameNode, ResourceManager, Zookeeper |
192.168.174.120 | node02 | 关防火墙和selinux, host映射, 时钟同步 | JDK, DataNode, NodeManager, Zeekeeper |
192.168.174.130 | node03 | 关防火墙和selinux, host映射, 时钟同步 | JDK, DataNode, NodeManager, Zeekeeper |
☀️2.3.2 设置ip和Mac地址
每台虚拟机更改mac地址:
vim /etc/udev/rules.d/70-persistent-net.rules
每台虚拟机更改IP地址:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
每台虚拟机修改对应主机名(重启后永久生效)
vi /etc/sysconfig/network
HOSTNAME=node01
每台虚拟机设置ip和域名映射
vim /etc/hosts
☀️2.3.3 inux系统重启
关机重启linux系统即可进行联网了
第二台第三台机器重复上述步骤,并设置IP网址为192.168.174.110,192.168.174.120
🦋2.4 三台虚拟机关闭防火墙和SELinux
☀️2.4.1 关闭防火墙
三台机器执行以下命令(root用户来执行)
service iptables stop #关闭防火墙
chkconfig iptables off #禁止开机启动
☀️2.4.2 三台机器关闭selinux
- 什么是SELinux
- SELinux是Linux的一种安全子系统
- Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件
- SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源
- 为什么要关闭SELinux
- 如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux
- SELinux的工作模式
enforcing
强制模式permissive
宽容模式disable
关闭
# 修改selinux的配置文件
vi /etc/selinux/config
🔎3.Liux常用的命令
🦋3.1 查找命令
grep命令 命令是一种强大的文本搜索工具
格式: grep [option] pattern [file] 可使用 —help 查看更多参数。 使用实例:
ps -ef | grep sshd
查找指定 ssh 服务进程
ps -ef | grep sshd | grep -v grep
查找指定服务进程,排除 gerp 本身
grep -n 'hello' a.txt
从文件中查找关键词,并显示行号
find命令
find 命令在目录结构中搜索文件,并对搜索结果执行指定的操作。
使用实例:
find . -name "*.log" -ls
在当前目录查找以.log 结尾的文件, 并显示详细信息。
find /root/ -perm 777
查找/root/目录下权限为 777 的文件
find . -size +100M
查找当前目录大于 100M 的文件
Locate命令
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库。之后当寻找时就只需查询这个数据库( /var/lib/locatedb)。
Linux 系统自动创建这个数据库, 默认每天自动更新一次,所以使用 locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。
yum -y install mlocate
使用实例:
locate /etc/sh
搜索 etc 目录下所有以 sh 开头的文件
locate pwd
查找和 pwd 相关的所有文件
🦋3.2 用户管理命令
添加普通用户
useradd hadoop # 这个就表示我们创建了一个普通用户
passwd hadoop # 表示我们需要给hadoop这个普通用户分配一个密码,密
切换用户:
su - 用户名
🦋3.3 用户权限管理命令
chmod 777 a.txt
#表示给某个文件赋予所有人的所有权限
chmod u-x a.txt
#取消a.txt文件,用户“执行”权限
chmod g+x a.txt
#添加a.txt文件,组“执行”权限
chown -R hadoop:hadoop a.txt
改变某个文件或者文件夹的所属的用户以及用户组
🦋3.4 系统服务命令
service iptables status
#查看防火墙状态
service iptables stop
#关闭防火墙
service --status-all
# 查看系统所有的后台服务进程
service sshd status
# 查看指定的后台服务进程的状态
service sshd stop
service sshd start
service sshd restart
配置后台服务进程的开机自启或关闭
chkconfig iptables on
#配置防火墙开机开启
chkconfig iptables off
#配置防火墙开机关闭
chkconfig httpd on
## 让 httpd 服务开机自启
chkconfig httpd off
## 让 httpd 服务开机不要自启
🔎4.Linux的Shell编程
Shell 编程一般指 shell 脚本编程。
语法:
使用 vi 编辑器新建一个文件 hello.sh
#!/bin/bash
echo "Hello World !"
执行:
方式1:
sh hello.sh
方式2
chmod +x ./hello.sh #使脚本具有执行权限
./hello.sh #执行脚本
🦋4.1 变量
局部变量
#!/bin/bash
str="hello"
echo ${str}world
环境变量
echo $PATH
echo $HOME
🦋4.2 特殊字符
$# | 传递到脚本的参数个数 |
---|---|
$* | 以一个单字符串显示所有向脚本传递的参数。 |
$$ | 脚本运行的当前进程 ID 号 |
$! | 后台运行的最后一个进程的 ID 号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数。 |
$? | 显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。 |
#!/bin/bash
echo "第一个参数为: $1";
echo "参数个数为: $#";
echo "传递的参数作为一个字符串显示: $*";
执行: ./test.sh 1 2 3
🦋4.3 运算符
#!/bin/bash
a=1;
b=2;
echo `expr $a + $b`;
echo $((a+b));
echo $[a+b];
🦋4.4 if语句
#!/bin/bash
read -p "please input your name:" NAME ## read命令用于从控制台读取输入数据
## printf '%s\n' $NAME
if [ $NAME = root ]
then
echo "hello ${NAME}, welcome !"
elif [ $NAME = itcast ]
then
echo "hello ${NAME}, welcome !"
else
echo "Get out Please!"
fi
🦋4.5 for语句
方式1:
#!/bin/bash
for N in 1 2 3
do
echo $N
done
方式2:
#!/bin/bash
for ((i = 0; i <= 5; i++))
do
echo "welcome $i times"
done
🦋4.6 函数
#!/bin/bash
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"
🔎5.环境配置
🦋5.1 三台虚拟机关闭防火墙
三台机器执行以下命令(root用户来执行)
service iptables stop #关闭防火墙
chkconfig iptables off #禁止开机启动
🦋5.2 三台机器关闭selinux
- 什么是SELinux
- SELinux是Linux的一种安全子系统
- Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件
- SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源
- 为什么要关闭SELinux
- 如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux
- SELinux的工作模式
enforcing
强制模式permissive
宽容模式disable
关闭
# 修改selinux的配置文件
vi /etc/selinux/config
🦋5.3 三台机器机器免密码登录
- 为什么要免密登录
- Hadoop 节点众多, 所以一般在主节点启动从节点, 这个时候就需要程序自动在主节点登录到从节点中, 如果不能免密就每次都要输入密码, 非常麻烦
- 免密 SSH 登录的原理
- 需要先在 B节点 配置 A节点 的公钥
- A节点 请求 B节点 要求登录
- B节点 使用 A节点 的公钥, 加密一段随机文本
- A节点 使用私钥解密, 并发回给 B节点
- B节点 验证文本是否正确
第一步:三台机器生成公钥与私钥
在三台机器执行以下命令,生成公钥与私钥
ssh-keygen -t rsa
执行该命令之后,按下三个回车即可
第二步:拷贝公钥到同一台机器
三台机器将拷贝公钥到第一台机器
三台机器执行命令:
ssh-copy-id node01
第三步:复制第一台机器的认证到其他机器
将第一台机器的公钥拷贝到其他机器上
在第一天机器上面指向以下命令
scp /root/.ssh/authorized_keys node02:/root/.ssh
scp /root/.ssh/authorized_keys node03:/root/.ssh
🦋5.4 三台机器时钟同步
- 为什么需要时间同步
- 因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是 1, B节点 记录的时间是 2, 就会出问题
## 安装
yum install -y ntp
## 启动定时任务
crontab -e
随后在输入界面键入
*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”