使用jdk17 搭建Hadoop3.3.5和Spark3.3.2 on Yarn集群模式

news2025/1/21 15:40:41

搭建Hadoop3.3.5和Spark3.3.2 on Yarn集群模式,使用jdk17

  • 搭建Hadoop3.3.5和Spark3.3.2 on Yarn集群模式
    • 1. 创建一台虚拟机
    • 2. 安装jdk17
      • (1)下载jdk17
      • (2)安装jdk17
      • (3)配置环境变量
    • 3. 虚拟机之间互信
      • (1)克隆虚拟机
      • (2)修改每台虚拟机的hostname
      • (3)每台虚拟机生成私钥和公钥
      • (4)创建公用公钥(免密登录)
      • (5)关闭防火墙
      • (6)配置hosts文件
      • (7)机器之间相互通信
    • 4. 安装hadoop
      • (1)下载hadoop3.3.5
      • (2)上传hadoop3.3.5到虚拟机
      • (3)配置core-site.xml
      • (4)配置hadoop-env.sh
      • (5)配置hdfs-site.xml
      • (6)配置mapred-site.xml
      • (7)配置workers
      • (8)配置yarn-site.xml
      • (9)创建localdir
      • (10)配置hadoop环境变量
    • 5. 启动hadoop
      • (1)格式化 NameNode
      • (2)启动hadoop
      • (3)查看进程
      • (4)查看 web 界面
    • 6. 安装Spark 使用Spark on Yarn集群模式
      • (1)下载Spark3.3.2
      • (2)上传Spark3.3.2到虚拟机
      • (3)配置spark-defaults.conf
      • (4)配置workers
      • (5)配置spark-env.sh
      • (6)配置Spark环境变量
    • 7. 启动Spark
      • (1)在hdfs环境中创建出日志存放位置
      • (2)启动spark
      • (3)web访问
      • (4)使用spark计算圆周率
      • (5)查看运行结果

搭建Hadoop3.3.5和Spark3.3.2 on Yarn集群模式

准备四台虚拟机或者物理机,我使用虚拟机,需要使用80G外存

我先准备一台虚拟机,配置完成后克隆出剩下的三台,这样可以解决配置时间

1. 创建一台虚拟机

这里我使用的是Centos8.5,虚拟机外存20G,内存4G,我安装的是带桌面版的

阿里Centos8.5下载地址

在这里插入图片描述
使用VMware安装一台虚拟机

安装过程中设置install source

在这里插入图片描述

http://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/

在这里插入图片描述

2. 安装jdk17

(1)下载jdk17

jdk17下载地址

在这里插入图片描述
我下载的是rmp的这个

(2)安装jdk17

我把所有的软件都安装在了 /opt 下面

创建一个文件夹 /java17

把安装包上传到该文件夹

在这里插入图片描述

在这里解压

rpm -ivh 软件包名字

在这里插入图片描述

(3)配置环境变量

进入**/usr/lib/jvm/jdk-17-oracle-x64**,可以看到刚才的java就安装在这里了

在这里插入图片描述

打开**/etc/proflie**文件,添加如下代码来配置环境变量

export JAVA_HOME=/usr/lib/jvm/jdk-17-oracle-x64
export PATH=$PATH:$JAVA_HOME/bin;
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar;
export set JAVA_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"

在这里插入图片描述

之后输入下面的命令,让配置生效

source /etc/profile

在这里插入图片描述
输入$Java_HOME出现路径,说明配置成功

3. 虚拟机之间互信

(1)克隆虚拟机

现在完成了一台虚拟机的配置,把这台虚拟机再克隆三份

在这里插入图片描述
点击克隆

在这里插入图片描述
点下一步
在这里插入图片描述

在这里插入图片描述
选择位置

在这里插入图片描述
在这里插入图片描述
创建完成一台,接下来继续创建
在这里插入图片描述
最终的效果

在这里插入图片描述

(2)修改每台虚拟机的hostname

一主三从

登陆时选择root用户登录

改完后四台主机的hostname分别为:master vice1 vice2 vice3 vice4

(3)每台虚拟机生成私钥和公钥

在 **/**目录下输入命令

ssh-keygen -t rsa

在这里插入图片描述
出现如图所示的情况时,按下回车

在这里插入图片描述
继续按下回车

在这里插入图片描述
再按下回车

一共按下三次回车

在这里插入图片描述
创建成功,之后可以在**/**目录下看到一个 .ssh 的隐藏文件

在这里插入图片描述

(4)创建公用公钥(免密登录)

