【愚公系列】2024年02月 大数据教学课程 017-Hadoop环境配置

在这里插入图片描述

🏆 作者简介,愚公搬代码

🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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 登录的原理
    1. 需要先在 B节点 配置 A节点 的公钥
    2. A节点 请求 B节点 要求登录
    3. B节点 使用 A节点 的公钥, 加密一段随机文本
    4. A节点 使用私钥解密, 并发回给 B节点
    5. 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元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。

我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。

如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。

在这里插入图片描述

再次感谢您的阅读和支持!

最诚挚的问候, “愚公搬代码”

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/4d8f052167.html