Linux搭建Hadoop集群环境(三节点)

本文档详细介绍了如何在Linux环境下配置和搭建一个三节点的Hadoop集群。包括基础环境规划,如安装必要工具,设置主机名与IP映射;实现节点间免密登录,创建文件同步和远程调用脚本;配置Java环境;以及Hadoop的配置、分发、环境变量设置、格式化、启动和停止等关键步骤。
摘要由CSDN通过智能技术生成

1. 环境搭建

1.1 基础环境及规划

所有节点执行以下命令,安装以下工具:

#安装 vim wget rz sz等工具
yum -y install rsync vim wget tree lrzsz
#安装chrony工具
yum install -y chrony
#永久设置同步时间服务器(修改配置文件)
vim /etc/chrony.conf 
#注释掉第三行原有的时间服务器地址,设置为阿里云的时间服务地址
#pool 2.centos.pool.ntp.org iburst
server ntp.aliyun.com iburst
#重启时间服务
[root@localhost ~]# systemctl restart chronyd.service
#设置时间同步服务开机启动
[root@localhost ~]# systemctl enable chronyd.service

#查看防火墙开启状态【执行】
systemctl status firewalld
#关闭防火墙【执行】
systemctl stop firewalld
#禁止开机启动防火墙【执行】
systemctl disable firewalld

修改**hosts**文件,添加以下内容【IP与主机名的映射】,所有节点均执行此操作【操作目的在于将来使用的时候直接使用主机名,而不需要去记忆IP。】
注意: 删除或注释掉该文件的前两行,注释的话请在每行的最前面输入#

[root@node01 ~]$ vim /etc/hosts
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.101 node01
192.168.100.102 node02
192.168.100.103 node03

集群规划

组件 版本号 服务名 端口 node01 node02 node03
Java 1.8.361
Zookeeper 3.7.1 Qu 2181
Hadoop 3.2.4 NameNode 9000
DataNode
SecondaryNameNode
HDFS WebUI 9870
ResourceManager
NodeManager
Yarn UI 8088

1.2 免密配置

所有节点上进入当前用户的.ssh目录,执行以下命令,然后一路回车
ssh-keygen -t rsa -P ''
将所有节点的~/.ssh/id_rsa.pub的内容合并到node01节点的~/.ssh/id_rsa.pub文件中,因此在所有节点上执行以下命令
cat ~/.ssh/id_rsa.pub | ssh root@node01 'cat >> ~/.ssh/authorized_keys'
node01authorized_keys文件拷贝到其他节点上,在node01上执行以下命令:
scp ~/.ssh/authorized_keys root@node02:~/.ssh/
scp ~/.ssh/authorized_keys root@node03:~/.ssh/
最终所有节点相互执行ssh操作,直到相互之间不需要输入yes 或者密码。

# 每台机器之间进行ssh免密码登录操作,包括自己与自己
[root@node01 ~]$ ssh node01
[root@node01 ~]$ ssh node02
[root@node02 ~]$ ssh node01
[root@node01 ~]$ ssh node03
[root@node03 ~]$ ssh node01
[root@node01 ~]$ ssh node02
[root@node02 ~]$ ssh node02
[root@node02 ~]$ ssh node03
[root@node03 ~]$ ssh node02
[root@node02 ~]$ ssh node03
[root@node03 ~]$ ssh node03

创建文件同步脚本
#创建并编写xsync脚本
cd /usr/local/bin/
vim xsync
#在xsync中写入如下代码
#!/bin/bash
#自动读取所有的hosts中的主机列表
hosts=$(cat /etc/hosts | grep -v "^#" | awk '{print $2}')
current_host=${hostname}
#1. 判断参数个数
if [ $# -lt 1 ]
then
  echo "参数个数为0,没有要同步的文件"!
  exit;
fi
#2. 遍历集群所有机器
for host in $hosts
do
  if [ "${current_host}" != "${host}" ];then
  echo ====================  $host  ====================
  #3. 遍历所有目录,挨个发送
  for file in $@
  do
    #4 判断文件是否存在
    if [ -e $file ]
    then
      #5. 获取父目录
      pdir=$(cd -P $(dirname $file); pwd)
      #6. 获取当前文件的名称
      fname=$(basename $file)
      ssh $host "mkdir -p $pdir"
      rsync -av $pdir/$fname $host:$pdir
    else
      echo $file does not exists!
    fi
  done
  fi
done

#修改脚本xsync使其具有执行权限
chmod 777 xsync
#测试脚本
xsync xsync

创建远程调用脚本
#创建并编写xcall脚本
cd /usr/local/bin/
vim xcall
#在xsync中写入如下代码
#! /bin/bash
hosts=$(cat /etc/hosts | grep -v "^#" | awk '{print $2}')
for i in $hosts
do
    echo --------- $i ----------
    ssh $i "$*"
done
#修改脚本xsync使其具有执行权限
chmod 777 xcall
#测试脚本
xcall jps
 
--------- node01 ----------
2570 Jps
--------- node02 ----------
1837 Jps
--------- node03 ----------
2026 Jps

1.3 Java环境配置

大部分环境镜像
https://archive.apache.org/

# 在node01主节点上创建指定目录
[root@node01 ~]$ mkdir -p /opt/module
# 进入到module目录
[root@node01 ~]$ cd /opt/module/
# 使用rz命令从Windows主机上传jdk压缩包到node01节点,也可以直接拖拽至XShell命令窗口
[root@node01 module]$ rz
# 解压到当前目录
[root@node01 module]$ tar -zxvf jdk-8u361-linux-x64.tar.gz
# 配置环境变量,亦可配置到 /etc/bashrc 中
[root@node01 module]$ vim /etc/profile.d/my_env.sh
# 在该文件后面追加一下内容
export JAVA_HOME=/opt/module/jdk1.8.0_361
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib/rt.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
# 使刚才的设置生效
[root@node01 module]$ source /etc/profile.d/my_env.sh
#! 检测是否配置成功
[root@node01 module]$ java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值