把**.pub**文件打开,复制出里面的内容,把内容复制到一个临时的txt中,我复制到了windows桌面的一个文件里
在这里插入图片描述
在这里插入图片描述
之后把每台虚拟机的 .pub 文件中的内容都复制到这个临时的txt中

在这里插入图片描述
此时我们有了四台虚拟机的公钥

把这个txt临时文件改名为 authorized_keys
在这里插入图片描述
之后把这个文件放到每台虚拟机的 /.ssh目录下
在这里插入图片描述

(5)关闭防火墙

关闭防火墙,每台虚拟机都需要关闭

systemctl stop firewalld 
systemctl disable firewalld

在这里插入图片描述

(6)配置hosts文件

获取每台虚拟机的ip,写入每台虚拟机的hosts文件

hosts文件路径是 /etc/hosts

在这里插入图片描述
修改内容

在这里插入图片描述

192.168.186.148 master 
192.168.186.149 vice1 
192.168.186.150 vice2 
192.168.186.151 vice3 

这4个分别对应四台虚拟机的hostname和ip地址

使用ifconfig可以查看IP地址

在这里插入图片描述
每台虚拟机都需要完成hosts的配置

(7)机器之间相互通信

在每台虚拟机上,分别与其他虚拟机进行通信

输入命令

ssh master/vice

与master通讯就输入 ssh master

第一次通信会出现让你输入yes的情况,如果要输入密码,那么就是产生公钥和私钥环节出错,重新进行产生公钥和私钥

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

在这里插入图片描述
此时就通信成功了,之后输入exit退出,再试一次,看看需不需要输入yes或者密码

在这里插入图片描述
此时直接进来了,说明互信成功,接下来退出去,与其他虚拟机互信,自己与自己也互信一次

如果出现以下问题,说明hosts文件没有配置或者配置错误
在这里插入图片描述

4. 安装hadoop

(1)下载hadoop3.3.5

hadoop3.3.5下载地址

在这里插入图片描述
下载完成后上传到虚拟机

(2)上传hadoop3.3.5到虚拟机

把安装包上传到 /opt 目录下

在这里插入图片描述
解压

tar -xvzf 安装包

在这里插入图片描述
解压完成

在这里插入图片描述

(3)配置core-site.xml

进入 /opt/hadoop-3.3.5/etc/hadoop 目录

在这里插入图片描述
打开 core-site.xml ,加入如下内容

<configuration>
	<property>
	  <name>fs.defaultFS</name>
	  <value>hdfs://master:9000</value>
	</property>
	 
	<property>
	  <name>hadoop.tmp.dir</name>
	  <value>/opt/hadoop-3.3.5/tmp</value>
	</property>
	
	<property>
	    <name>hadoop.http.staticuser.user</name>
	    <value>root</value>
	</property>
</configuration>

(4)配置hadoop-env.sh

在这里插入图片描述
配置JAVA_HOME

在这里插入图片描述

export JAVA_HOME=/usr/lib/jvm/jdk-17-oracle-x64

设置java虚拟机启动参数

在这里插入图片描述

export HADOOP_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"

(5)配置hdfs-site.xml

在这里插入图片描述
添加如下代码

<configuration>

	<property>
	   <name>dfs.namenode.http-address</name>
	   <value>master:9870</value>
	</property>
	
	<property>
	    <name>dfs.namenode.secondary.http-address</name>
	    <value>master:50090</value>
	</property>
	
	<property>
	  <name>dfs.replication</name>
	  <value>3</value>
	</property>
 
</configuration>

(6)配置mapred-site.xml

在这里插入图片描述

<configuration>
	<property>
	  <name>mapreduce.framework.name</name>
	  <value>yarn</value>
	</property>
	<property>
	  <name>mapreduce.jobhistory.address</name>
	  <value>master:10020</value>
	</property>
	<property>
	  <name>mapreduce.jobhistory.webapp.address</name>
	  <value>master:19888</value>
	</property>

</configuration>

(7)配置workers

在这里插入图片描述

在这里插入图片描述

(8)配置yarn-site.xml

在这里插入图片描述

<configuration>

<property>
  <name>yarn.nodemanager.local-dirs</name>
  <value>/opt/localdir</value>
</property>
<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>master</value>
</property>

</configuration>

(9)创建localdir

/opt 目录下创建localdir

在这里插入图片描述

(10)配置hadoop环境变量

/etc/profile 文件中加入如下代码

export HADOOP_HOME=/opt/hadoop-3.3.5
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

启用配置

source /etc/profile

