转--Hadoop集群部署案例

模块简介

本模块主要练习Hadoop集群部署。

模块知识

● 使用Linux基础命令
● Hadoop集群搭建部署知识

环境准备

三台CentOS7操作系统的虚拟机
可以是3个Docker容器,也可以是三个VMWare/VirtualBox的虚拟机。三台虚拟机的最低配置为1核1G + 20G。如果是虚拟机中的Docker容器环境,则无需按照以下方式配置主机名和IP。若是按照《[选修]基于OpenEuler的Docker容器安装使用教程》创建的Docker容器环境,或者从一道云科技发展有限公司提供的百度盘链接下载的VMWare镜像直接导入的Docker容器环境,直接移步到“步骤一”开始。
● 可使用以下镜像安装虚拟机操作系统,或者自行搜索下载OpenEuler操作系统:

https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-Minimal-2207-02.iso

注意:若没有现成的虚拟机供你使用,VMWare或者VirtualBox请自行搜索下载并安装
● 使用以下命令将三台虚拟机的主机名分别修改为master、slave1、slave2:

vi /etc/hostname

● 使用以下命令设置三台虚拟机的固定IP:

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

打开文件后的初始内容如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4a053340-23a9-4998-9e3c-9cf47ceaf727
DEVICE=ens33
ONBOOT=no

将第4行dhcp修改为none;将第15行no修改为yes。然后文件末尾再追加以下内容:

IPADDR=192.168.157.200
PREFIX=24
GATEWAY=192.168.157.2
DNS1=8.8.8.8
IPV6_PRIVACY=no

其中IPADDR的值三台虚拟机各不一样,请确保:
master为192.168.157.200,
slave1为192.168.157.201,
slave2为192.168.157.202。
注意:如果你的VMWare/VirtualBox给虚拟机的网段不是192.168.157.X,请在VMWare/VirtualBox的“虚拟网络编辑器”中修改为以上网段。当然你也可以使用你的虚拟机默认的网段来配置三台虚拟机的固定IP,只是需要注意后续步骤中的IP都要和你配置的IP相匹配。

模块内容

步骤一:配置host主机文件
1. 在Windows工作机的XShell工具中,通过SSH连接到master虚拟机上:

ssh root@192.168.157.200
  1. 输入密码,连接成功后,打开host的配置文件:
vi /etc/hosts
  1. 在文件末尾追加输入以下内容(按键盘上i键开启输入):
192.168.157.200 master
192.168.157.201 slave1
192.168.157.202 slave2

输入完成后保存并退出(按键盘上Esc键,然后输入:wq)。
4. 通过SSH分别连接到slave1和slave2虚拟机上,分别执行以上2~3操作
步骤二:配置SSH无密钥连接
1. 在master虚拟机的XShell连接对话中,输入以下命令生成master的密钥对:

ssh-keygen -t rsa
  1. 连按三次回车键。密钥对生成后,使用以下命令将密钥复制到slave1:
ssh-copy-id slave1

输入yes继续,输入slave1虚拟机的root用户的密码。
3. 再次使用以下命令将密钥复制到slave2:

ssh-copy-id slave2

输入yes继续,输入slave2虚拟机的root用户的密码。
4. 再次使用以下命令将密钥复制到master本身:

ssh-copy-id master

输入yes继续,输入master虚拟机的root用户的密码。
5. 通过SSH分别连接到slave1和slave2虚拟机上,分别执行以上1~4操作
步骤三:检查SSH无密钥连接
1. 在master虚拟机的XShell连接对话中,输入以下命令:

ssh slave1

检查是否不需要输入密码即可连接到slave1虚拟机。连接成功后终端显示:

[root@slave1]#
  1. 若显示以上内容,即表示slave1的无密钥连接配置成功,使用以下命令注销slave1的登录:
logout
  1. 使用同样的方法检查slave2和master本身是否配置成功无密钥连接。
    步骤四:在三台虚拟机上安装JDK
    1. 在master虚拟机的XShell连接对话中,输入以下命令创建software文件夹:
mkdir -p /root/software/
  1. 在Windows工作机上打开PowerShell,使用SCP命令将Windows工作机上的JDK安装包复制到master虚拟机的/root/software/路径下。
scp E:\BigData\Component\jdk-8u401-linux-x64.tar.gz root@192.168.157.200:/root/software/

输入master虚拟机的密码后等待复制完成。
注意:jdk-8u401-linux-x64.tar.gz文件的路径修改为你工作机上的该文件的实际路径。
3. 在master虚拟机的XShell连接对话中,输入以下命令解压JDK安装包:

