云计算-Hadoop-2.7.7 最小化集群的搭建(3台)

云计算-Hadoop-2.7.7 最小化集群的搭建(3台)


一、环境依赖下载

VMware16.2.4 https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html

Centos7.9 https://mirror.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/

Xshell7&Xftp7 https://www.xshell.com/zh/free-for-home-school/

hadoop-2.7.7 https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz

hadoop 其它版本 https://archive.apache.org/dist/hadoop/common/

JDK 1.8 https://www.java.com/zh-CN/download/manual.jsp

FinalShell http://www.hostbuf.com/t/988.html (可选远程终端,对多端服务器同时发送命令)

二、部署概要

使用3台虚拟机进行集群的搭建,分别命名为hadoop101,hadoop102,hadoop103

节点HDFS主节点HDFS从节点HDFS辅助节点YARN主节点YARN从节点
hadoop101NameNodeDataNodeResourceManagerNodeManager
hadoop102DataNodeSecondaryNameNodeNodeManager
hadoop103DataNodeNodeManager

从表格中可以知道,我们以hadoop101为主节点,在其上部署NameNode和ResourceManager,在hadoop102上部署SecondaryNameNode作为HDFS辅助节点。

为了方便,3台虚拟机的hadoop均在 /root路径下进行操作,即默认为 root用户登录的目录
为了方便,3台虚拟机的hadoop均在 /root路径下进行操作,即默认为 root用户登录的目录
为了方便,3台虚拟机的hadoop均在 /root路径下进行操作,即默认为 root用户登录的目录

⭐远程连接推荐使用 FinalShell,一个终端搞定文件传输和命令操作 点我下载windows版本

我的3台虚拟机IP统一如下:

名称IPv4地址
hadoop103192.168.242.201
hadoop102192.168.242.202
hadoop103192.168.242.203

三、hadoop101模板机配置

这里我们将hadoop101作为模板机,hadoop102和hadoop103均从其进行克隆比较方便,当然你也可以三台分别进行配置。(下面进行的所有操作均可以在每台虚拟机独立执行,模板机仅为了方便后续配置。)

1. 更新 & 升级

可能会比较慢,可以先配置阿里云的镜像源, 配置方法见 👉 CentOS7设置阿里源