至此,一台虚拟机配置完毕,接下来配置其他虚拟器

5. 启动hadoop

现在,四台虚拟机已经都安装了hadoop,并且环境变量已经配置成功,下面就是启动hadoop了

确保四台机子都已经打开

(1)格式化 NameNode

在主节点master机器上运行如下命令

hdfs namenode -format

在这里插入图片描述

(2)启动hadoop

start-all.sh

出现报错
在这里插入图片描述
解决方法:在每个虚拟机的 /etc/profile 文件中加入如下代码

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

启用配置

source /etc/profile

之后再次运行start-all.sh

在这里插入图片描述
启动成功

(3)查看进程

使用 jps 命令

主节点查看

在这里插入图片描述
从节点查看

在这里插入图片描述
出现上述两个图片中的进程,表示hadoop启动成功

(4)查看 web 界面

在浏览器输入ip

http://主节点IP地址:9870/

在这里插入图片描述
成功进入

在这里插入图片描述
可以看到活着的结点有3个

关闭hadoop,在master节点输入下面的命令

stop-all.sh

在这里插入图片描述

6. 安装Spark 使用Spark on Yarn集群模式

(1)下载Spark3.3.2

https://www.apache.org/dyn/closer.lua/spark/spark-3.3.2/spark-3.3.2-bin-without-hadoop.tgz

下载的是没有自带hadoop的版本

在这里插入图片描述

(2)上传Spark3.3.2到虚拟机

在这里插入图片描述
解压

tar -xzvf spark-3.3.2-bin-without-hadoop.tgz

在这里插入图片描述
给文件夹改个名字,改为spark
在这里插入图片描述

(3)配置spark-defaults.conf

进入 /opt/spark/conf 目录下

在这里插入图片描述
把spark-defaults.conf.template文件的.template删除

在这里插入图片描述
修改其内容

spark.master spark://master:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:8020/spark-eventlog
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 5g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" --add-opens java.base/java.lang=ALL-UNNAMED
spark.driver.extraJavaOptions --add-opens java.base/java.lang=ALL-UNNAMED

在这里插入图片描述

(4)配置workers

创建workers文件,并修改内容

在这里插入图片描述

在这里插入图片描述
或者把.template文件修改

在这里插入图片描述

(5)配置spark-env.sh

把spark-env.sh.template文件的.template删除

在这里插入图片描述
修改其内容

export JAVA_HOME=/usr/lib/jvm/jdk-17-oracle-x64
export HADOOP_CONF_DIR=/opt/hadoop-3.3.5/etc/hadoop
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-3.3.5/bin/hadoop classpath)

在这里插入图片描述

(6)配置Spark环境变量

/etc/profile 文件中加入如下代码

export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

在这里插入图片描述

启用配置

source /etc/profile

至此,一台虚拟机的spark配置完毕,接下来配置其他虚拟器,过程与该虚拟机配置过程一致

7. 启动Spark

现在,四台虚拟机已经都安装了Spark,并且环境变量已经配置成功,下面就是启动Spark了

确保四台机子都已经打开

(1)在hdfs环境中创建出日志存放位置

先启动hadoop,start-all.sh

进入浏览器界面,访问hadoop的web页面,点击utilities

在这里插入图片描述

创建文件夹 /spark-eventlog
在这里插入图片描述
在这里插入图片描述
点击create

在这里插入图片描述
创建成功

(2)启动spark

进入 /opt/spark/sbin 目录下

输入如下命令启动

./start-all.sh

在这里插入图片描述
如果出现 permission deny或者权限不足,需要把对应虚拟机的spark文件夹加权限

(3)web访问

访问网址

http://主节点IP地址:8080/

在这里插入图片描述

(4)使用spark计算圆周率

在主节点上输入一下命令

spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar 100

这个 /opt/spark/examples/jars/spark-examples_2.12-3.3.2.jar 是spark路径下的一个jar包,是官方提供的样例

在这里插入图片描述

100表示运行100次

下面是运行过程

在这里插入图片描述
运行出现问题

在这里插入图片描述
修改 /opt/spark/conf/spark-defaults.conf文件

在这里插入图片描述

spark.master spark://master:7077
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/spark-eventlog
spark.serializer org.apache.spark.serializer.KryoSerializer
spark.driver.memory 5g
spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three" --add-opens java.base/java.lang=ALL-UNNAMED
spark.driver.extraJavaOptions --add-opens java.base/java.lang=ALL-UNNAMED

其他的虚拟机也要修改

接下来关闭spark,再启动