tar -zxvf /root/software/jdk-8u401-linux-x64.tar.gz -C /usr/local/

这将在/usr/local/目录下创建一个名为jdk1.8.0_401的文件夹,并将JDK解压在这里。
4. 配置环境变量。输入以下命令创建一个新的环境变量配置文件:

vi /etc/profile.d/jdk.sh

在文件中添加以下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_401
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

保存并退出。
5. 运行以下命令使环境变量配置生效:

source /etc/profile
  1. 运行以下命令验证JDK是否安装正确:
java -version

应该看到安装的JDK版本信息。
现在,已经成功安装了JDK并配置了相关的环境变量。
7. SSH连接到slave1和slave2虚拟机上,分别执行以上1~6操作,这将会给slave1和slave2成功安装JDK。
注意:执行scp命令时将IP地址替换为slave1和slave2的地址,即192.168.157.201和192.168.157.202
步骤五:在三台虚拟机上安装Hadoop
1. 在Windows工作机上打开PowerShell,使用SCP命令将Windows工作机上的Hadoop包复制到master虚拟机的/root/software/路径下。

scp E:\BigData\Component\hadoop-3.3.6.tar.gz root@192.168.157.200:/root/software/

输入master虚拟机的密码后等待复制完成。
注意:hadoop-3.3.6.tar.gz文件的路径修改为你工作机上的该文件的实际路径。
2. 在master虚拟机的XShell连接对话中,输入以下命令解压hadoop-3.3.6.tar.gz包:

tar -zxvf /root/software/hadoop-3.3.6.tar.gz -C /root/software/

这会将包内容解压到/root/software/hadoop-3.3.6/文件夹中。
3. 在/root/software/hadoop-3.3.6/下创建相关文件夹,输入以下命令:

mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/tempDatas
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/namenodeDatas
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/datanodeDatas
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/dfs/nn/edits
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/dfs/snn/name
mkdir -p /root/software/hadoop-3.3.6/hadoopDatas/dfs/nn/snn/edits
  1. 配置hadoop-env.sh设置JAVA_HOME环境变量及Hadoop用户:
vi /root/software/hadoop-3.3.6/etc/hadoop/hadoop-env.sh

文件末尾追加输入以下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_401
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
  1. 配置core-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/core-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property>
</configuration>
  1. 配置hdfs-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/hdfs-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration><property><name>dfs.replication</name><value>3</value></property><property><name>dfs.namenode.name.dir</name><value>file:/root/software/hadoop-3.3.6/hadoopDatas/namenodeDatas</value></property><property><name>dfs.datanode.data.dir</name><value>file:/root/software/hadoop-3.3.6/hadoopDatas/datanodeDatas</value></property>
</configuration>
  1. 配置mapred-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/mapred-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property><property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value></property>
</configuration>
  1. 配置yarn-site.xml:
vi /root/software/hadoop-3.3.6/etc/hadoop/yarn-site.xml

删除已有的<configuration>对,然后文件末尾追加输入以下内容:

<configuration><property><name>yarn.resourcemanager.hostname</name><value>master</value></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property>
</configuration>
  1. 配置workers:
vi /root/software/hadoop-3.3.6/etc/hadoop/workers

删除已有的内容,然后输入以下内容:

master
slave1
slave2
  1. 从master将Hadoop复制到slave1,执行以下命令:
scp -r /root/software/hadoop-3.3.6/ slave1:/root/software/
  1. 从master将Hadoop复制到slave2,执行以下命令:
scp -r /root/software/hadoop-3.3.6/ slave2:/root/software/
  1. 配置Hadoop环境变量,执行以下命令:
vi /etc/profile.d/hadoop.sh

输入以下内容:

export HADOOP_HOME=/root/software/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

保存并退出。
使Hadoop环境变量生效,执行以下命令:

source /etc/profile
  1. 该配置Hadoop环境变量的操作在slave1和slave2上分别操作一次
    步骤六:格式化HDFS
    在master节点执行以下命令:
hdfs namenode -format

步骤七:启动Hadoop集群
在master节点执行以下命令:

start-dfs.sh

应该看到如下输出:

[root@master ~]# start-dfs.sh
Starting namenodes on [master]
Last login: Wed Feb 21 19:51:38 EST 2024 from 192.168.157.1 on pts/0
Starting datanodes
Last login: Wed Feb 21 19:54:24 EST 2024 on pts/0
Starting secondary namenodes [master]
Last login: Wed Feb 21 19:54:27 EST 2024 on pts/0
[root@master ~]#

则代表hdfs启动成功,接着再次执行以下命令:

start-yarn.sh

应该看到如下输出:

