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

news/2024/5/20 4:03:09 标签: hadoop, 云计算, hdfs, 大数据, 分布式

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

文章目录

  • 云计算-Hadoop-2.7.7 最小化集群的搭建(3台)
    • 一、环境依赖下载
    • 二、部署概要
    • 三、hadoop101模板机配置
        • 1. 更新 & 升级
        • 2. 安装好用的vim VimForCpp
        • 3. 安装必要依赖
        • 4. 关闭防火墙
        • 5. SSH 配置
        • 6. 设置ntp时间同步服务
        • 7. 安装JDK和Hadoop
        • 8. 模板网络配置
        • 9. 配置映射关系
        • 10. 配置集群核心文件
          • hadoop-env.sh (Hadoop环境配置)
          • core-site.xml (Hadoop核心全局配置文件)
          • hdfs-site.xml (hdfs配置文件)
          • yarn-env.sh (YARN环境配置)
          • yarn-site.xml (YARN 框架配置文件)
          • mapred-site.xml(MapReduce配置文件)
          • slaves (DateNode进程节点)
      • -克隆模板机得到节点hadoop101和hadoop102
    • 四、hadoop101私有配置
        • 1. 主机名设置
        • 2. IP设置
    • 五、hadoop102配置
        • 1. 主机名设置
        • 2. IP设置
    • 六、hadoop103配置
        • 1. 主机名设置
        • 2. IP设置
      • -配置ssh免密登录
    • 七、启动集群
        • 集群初始化
        • 方式一: 主节点一键启动集群 (推荐)
        • 方式二: 单节点启动/关闭
        • 通过自带的列子检测是否启动成功
    • 八、补充:使用Shell脚本进行快速配置
    • 九、java连接集群进行操作


一、环境依赖下载

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用户登录的目录

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

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

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

hadoop101_48">三、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

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 配置

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

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

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

# 3.编辑ssh配置文件,
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

3.添加或修改以下内容

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

# 添加
#IPADDR="192.168.242.201" #子网IP,我们等克隆后再进行统一配置
GATEWAY="192.168.242.2"  #默认网关,见上面
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    # 重启网络服务

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

在这里插入图片描述

hadoopenvsh_Hadoop_266">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>
hdfssitexml_hdfs_298">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

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

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

安装如下步骤操作:

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

选择你的储存位置,等克隆好之后开机就行了…
在这里插入图片描述


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

hadoop101_399">四、hadoop101私有配置

1. 主机名设置

hostnamectl set-hostname hadoop101 # 修改主机名	
exec bash # 使其生效

2. IP设置

打开配置文件

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

添加以下内容

IPADDR="192.168.242.201" #子网IP,我们等克隆后再进行统一配置

重启刷新

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

hadoop102_429">五、hadoop102配置

1. 主机名设置

hostnamectl set-hostname hadoop102 # 修改主机名	
exec bash # 使其生效

2. IP设置

打开配置文件

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

添加以下内容

IPADDR="192.168.242.202" #子网IP

重启刷新

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

hadoop103_462">六、hadoop103配置

1. 主机名设置

hostnamectl set-hostname hadoop103 # 修改主机名	
exec bash # 使其生效

2. IP设置

打开配置文件

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

添加以下内容

IPADDR="192.168.242.203" # 子网IP

重启刷新

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

-配置ssh免密登录

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

# 产生公钥和私钥:
ssh-keygen -t rsa # (回车四次)
# 分发公钥
ssh-copy-id hadoop102
ssh-copy-id hadoop103
# 按照提示输入yes和密码
# 产生公钥和私钥:
ssh-keygen -t rsa # (回车四次)
# 分发公钥
ssh-copy-id hadoop101
ssh-copy-id hadoop103
# 按照提示输入yes和密码
# 产生公钥和私钥:
ssh-keygen -t rsa # (回车四次)
# 分发公钥
ssh-copy-id hadoop101
ssh-copy-id hadoop102
# 按照提示输入yes和密码

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

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

