Hadoop_day01_hadoop环境搭建(Linux)

本文详细介绍如何在VmWare环境下搭建三节点集群,包括虚拟机配置、网络设置、防火墙与SELinux管理、免密码登录配置、时钟同步以及常用Linux命令教学。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集群环境搭建

1.注意事项

1.1 确认所有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

在这里插入图片描述

3.启动虚拟机并修改Mac和IP

3.1 集群规划

IP主机名环境配置安装
192.168.174.100node01关防火墙和selinux, host映射, 时钟同步JDK, NameNode, ResourceManager, Zookeeper
192.168.174.120node02关防火墙和selinux, host映射, 时钟同步JDK, DataNode, NodeManager, Zeekeeper
192.168.174.130node03关防火墙和selinux, host映射, 时钟同步JDK, DataNode, NodeManager, Zeekeeper

3.2 设置ip和Mac地址

每台虚拟机更改mac地址:

vim /etc/udev/rules.d/70-persistent-net.rules

在这里插入图片描述
每台虚拟机更改IP地址:

vim /etc/sysconfig/network-scripts/ifcfg-eth0
在这里插入图片描述

每台虚拟机修改对应主机名(重启后永久生效)

vi /ect/sysconfig/network

HOSTNAME=node01

每台虚拟机设置ip和域名映射

vim /etc/hosts

在这里插入图片描述

3.3 inux系统重启

关机重启linux系统即可进行联网了

第二台第三台机器重复上述步骤,并设置IP网址为192.168.174.110,192.168.174.120

4.三台虚拟机关闭防火墙和SELinux

4.1 关闭防火墙

三台机器执行以下命令(root用户来执行)

service iptables stop   #关闭防火墙
chkconfig iptables off  #禁止开机启动

4.2 三台机器关闭selinux

  • 什么是SELinux
    • SELinux是Linux的一种安全子系统
    • Linux中的权限管理是针对于文件的, 而不是针对进程的, 也就是说, 如果root启动了某个进程, 则这个进程可以操作任何一个文件
    • SELinux在Linux的文件权限之外, 增加了对进程的限制, 进程只能在进程允许的范围内操作资源
  • 为什么要关闭SELinux
    • 如果开启了SELinux, 需要做非常复杂的配置, 才能正常使用系统, 在学习阶段, 在非生产环境, 一般不使用SELinux
  • SELinux的工作模式
    • enforcing 强制模式
    • permissive 宽容模式
    • disable 关闭
# 修改selinux的配置文件
vi /etc/selinux/config

4.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

4.4三台机器时钟同步

  • 为什么需要时间同步
    • 因为很多分布式系统是有状态的, 比如说存储一个数据, A节点 记录的时间是 1, B节点 记录的时间是 2, 就会出问题
## 安装
yum install -y ntp

## 启动定时任务
crontab -e

随后在输入界面键入

*/1 * * * * /usr/sbin/ntpdate ntp4.aliyun.com;

5.Liux常用的命令

5.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 相关的所有文件

5.2 用户管理命令

添加普通用户

useradd hadoop # 这个就表示我们创建了一个普通用户

passwd hadoop # 表示我们需要给hadoop这个普通用户分配一个密码,密

切换用户:

su - 用户名

5.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 改变某个文件或者文件夹的所属的用户以及用户组

5.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 服务开机不要自启


6.Linux的Shell编程

Shell 编程一般指 shell 脚本编程。

语法:

​ 使用 vi 编辑器新建一个文件 hello.sh

#!/bin/bash 
 echo "Hello World !" 

执行

​ 方式1:

​ sh hello.sh

方式2

​ chmod +x ./hello.sh #使脚本具有执行权限

​ ./hello.sh #执行脚本

6.1.变量

局部变量

#!/bin/bash
str="hello"
echo ${str}world

环境变量

​ echo $PATH

​ echo $HOME

6.2.特殊字符

$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
$$脚本运行的当前进程 ID 号
$!后台运行的最后一个进程的 ID 号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
$?显示最后命令的退出状态。 0 表示没有错误,其他任何值表明有错误。
#!/bin/bash
echo "第一个参数为: $1";
echo "参数个数为: $#";
echo "传递的参数作为一个字符串显示: $*";

执行: ./test.sh 1 2 3

6.3.运算符

#!/bin/bash
a=1;
b=2;
echo `expr $a + $b`;
echo  $((a+b));
echo  $[a+b];

6.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

6.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 

6.6.函数

#!/bin/bash
funWithReturn(){
echo "这个函数会对输入的两个数字进行相加运算..."
echo "输入第一个数字: "
read aNum
echo "输入第二个数字: "
read anotherNum
echo "两个数字分别为 $aNum$anotherNum !"
return $(($aNum+$anotherNum))
} 
funWithReturn
echo "输入的两个数字之和为 $? !"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值