[root@master ~]# start-yarn.sh
Starting resourcemanager
Last login: Wed Feb 21 19:54:35 EST 2024 on pts/0
Starting nodemanagers
Last login: Wed Feb 21 19:56:42 EST 2024 on pts/0
[root@master ~]#

则代表yarn启动成功,接着再次执行以下命令:

mapred --daemon start historyserver

应该看到如下输出:

[root@master ~]# mapred --daemon start historyserver
[root@master ~]#

步骤八:验证
分别在master、slave1、slave2三个节点执行以下命令:

jps

应该分别看到如下输出:
master:

[root@master ~]# jps
1606 DataNode
2230 NodeManager
2087 ResourceManager
1816 SecondaryNameNode
2681 Jps
2620 JobHistoryServer
1471 NameNode
[root@master ~]#

slave1:

[root@slave1 ~]# jps
1562 Jps
1355 DataNode
1452 NodeManager
[root@slave1 ~]#

slave2:

[root@slave2 ~]# jps
1363 DataNode
1571 Jps
1460 NodeManager
[root@slave2 ~]#

步骤九:关闭master虚拟机防火墙
在master节点执行以下命令:

sudo systemctl stop firewalld
sudo systemctl disable firewalld

上述命令将停止并禁用firewalld服务,这是 CentOS 7 和更新版本中的默认防火墙服务。禁用防火墙以便在工作机上通过Web浏览器访问Hadoop。
注意:在正式生产环境中不建议禁用防火墙,需要配置防火墙开放某些端口。可使用以下命令查看服务正在监听的端口

ss -nltp

或者

netstat -tuln

步骤十:通过Web浏览器访问Hadoop
在工作机上打开浏览器,输入以下网址访问Hadoop:

http://192.168.157.200:9870/

应该看到以下画面:
 



输入以下网址查看集群:

http://192.168.157.200:8088/

应该看到以下画面:
 



步骤十一:重启服务
在每次重新启动电脑后,需要重新启动Hadoop的服务,执行以下命令:

start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/32351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytorch把图片打成patches

我以图片shape[3,308,644]&#xff0c;kernel 16*16为例。 1 首先先pad一下图片保证能被kernel完整分开。 先pad图片 C,H,Wt_img.shape pad_h (16 - H % 16) % 16 pad_w (16 - W % 16) % 16t_img F.pad(t_img, (0, pad_w, 0, pad_h))变成了[3,320,656] 那么320//1620 ,…

MK米客方德SD NAND的掉电保护机制

随着科技的飞速发展&#xff0c;数据存储设备在我们的生活和工作中扮演着越来越重要的角色。然而&#xff0c;数据安全问题也随之而来&#xff0c;尤其是面对突然的电源故障或意外断电&#xff0c;我们宝贵的数据可能会面临丢失的风险。MK米客方德公司深知这一点&#xff0c;因…

Linux中tar压缩与解压缩

TAR是Unix/Linux中常用的归档工具&#xff0c;它可以对文件或目录进行打包但不压缩&#xff0c;或者配合其他工具进行压缩。 压缩文件或目录 以下是一些基本的tar压缩命令&#xff1a; 1.压缩单个文件&#xff1a; tar -cvf archive.tar file1 2.压缩多个文件&#xff1a; t…

后仿真中的 《specify/endspecify block》之(5)使用specify进行时序仿真

前面我们学习了specify...endspecify 具体是什么东西。今天,我们使用specify block 中定义的延时,来进行一次仿真。看看到底是背后如何运转的呢。 一 基本例子 一个用 specify 指定延迟的与门逻辑描述如下: module and_gate(output Z,input A, B);assign Z = A & …

导入别人的net文件报红问题

1. 使用cmd命令 dotnet --info 查看自己使用的SDK版本 2.直接找到项目中的 global.json 文件&#xff0c;右键打开&#xff0c;直接修改版本为本机的SDK版本&#xff0c;就可以用了

CPU飙升100%怎么办?字节跳动面试官告诉你答案!

小北说在前面 CPU占用率突然飙升是技术人员常遇到的一个棘手问题&#xff0c;它是一个与具体技术无关的普遍挑战。 这个问题可以很简单&#xff0c;也可以相当复杂。 有时候&#xff0c;只是一个死循环在作祟。 有时候&#xff0c;是死锁导致的。 有时候&#xff0c;代码中有…

windows设置开机启动项

将文件放到下面路径即可实现每次开机启动 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

【Flask】学习

参考B站视频&#xff1a;https://www.bilibili.com/video/BV1v7411M7us/ 目录 第一讲 什么是 flask 修饰器、路由规则 flask 变量规则&#xff0c;灵活传参数据类型&#xff1a;str、int、float&#xff08;正浮点数&#xff0c;传int会报错&#xff09;、path、uuid app.…