关闭使用 ./stop-all.sh, 注意要在spark的sbin目录下

在这里插入图片描述
再计算PI

在这里插入图片描述
这次出现了running,表示正在计算中,说明一切正常

在这里插入图片描述
执行结束

(5)查看运行结果

访问下面的url

http://主节点IP地址:8088/cluster

点击下面最后一次的id,因为前两次都出现了错误,所以点开看不到计算结果
在这里插入图片描述
进来后点击Logs

在这里插入图片描述
如果进不去这个页面

在这里插入图片描述
把vice3换成对应虚拟机的ip地址就可以访问了

在这里插入图片描述
接下来点击stdout
在这里插入图片描述
可以看到出现了结果PI

在这里插入图片描述
此时说明,spark集群搭建成功,hadoop集群搭建成功

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

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

相关文章

【音视频第15天】webRTC协议(2)

目录 协议ICESTUNNATTURNSDPSDP结构 Signaling and ConnectingSignaling: How peers find each other in WebRTCConnecting and NAT Traversal with STUN/TURN Signalingsdp协议WebRTC如何使用sdpWebRTC会话示例 Connecting为什么WebRTC需要一个专用的子系统来连接?现实世界的…

Day949.遗留系统之殇:为什么要对遗留系统进行现代化? -遗留系统现代化实战

遗留系统之殇&#xff1a;为什么要对遗留系统进行现代化&#xff1f; Hi&#xff0c;我是阿昌&#xff0c;今天学习记录是关于遗留系统之殇&#xff1a;为什么要对遗留系统进行现代化&#xff1f;的内容。 不知道你是否跟曾经一样&#xff0c;身处一个遗留系统的漩涡之中&…

数据结构-基数排序

基数排序是和其他的各类排序方式都不同的方式&#xff0c;之前的各类排序&#xff0c;如快速排序&#xff0c;堆排序&#xff0c;冒泡排序等等&#xff0c;都是通过关键字之间的比较和移动记录这两种操作来实现的&#xff0c;而基数排序不需要记录关键字之间的比较。所谓基数排…

ubuntu 安装vmware tool

1在虚拟机种站到安装vmware-tools 然后重启虚拟机 2在磁盘中可以看到如下文件&#xff0c;将zip文件移动到桌面解压备用 3关闭虚拟机 找到编辑虚拟机设置 4点击左侧 CD/dvd(SATA) 如果是使用镜像文件&#xff0c;改成使用物理驱动器. 5 打开命令行 cd 桌面 &#xff08;如…

CSS基础——盒子模型的一些属性概念

目录 display visibility overflow 文档流 元素在文档流中的特点 块元素 内联元素 浮动 float 浮动元素特点 清除浮动 clear 小练习 效果图 具体实现 高度塌陷问题 BFC 特点 如何开启BFC 解决方案 本篇的最终练习 效果图如下&#xff1a; 具体实现 disp…

ChatGPT原理解释

写了一本介绍ChatGPT原理的课程 结构如下 01、介绍ChatGPT及其原理 1.1 ChatGPT的概述 1.2 什么是自然语言处理&#xff08;NLP&#xff09; 1.3 深度学习与NLP的关系 1.4 GPT模型的介绍 02、GPT原理探讨 2.1 GPT模型的输入与输出 2.2 GPT模型的结构 2.3 GPT模型的预训练方法…

flv怎么无损转换成mp4格式,3大超级方法分享

flv格式是目前在视频分享媒体播放网站上广泛使用的一种视频文件格式&#xff0c;可以在网站窗口中直接播放&#xff0c;这类视频文件还能够有效保护版权。但是有些时候我们可能需要将flv格式的视频转换为其他格式&#xff0c;比如mp4。但是该怎么操作呢&#xff1f; 其实有很多…

数据挖掘:汽车车交易价格预测(测评指标;EDA)

目录 一、前期工作 1.赛题介绍 赛题分析&#xff1a; 分类和回归问题的评价指标有如下一些形式&#xff1a; &#xff08;下文2.1和2.2会用到&#xff09; 2.数据简介 3.探索性分析-EDA介绍 二、实战演练 2.1分类指标评价计算示例 2.2回归指标评价计算示例 2.3数据探索…

抠图,扣掉背景图片

Remove Image Backgrounds, Free HD, No Signup - Pixian.AI https://pixian.ai/ 从电脑本地选取图片&#xff0c;然后会自动扣掉背景&#xff0c;点击DOWNLOAD就可以了 第一个&#xff1a;Pixian.AI 这是一款国外的在线抠图网站&#xff0c;把需要扣除背景的图片拖拽进来&am…