在这里插入图片描述

此处详细内容可参考 SSH设置无密码连接

七、启动集群

集群初始化

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

hdfs namenode -format 

方式一: 主节点一键启动集群 (推荐)

start-all.sh # 目前经测试推荐使用该方法,根据提示输入yes或密码

(方式二暂时不推荐)

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

每个节点执行

# 启动
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 hadoop102 "/root/hadoop-2.7.7/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/root/hadoop-2.7.7/sbin/start-yarn.sh"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="
 
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/root/hadoop-2.7.7/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/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文章...

http://www.niftyadmin.cn/n/10821.html

相关文章

「MacOS」Swift 第二章:基本运算符

额发现还是要写很多章&#xff0c;因为内容太多导致快速笔记也很多… 2 基本运算符 除了在不同语言中通用的运算符代表的功能&#xff0c;swift还对运算符进行了改进&#xff0c;例如使用运算符后的结果会被自动检测并禁止溢出&#xff0c;以此来避免保存变量时由于变量大于或…

贝赛尔曲线

<template><svg width"400" height"400" class"BG" mousemove"mousemove"><!-- 这样拼字符串&#xff0c;少些点加号&#xff0c;方便改一些 --><path class"Line":d"M${StartPoint[0]} ${StartP…

【Linux】初识系统调用进程状态

文章目录1. 什么是系统调用1.1 通过系统调用获取进程标示符通过其他方式查看PIDTopPS使用PID1.2 通过系统调用创建进程-fork初识2. 进程状态看看Linux内核源代码怎么定义查看状态Z(zombie)-僵尸进程僵尸进程危害孤儿进程1. 什么是系统调用 在linux中&#xff0c;系统调用是指操…

【机器学习技巧】机器学习模型的两种存储方式:pickle与joblib模块

目录1. 构建待存储的示例模型--鸢尾花数据集2. 模型存储2.1 使用sklearn中的joblib存储2.2 使用python自带的pickle模块存储模型本文主要介绍了两种机器学习模型的存储与读取方式&#xff0c;方便我们将训练好的模型直接存储起来&#xff0c;方便下次直接使用该模型进行预测。1…

【JAVA程序设计】基于SSM的电影院在线购票系统-沙箱支付

基于SSM的电影院在线购票系统-沙箱支付项目获取项目简介开发环境项目技术功能结构运行截图项目获取 获取方式&#xff08;点击下载&#xff09;&#xff1a;是云猿实战 项目经过多人测试运行&#xff0c;可以确保100%成功运行。 项目简介 本项目是基于SSM的影院购票系统,本项…

如何使用CompletableFuture

目录 一、CompletableFuture是什么 二、CompletableFuture用法 2.1、创建CompletableFuture 2.1.1、直接创建 2.1.2、创建一个使用指定数据作为结果的已结束的CompletableFuture 2.1.3、通过执行异步任务获取CompletableFuture 2.2、获取任务结果 2.3、消费结果 2.3.1、…

LeetCode-878. 第 N 个神奇数字【数学,二分查找,找规律】

LeetCode-878. 第 N 个神奇数字【数学&#xff0c;二分查找&#xff0c;找规律】 题目描述&#xff1a;解题思路一&#xff1a;二分答案容斥原理。给定一个上下界&#xff0c;然后依次增大下界或者减小上界&#xff0c;直到只剩一个答案。容斥原理是&#xff0c;加上两个集合&a…

数据治理----集中、分布的各种模式傻傻分不清楚

1、数据治理运营模型类型&#xff1a;集中式治理&#xff1b;分布式治理&#xff1b;联邦式治理。在集中式管理模式中&#xff0c;数据治 理组织监督所有业务领域中的活动。在分布式管理模式中&#xff0c;每个业务单元中采用相同的数据治理 运营模型和标准。在联邦式管理模式中…