1108. IP 地址无效化

给你一个有效的 IPv4 地址 address&#xff0c;返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址&#xff0c;其实就是用 "[.]" 代替了每个 "."。 示例 1&#xff1a; 输入&#xff1a;address "1.1.1.1" 输出&#xff1a;"1[.]1[.]1…

【最新】2025QS世界大学排名数据与得分明细数据集

数据简介&#xff1a;QS排名由Quacquarelli Symonds公司发布&#xff0c;是全球最具影响力的大学排名之一。它每年根据学术声誉、雇主声誉、师生比例、文献引用率、国际师资和国际学生比例等多项指标&#xff0c;对全球大学进行评估和排序。旨在为学生、学者和雇主提供权威的高…

如何使用小猪APP分发进行在线封装

什么是在线封装&#xff1f; 在线封装&#xff0c;顾名思义&#xff0c;就是通过网络将应用程序进行打包处理。这个过程不仅能节省时间&#xff0c;还能大大提升工作效率&#xff0c;让开发者专注于应用本身的优化。 小猪app封装www.ppzhu.net 为什么选择小猪APP分发&#xf…

YOLOv8改进 | SPPF | 双通道特征处理的池化结构——SPPFCSPC【全网独家】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容&#xff0c;内含各种Head检测头、损失函数Loss、…

java干货,spring声明式事务

文章目录 一、编程式事务1.1 什么是编程式事务1.2 编程式事务的优缺点 二、声明式事务2.1 什么是声明式事务2.2 声明式事务的优点2.3 Spring 事务管理器2.4 spring 声明式事务使用 一、编程式事务 1.1 什么是编程式事务 编程式事务是指通过手动编写程序来管理事务&#xff0c…

富唯智能打造的AGV搬运机器人转运机器人

AGV搬运机器人&转运机器人 AGV搬运机器人&#xff0c;内部搭载ICD系列核心控制器&#xff0c;拥有不同的移载平台&#xff0c;负载最高可达 1000kq;重复精度高达5mm;支持 Wi-Fi漫游&#xff0c;实现更稳健的网络数据交互;无轨化激光 SLAM 导航&#xff0c;配合 3D 避障相机…

深入了解 PHP Smarty:功能强大的模板引擎解析与应用指南

1. 介绍 在构建动态网页应用程序时&#xff0c;模板引擎是一种强大的工具&#xff0c;它能够帮助我们将应用程序的逻辑和视图分离开来&#xff0c;从而提高代码的可维护性和可扩展性。PHP Smarty 是其中一种流行的模板引擎&#xff0c;它被广泛应用于 PHP 开发领域。本节将介绍…

一篇文章搞懂动量算法

动量算法是一种在机器学习领域广泛应用的优化算法,用于加速梯度下降算法的收敛速度和提高模型的性能。本文将详细介绍动量算法的定义、产生原因、原理、用途和Python demo实现。 定义 动量算法是一种在梯度下降算法基础上引入了“动量”概念的优化算法。在梯度下降算法中,模型…

LangChain实战技巧之六:一起玩转config(上篇)——ConfigurableField

简介 Config 包含两大类内容&#xff0c; ConfigurableField 可配置的字段 configurable_alternatives 可配置的替代方案 分别使用两篇文章来给大家介绍&#xff0c;本篇先介绍ConfigurableField 常规介绍 一些资料会这样介绍 model_spec model.configurable_fields(model…

CompletableFuture 基本用法

一、 CompletableFuture简介 CompletableFuture 是 Java 8 引入的一个功能强大的类&#xff0c;用于异步编程和并发处理。它提供了丰富的 API 来处理异步任务的结果&#xff0c;支持函数式编程风格&#xff0c;并允许通过链式调用组合多个异步操作。 二、CompletableFuture中…

【专业英语 复习】第7章

1. 单选题 Hard disks store and organize files using all the following, except ____. A. paths B. cylinders C. sectors D. tracks 正确答案&#xff1a;A 硬盘存储和组织文件使用以下所有选项&#xff0c;除了路径。 2. 单选题 Which of the following is …

通用大模型的低代码平台——3分钟内快速搭建一个邮件提醒工具

文章目录 ⭐前言⭐node-koa开发一个发送邮件的api⭐百度智能云控制面板&#x1f496; 发送邮件的组件配置&#x1f496; 配置应用发布 ⭐总结⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;通用大模型的低代码平台——3分钟内快速搭建一个智能股票分析邮件提醒工具。…