chmod 777 ./* # 提升用户目录权限
yum update -y && yum upgrade -y

如需删除多余内核(默认可跳过该步骤,不影响后续执行)

reboot # 重启
yum remove $(rpm -qa | grep kernel | grep -v $(uname -r)) -y # 删除多余的内核
2. 安装好用的vim VimForCpp
cd #然后回车
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
	
#安装完成后如不可使用执行下面命令或者重启终端
source ~/.bashrc
	
#如需卸载
bash ~/.VimForCpp/uninstall.sh
3. 安装必要依赖
yum install openssh-server -y  		# ssh服务
yum install net-tools.x86_64 -y 	# ifconfig服务
yum install java-1.8.0-openjdk-devel.x86_64 -y # jps服务
yum install xorg-x11-xauth -y 	# 解决xshell连接警告
4. 关闭防火墙
systemctl stop firewalld 	# 关闭防火墙
systemctl disable firewalld # 禁止防火墙开机启动
firewall-cmd --state 		# 查看防火墙状态
5. SSH 配置

小提示:下面开始会进行一些文件操作,如果安装了图形化界面的版本,可以使用gedit文件编辑工具替换vim编辑器,即下面使用vim打开的地方都可以用gedit替换vim.当然,命令行操作才是Linux的灵魂所在

如果你的xshell等软件能连接上虚拟机,那么说明你的ssh是正常的,不需要进行额外的配置了,也就是说可以忽略这一步,否则可以参考如下进行简单配置:

# 1.查看是否安装ssh
yum list installed | grep openssh-server
# 或者
rpm -qa | grep ssh

# 2.安装ssh(未安装情况)
yum install openssh-server

# 3.编辑ssh配置文件,你的文件名有可能是ssh_config
vim /etc/ssh/sshd_config
# 一般来说只要关闭了防火墙不用配置这步,否则如下设置
Port 22 # 打开22监听端口
ListenAddress 0.0.0.0 # 开发监听所有地址
ListenAddress ::
PermitEmptyPasswords no #开启root用户登录
PasswordAuthentication yes #开启密码登录
# wq 保存退出

# 4.启动ssh服务及查看(查看方式等价)
service sshd start # 启动ssh服务
ps -e | grep sshd  # 查看ssh是否开启
netstat -an | grep 22 # 查看端口状态 
systemctl status sshd.service # 查看服务运行状态

# 5.设置开机自启动
systemctl enable sshd.service
systemctl list-unit-files | grep sshd # 查看开机自启列表是否加入成功
6. 设置ntp时间同步服务
yum install ntp ntpdate -y
ntpdate -u 210.72.145.44 # -u参数可以越过防火墙与主机同步 中国国家授时中心
date # 查看当前时间,不对的话稍后reboot重启虚拟机就行了
7. 安装JDK和Hadoop

先把jdk和hadoop的源码压缩包下载到本地在传到虚拟机

# 从命令行下载hadoop-2.7.7可使用以下命令
# wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
# scp上传可以参考以下命令
scp "./hadoop-2.7.7.tar.gz" "./jre-8u341-linux-x64.tar.gz" root@192.168.242.132:/root/

当你的两个文件都已经存在虚拟机中再执行下面的操作

# 1.===解压到当前文件夹 /root下面===
tar -zxvf hadoop-2.7.7.tar.gz
tar -zxvf jre-8u341-linux-x64.tar.gz

mv jre1.8.0_341 jdk1.8 # 重命名为jdk1.8方便下面配置
rm hadoop-2.7.7.tar.gz jre-8u341-linux-x64.tar.gz # 删除多余的文件,按两次y

# 2.===配置环境变量===
vim /etc/profile #用vim编辑器打开配置文件
# 3.在末尾添加以下内容
#HADOOP
export HADOOP_HOME=/root/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

# java
export JAVA_HOME=/root/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASS_PATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export JRE_HOME=$JAVA_HOME/jre 

# :wq 保存退出

# 4.===刷新环境变量=== 
source /etc/profile

# 5.查看java是否安装成功
java -version 
# 6.查看hadoop是否安装成功
hadoop version

配置成功如下图所示:
在这里插入图片描述

8. 模板网络配置

1.查看VMware网络配置

在这里插入图片描述

2.打开网卡配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33

如果这里打开是空白的,那么可能你的网卡配置文件名称和我的不一样,可以先使用以下命令进行查看,一般来说第一个就是你的网卡名称:

cd /etc/sysconfig/network-scripts
ls

3.添加或修改以下内容

# 修改
BOOTPROTO="static"	     #设为静态IP
ONBOOT="yes"			 #设置开机自启动

# 添加
IPADDR="192.168.242.201" #子网IP,注意你的和我的不相同,后面3位自定义
GATEWAY="192.168.242.2"  #默认网关,一定和vmware的网关ip一样
NETMASK="255.255.255.0"  #子网掩码,看第一步
DNS1="114.114.114.114"   #腾讯114
DNS2="1.2.4.8"           #中国互联网络中心
DNS3="8.8.8.8"		     #Google

示例如下:
在这里插入图片描述

4.重启刷新

service network restart 	 #重启网卡
systemctl restart network    # 重启网络服务

注意:重启网卡后ip地址是你新设置的ip地址,远程终端需要重新进行连接.

9. 配置映射关系
vim /etc/hosts #打开配置文件

删除原有内容后添加以下内容

192.168.242.201 hadoop101
192.168.242.202 hadoop102
192.168.242.203 hadoop103
# wq保存退出
/etc/init.d/network restart # 刷新使其生效
10. 配置集群核心文件

以下我们采取最简化配置,关于详细配置说明,欢迎查看官方文档 : https://hadoop.apache.org/docs/r2.7.7/

先切换到配置文件目录:

mkdir -p ~/hadoop-2.7.7/tmp # 创建hadoop临时目录
cd ~/hadoop-2.7.7/etc/hadoop
ls

在这里插入图片描述

hadoop-env.sh (Hadoop环境配置)
vim hadoop-env.sh
# 在第25行更改为以下内容
export JAVA_HOME=/root/jdk1.8
# :wq保存退出

在这里插入图片描述

core-site.xml (Hadoop核心全局配置文件)
vim core-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
    <!-- 设置默认使用的文件系统的名称
	指定HDFS集群中NameNode的url地址(包括协议、主机名称、端口号) 默认为 file:/// -->
    <property>
    	<name>fs.defaultFS</name>
    	<value>hdfs://hadoop101:9000</value>
    </property>
    <!-- 其他临时目录的基础。 -->
    <property>
	    <name>hadoop.tmp.dir</name>
		<value>/root/hadoop-2.7.7/tmp</value>
    </property>
</configuration>
hdfs-site.xml (hdfs配置文件)
vim hdfs-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
    <!-- 配置主节点http服务器地址和端口 -->
    <property>
    	<name>dfs.http.address</name>
		<value>hadoop101:50070</value>
    </property>
    <!-- 配置辅助节点http服务器地址和端口 -->
	<property>
    	<name>dfs.namenode.secondary.http-address</name>
    	<value>hadoop102:50090</value>
	</property>
</configuration>
yarn-env.sh (YARN环境配置)
vim yarn-env.sh
# 在第23行去掉注释并更改为以下内容
export JAVA_HOME=/root/jdk1.8
# :wq保存退出

在这里插入图片描述

yarn-site.xml (YARN 框架配置文件)
vim yarn-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
    <!-- 配置ResourceManager在哪个机器启动 -->
	<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop101</value>
	</property>
    <!-- NodeManager上运行的附属服务,也可以理解为 reduce 获取数据的方式 -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>
mapred-site.xml(MapReduce配置文件)
cp mapred-site.xml.template map-site.xml # 先copy模板生成文件
vim map-site.xml # 打开文件后在<configuration></configuration>插入以下内容
<configuration>
    <!-- 用于执行MapReduce作业的运行时框架 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>
slaves (DateNode进程节点)
vim slaves # 打开文件后在slaves中添加DateNode节点
hadoop101
hadoop102
hadoop103

至此我们的模板机已经配置好了,下面

-克隆模板机得到节点hadoop101和hadoop102

安装如下步骤操作:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

选择你的储存位置,等克隆好之后开机就行了…

在这里插入图片描述


下面进行各台虚拟机的ip地址和名称配置,这里先别着急用远程工具,现在虚拟机里面之间操作

四、hadoop101私有配置

1. 主机名设置
hostnamectl set-hostname hadoop101 # 修改主机名	
exec bash # 使其生效
2. IP设置

这里和模板机配置一样,无需进行更改

五、hadoop102配置

1. 主机名设置
hostnamectl set-hostname hadoop102 # 修改主机名	
exec bash # 使其生效
2. IP设置

打开配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33

更改以下内容(ip自己设置)

IPADDR="192.168.242.202" #子网IP

重启刷新

service network restart 	 # 重启网卡
systemctl restart network    # 重启网络服务

六、hadoop103配置

1. 主机名设置
hostnamectl set-hostname hadoop103 # 修改主机名	
exec bash # 使其生效
2. IP设置

打开配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens33

更改以下内容(ip自己设置)

IPADDR="192.168.242.203" # 子网IP

重启刷新

service network restart 	 #重启网卡
systemctl restart network    # 重启网络服务

-配置ssh免密登录

上述配置完成之后开启3台虚拟机,并在每台虚拟机上都执行以下操作

# 产生公钥和私钥:
ssh-keygen -t rsa # (回车四次)
# 分发公钥
ssh-copy-id hadoop101
ssh-copy-id hadoop102
ssh-copy-id hadoop103
# 按照提示输入yes和密码
# 赋予文件权限 (不然可能无法使用免密登录)
chmod 700 ~ 
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

完成上述配置就实现了3台虚拟机之间的ssh网络互联

ssh-keygen -t rsa 生成密钥时大概内容如下图所示: id_rsa(私钥)、id_rsa.pub(公钥)

在这里插入图片描述

此处详细内容可参考 SSH设置无密码连接
配置好之后可以使用 ssh hadoop101进行测试,如果不需要输入密码则说明免密登录配置成功,否则参考 解决Linux root用户设置ssh免密登陆后仍然需要输入密码的问题

七、启动集群

集群初始化

在hadoop101执行,仅开始运行一次,后面无须在执行(不要总格式化)

hdfs namenode -format 
方式一: 主节点一键启动集群 (推荐)
start-all.sh # 目前经测试推荐使用该方法,根据提示输入yes或密码

启动成功如下:
在这里插入图片描述
到此集群搭建完成!!!

一键关闭

start-stop.sh

方式二: 单节点启动/关闭

每个节点执行

# 启动
start-dfs.sh
start-yarn.sh
# 关闭
stop-dfs.sh
stop-yarn.sh

如某个模块未启动成功可采用下面的方法单独启动

# ~/hadoop-2.7.7 hadoop根目录
#1.在主节点上执行指令启动/关闭HDFS NameNode进程;
hadoop-daemon.sh start namenode # 启动
hadoop-daemon.sh stop namenode  # 关闭
#2.在每个从节点上执行指令启动/关闭HDFS DataNode进程;
hadoop-daemon.sh start datanode # 启动
hadoop-daemon.sh stop datanode  # 关闭
#3.在主节点上执行指令启动/关闭YARN ResourceManager进程;
hadoop-daemon.sh start resourcemanager # 启动
hadoop-daemon.sh stop resourcemanager  # 关闭
#4.在每个从节点上执行指令启动/关闭YARN nodemanager进程;
hadoop-daemon.sh start nodemanager # 启动
hadoop-daemon.sh stop nodemanager  # 关闭
#5.在节点hadoop102执行指令启动/关闭SecondaryNameNode进程
hadoop-daemon.sh start secondarynamenode # 启动
hadoop-daemon.sh stop secondarynamenode  # 关闭

hadoop集群逐节点 一键启动/关闭脚本 (在主节点运行即可)

#!/bin/bash
 
if [ $# -lt 1 ]
then
    echo ">>>>>>无额外参数输入<<<<<<"
    echo "USE eg: 'sh myhadoop.sh satrt/stop' "
    exit ;
fi
 
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="
 
        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop101 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
        ssh hadoop102 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
        ssh hadoop103 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop101 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
        ssh hadoop102 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
        ssh hadoop103 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="
 
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop101 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
        ssh hadoop102 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
        ssh hadoop103 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop101 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
        ssh hadoop102 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
        ssh hadoop103 "/root/hadoop-2.7.7/sbin/stop-dfs.sh"
;;
*)
    echo "!!!输入的参数有误!!!"
;;
esac
echo "执行指令 jps "
jps
exit
通过自带的列子检测是否启动成功
~/hadoop-2.7.7/bin/hadoop jar ~/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 1 2

在这里插入图片描述

浏览器打开相关网页如下:

http://192.168.242.201:50070/
在这里插入图片描述

http://192.168.242.201:8088/
在这里插入图片描述

集群搭建到这里就成功了…


八、补充:使用Shell脚本进行快速配置

上面我们虽然使用克隆的方式简化了对虚拟机的操作,但是,每个虚拟机都配置相同的的hadoop文件是不是过于麻烦了呢,答案是有的,所以我们这里采用shell,脚本的方式可以实现仅配置一台虚拟的的情况下对其它的2台虚拟机也同时进行配置。

前提:3台虚拟机已经配置了网络互访,即ssh免密连接。

下面是参考的shell脚本:

有空更新....

九、java连接集群进行操作

见后续blog文章...
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python-AI Xenon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值