简单的了解下 Fetch API 的工作原理

简介 Fetch API是一种现代的Web API&#xff0c;提供了一种异步获取网络资源的方法。由于其简单性、灵活性和一致性&#xff0c;它已经成为Web应用程序中获取数据和资源的流行选择。在本文中&#xff0c;我们将深入探讨Fetch API的核心特性&#xff0c;并了解其工作原理。 Fetc…

Windows逆向安全(一)之基础知识(七)

汇编C语言类型转换 类型转换 类型转换的使用场景 类型转换一般为由数据宽度小的转换成数据宽度大的&#xff0c;不然可能会有高位数据被截断的现象&#xff0c;引起数据丢失 需要一个变量来存储一个数据&#xff0c;刚开始这个数据的数据宽度较小&#xff0c;后来发现存不下…

什么是UML?

文章目录 00 | 基础知识01 | 静态建模类图对象图用例图 02 | 动态建模时序图通信图状态图活动图 03 | 物理建模构件图部署图 UML&#xff08;Unified Model Language&#xff09;&#xff0c;统一建模语言&#xff0c;是一种可以用来表现设计模式的直观的&#xff0c;有效的框图…

【图像分割】Grounded Segment Anything根据文字自动画框或分割环境配置和基本使用教程

1 环境配置 要求&#xff1a;python>3.8, pytorch>1.7, torchvision>0.8 官方地址&#xff1a;https://github.com/IDEA-Research/Grounded-Segment-AnythingMarrying Grounding DINO with Segment Anything & Stable Diffusion & BLIP & Whisper &am…

命运坎坷的保定县

保定的词语分解 保护而安定之。诗小雅天保&#xff1a;“天保定尔&#xff0c;亦孔之固。”谓稳固地保有。 晋 陆云 大将军宴会被命作诗&#xff1a;“皇皇帝祜&#xff0c;诞隆骏命。四祖正家&#xff0c;天禄保定。” 保定府&#xff1f;保定县&#xff1f; 今天提起“保定…

将“每日造型”变成长久习惯,戴森Airwrap™美发棒为何成为最好的“美丽投资”?

做头发、换发型是一个大工程&#xff0c;这几乎成了一种固定印象。虽然卷发棒已成为几乎“人手必备”的头发造型工具&#xff0c;但使用起来往往“现实很骨感”&#xff0c;不是使用频次极低&#xff0c;就是被束之高阁&#xff0c;每天都自己做头发换造型&#xff0c;只能是一…

陶泓达:4.19黄金原油早间精准策略!

黄金方面&#xff1a; 周二(4月18日)美市早盘&#xff0c;现货黄金一度跌至1991.05美元低点&#xff0c;但随后迅速拉升近20美元&#xff0c;向上触及2010.71美元高点&#xff0c;短线走出V型反转行情。本周&#xff0c;美国经济日历上没有太多关键数据会影响黄金和美元。因此&…

docker的数据卷详解

数据卷 数据卷是宿主机中的一个目录或文件&#xff0c;当容器目录和数据卷目录绑定后&#xff0c;对方修改会立即同步 一个数据卷可以同时被多个容器同时挂载&#xff0c;一个容器也可以被挂载多个数据卷 数据卷作用&#xff1a;容器数据持久化 /外部机器和容器间接通信 /容器…

leetCode算法第二天

好好刷刷算法题&#xff0c;提高自己的编码能力。 文章目录 将整数转为罗马数字将罗马数字转为整数编写一个函数来查找字符串数组中的最长公共前缀电话号码的字母组合 将整数转为罗马数字 leetcode链接&#xff1a;https://leetcode.cn/problems/integer-to-roman/ 解题思路…

施工阶段如何应用BIM技术,建模助手有话说

​近些年来&#xff0c;越来越多的建筑项目采用BIM来提升管理水平和品质&#xff0c;特别在施工阶段&#xff0c;通过BIM技术可以将施工现场3D模型与施工进度链接&#xff0c;超前模拟施工情况&#xff0c;完成各种精细化施工方案&#xff0c;除了保障施工工作顺利推进&#xf…

GitHub Copilot 快速入门

GitHub Copilot 是 AI 结对程序员。 可以使用 GitHub Copilot 在编辑器中获取整行或整个函数的建议。 1. 简介 让我们首先了解一些关于 GitHub Copilot 的内容。 这是 GitHub 和 OpenAI 的合作成果。 Copilot 是一种基于人类程序员编写的数十亿行代码训练的语言模型。 &#…