Spark01

Spark01

      • 一. Spark概述
      • 二. Spark环境部署 - Local
      • 三. Spark环境部署 - Standalone
          • 1. Standalone集群概述
          • 2. Standalone环境部署
          • 3. 测试环境
      • 四. Spark环境部署 - Standalone-HA
          • 1. 安装部署Zookeeper
          • 1. 下载
          • 2. zookeeper安装
          • 3. 配置StandAlone-HA集群
      • 五. Spark On YARN -- 重点
          • 1. 环境搭建

一. Spark概述

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

二. Spark环境部署 - Local

1. 上传压缩包
在这里插入图片描述
2. 解压缩
在这里插入图片描述
3. 修改用户权限 - hadoop
在这里插入图片描述
4. 构建软链接
在这里插入图片描述
5.文件目录
在这里插入图片描述
6. 启动spark-shell
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
7. 测试
在这里插入图片描述

val textfile=sc.textFile("file:///home/hadoop/words.txt");
// val scala的声明,声明一个不可变的变量
// sc: SparkContext对象, 是Spark程序的入口,提供了连接Spark集群的方法,并且可以创建RDDs(弹性分布式数据集)
//textFile():SC对象提供的方法, 用来读取文本文件, 会将文件中的内容作为RDD[String]返回
/*textFile = RDD[e are words]RDD[e are words]RDD[e are words]*/
val counts = textfile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
// flatMap(): 转换函数, 接收一个函数作为参数, 对RDD中的每个元素都应用这个函数
// 参数:  '_.split(" ")' 使用空格作为分隔符将每行文本拆分成单词数组 [e are words e are words e are words]
// map(): 转换函数, 接收一个函数作为参数,  对RDD中的每个元素都应用这个函数
// (_,1): 匿名函数,
// reduceByKey(_+_) //结果:
//Array[(String, Int)] = Array((are,2), (english,1), (e,1), (in,1), (more,1), (words,3), (these,1))

三. Spark环境部署 - Standalone

1. Standalone集群概述

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

2. Standalone环境部署

1. 集群规划

node1: Master /Worker
node2 : Worker
node3 : Worker

2. 配置workers

cd /export/server/spark/conf/workers
改名称
mv workers.template workers
vim workders
内容
node1
node2
node3

3. 配置Master - spark-env.sh

cd /export/server/conf/spark-env.sh
改名
mv spark-env.sh.template spark-env.sh
vim spark-env.sh
内容

## 设置JAVA安装目录
# 1. 改名
mv spark-env.sh.template spark-env.sh# 2. 编辑spark-env.sh, 在底部追加如下内容## 设置JAVA安装目录
JAVA_HOME=/export/server/jdk## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop## 指定spark老大Master的IP和提交任务的通信端口
# 告知Spark的master运行在哪个机器上
export SPARK_MASTER_HOST=node1
# 告知sparkmaster的通讯端口
export SPARK_MASTER_PORT=7077
# 告知spark master的 webui端口
SPARK_MASTER_WEBUI_PORT=8080## 设置历史服务器
# 配置的意思是  将spark程序运行的历史日志 存到hdfs的/sparklog文件夹中
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"# 注意, 上面的配置的路径 要根据你自己机器实际的路径来写

在HDFS下创建历史运行记录文件sparklog

hadoop fs -mkdir /sparklog
hadoop fs -ls /
hadoop fs -chmod 777 /sparklog

4.分发

scp -r spark-3.2.0-bin-hadoop3.2/ hadoop@node2:`pwd`
scp -r spark-3.2.0-bin-hadoop3.2/ hadoop@node3:`pwd`

5. 构建软连接

node2: ln -s /export/server/spark-3.2.0-bin-hadoop3.2/ spark
node3: ln -s /export/server/spark-3.2.0-bin-hadoop3.2/ spark

3. 测试环境

1. 启动Master进程

集群的启动和停止
在主节点上启动spark集群
/export/server/spark/sbin/start-all.sh
在主节点上停止spark集群
/export/server/spark/sbin/stop-all.sh
在主节点上单独启动和停止master
start-master.sh
stop-master.sh

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

2. 启动spark-shell
在这里插入图片描述
3. 测试

提交 WordCounts任务到Spark集群中
node1 : Master+Worker
node2 : worker
node3 : worker

上传文件到HDFS,方便读取words.txt文件(考虑到node2和node3没有word.txt)
hadoop fs -put /home/hadoop/words.txt /wordcount/input/words.txt
在HDFS创建
hadoop fs -mkdir -p /wordcount/input
查看是否上传成功
hadoop fs -ls /wordcount/input

val textfile = sc.textFile("hdfs://node1:8020/words.txt")
val count = textfile.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)
count.collect()
count.saveAsTextFile("hdfs://node1:8020/wordcount/output00")

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

四. Spark环境部署 - Standalone-HA

在这里插入图片描述

1. 安装部署Zookeeper

1. 前期准备

cd /export/server
// 解压缩
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server
// 构建软链接
ln -s apache-zookeeper-3.5.9-bin zookeeper
// 查看是否成功
ll
// 删除Zookeeper的压缩包
rm -rf apache-zookeeper-3.5.9-bin.tar.gz
1. 下载

https://archive.apache.org/dist/zookeeper/
在这里插入图片描述
在这里插入图片描述

2. zookeeper安装
  1. zookeeper解压

首先将下载的 apache-zookeeper-3.5.9-bin.tar.gz 上传到服务器
解压安装至 /export/server目录下
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server
ln -s apache-zookeeper-3.5.9-bin zookeeper

2.zookeeper配置文件介绍

进入 zookeeper 配置文件 /export/server/zookeeper/conf/
给 zoo_sample.cfg 配置文件重命名为 zoo.cfg
在这里插入图片描述

配置文件介绍

# The number of milliseconds of each tick
# 用于计算基础的实际单位
# 设置tickTime,基本时间单位(毫秒),用于控制ZooKeeper的心跳间隔等参数
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
# 初始化时间
# 初始化连接超时时间,单位是tickTime的倍数
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
# 选举时间
# 跟随者与领导者之间同步的最大心跳数,单位是tickTime的倍数
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
# 配置zookeeper数据存放路径
# 指定数据目录,用于存储ZooKeeper的数据
dataDir=/export/server/zookeeper/data
dataLogDir=/export/server/zookeeper/logs# the port at which the clients will connect
# 客户端连接端口,默认是2181
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

首先 zookeeper 目录下创建 zookeeper 数据和日志的存放目录,并且添加文件读写权限

mkdir data
chmod 777 data
mkdir logs
chmod 777 logs

集群配置

集群配置 2888:选举端口 3888:投票端口
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

server.1=B:C:D

  • A是一个数字, 表示这个是第几号服务器
    集群模式下配置一个文件 myid,这个文件在 data,目录下,这个文件里面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
  • B是这个服务器的地址;
  • C是这个服务器Follower 与集群中的 Leader 服务器交换信息的端口;←
  • D是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口

在这里插入图片描述
后两台机器分别写入 2、3

echo "2" > myid
echo "3" > myid

修改环境变量-切换为root用户

export ZOOKEEPER_HOME=/export/server/zookeeper
export PATH=$PATH:$ZOOKEEPR_HOME/bin

source /etc/profile

分发
scp -r apache-zookeeper-3.5.9-bin/ hadoop@node2:$PWD
scp -r apache-zookeeper-3.5.9-bin/ hadoop@node3:$PWD

启动Zookeeper
bin/
在这里插入图片描述
在这里插入图片描述

3. 配置StandAlone-HA集群

前提: 确保Zookeeper 和 HDFS 均已经启动
先在spark-env.sh中, 删除或者注释: SPARK_MASTER_HOST=node1
在这里插入图片描述

原因: 配置文件中固定master是谁, 那么就无法用到zk的动态切换master功能了.

spark-env.sh中, 增加:

SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node1:2181,node2:2181,node3:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"
# spark.deploy.recoveryMode 指定HA模式 基于Zookeeper实现
# 指定Zookeeper的连接地址
# 指定在Zookeeper中注册临时节点的路径

在这里插入图片描述

将spark-env.sh 分发到每一台服务器上

scp spark-env.sh node2:/export/server/spark/conf/
scp spark-env.sh node3:/export/server/spark/conf/
在这里插入图片描述

停止当前StandAlone集群

sbin/stop-all.sh

在这里插入图片描述

启动集群:

# 在node1上 启动一个master 和全部worker
sbin/start-all.sh

在这里插入图片描述

# 注意, 下面命令在node2上执行
sbin/start-master.sh
# 在node2上启动一个备用的master进程

在这里插入图片描述
在这里插入图片描述
测试主备切换
4.模拟node1宕机

jps
kill -9 进程id
在这里插入图片描述
5.再次查看web-ui

http://node1:8080/
在这里插入图片描述

http://node2:8080/
在这里插入图片描述

五. Spark On YARN – 重点

1. 环境搭建

1.1整合YARN集群

cd /export/server/spark/conf
vim spark-env.sh

HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop

1.2 配置YARN历史服务器并关闭资源检查

cd /export/server/hadoop/etc/hadoop/yarn-site.xml

<configuration>
<property><name>yarn.resourcemanager.hostname</name><value>node1</value><description>resourcemanager设置在node1节点</description>
</property>
<property><name>yarn.nodemanager.local-dirs</name><value>/data/nm-local</value><description>NodeManager中间数据本地存储路径</description>
</property>
<property><name>yarn.nodemanager.log-dirs</name><value>/data/nm-log</value><description>NodeManager数据日志本地存储路径</description>
</property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>为MapReduce程序开启shuffle服务</description>
</property>
<property><name>yarn.log.server.url</name>
</property>
<property><name>yarn.web-proxy.address</name><value>node1:8089</value><description>代理服务器主机和端口</description>
</property>
<property><name>yarn.log-aggregation-enable</name><value>true</value><description>开启日志聚合</description>
</property>
<property><name>yarn.nodemanager.remote-app-log-dir</name><value>/data/nm-local</value><description>NodeManager中间数据本地存储路径</description>
</property>
<property><name>yarn.nodemanager.log-dirs</name><value>/data/nm-log</value><description>NodeManager数据日志本地存储路径</description>
</property>
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>为MapReduce程序开启shuffle服务</description>
</property>
<property><name>yarn.log.server.url</name>
</property>
<property><name>yarn.web-proxy.address</name><value>node1:8089</value><description>代理服务器主机和端口</description>
</property>
<property><name>yarn.log-aggregation-enable</name><value>true</value><description>开启日志聚合</description>
</property>
<property><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value><description>程序日志HDFS存储路径</description>
</property>
<property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value><description>选择公平调度器</description>
</property>
<property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property></configuration>

配置完成要分发
cd /export/server/hadoop/etc/hadoop

scp -r yarn-site.xml node2:`pwd`
scp -r yarn-site.xml node3:`pwd`

1.3 配置Spark历史服务器与YARN整合

在YARN集群上可以看大spark的一些历史记录

  • 修改 spark-default.conf

进入配置目录
cd /export/server/spark/conf
修改文件名称
mv spark-defaults.conf.template spark-defaults.conf
添加内容

spark.eventLog.enabled                  true
spark.eventLog.dir                      hdfs://node1:8020/sparklog/
spark.eventLog.compress                 true
spark.yarn.historyServer.address        node1:18080
spark.yarn.jars                         hdfs://node1:8020/spark/jars/*

在HDFS下创建文件
创建 spark/jar hadoop fs -mkdir -p /spark/jar
创建sparklog hadoop fs -mkdir /sparklog

  • 修改日志级别

修改名称 mv log4j.properties.template log4j.priperties
修改日志级别
在这里插入图片描述

  • 分发:
 scp -r spark-env.sh node2:`pwd`scp -r spark-env.sh node3:`pwd`scp -r spark-defaults.conf node2:`pwd`scp -r spark-defaults.conf node3:`pwd`scp -r log4j.properties node2:`pwd`scp -r log4j.properties node3:`pwd`

1.4 配置Spark依赖的jar

  • 在HDFS上创建存储spark相关的jar包目录

hadoop fs -mkdir -p /spark/jars

  • 上传$SPARK_HOME/jars下所有的jar包到HDFS

hadoop fs -put /export/server/spark/jars/* /spark/jars
检查上传是否成功
hadoop fs -ls /spark/jars

1.5 启动服务

start-dfs.sh
start-yarn.sh

jps
在这里插入图片描述
mapred --daemon start historyserver
在这里插入图片描述
启动Spark的历史服务
/export/server/spark/sbin/start-history-server.sh
在这里插入图片描述

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

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

相关文章

ESP32S3在VScode中使用USB口调试

ESP32S3在VScode中使用USB口调试 安装USB驱动修改工程的配置文件launch.jsonsettings.json 启动GDB Server 安装USB驱动 在powershell中输入下面指令&#xff1a; Invoke-WebRequest https://dl.espressif.com/dl/idf-env/idf-env.exe -OutFile .\idf-env.exe; .\idf-env.exe…

js实现抽奖效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>随机抽奖</title> </head> <body>…

锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于GRU门控循环单元的锂电池寿命预测 Matlab基于GRU的锂电池剩余寿命预测 基于GRU的锂电池剩余寿命预测&#xff08;单变量&#xff09; 运行环境Matlab2020及以上 锂电池的剩余寿命预测是…

W11安装WSL2 ubuntu 攻略

W11安装WSL2 ubuntu 攻略 最近换了新电脑重新安装一遍wsl2&#xff0c;记录一下方便以后使用。 打开控制面板&#xff0c;选择程序 —— 启用或关闭Windows功能&#xff0c;勾选 适用于Linux的Windows子系统还有虚拟机平台选项&#xff0c;修改后需要重启 wsl2版本 wsl --se…

Rust腐蚀服务器清档多教程

Rust腐蚀服务器清档多教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师。上期教了大家怎么搭建服务器以及安装插件等那么随着大家自己架设服或是玩耍的时间肯定会有小伙伴想要去新增开区数量或是把原本的服务器进行一些调整等&#xff0c;那么今天主要聊的就是怎…

如何在Windows 10中启用和使用上帝模式,这里有详细步骤

序言 上帝模式&#xff08;God Mode&#xff09;是一个特殊的文件夹&#xff0c;只在一个窗口中显示所有可用的操作设置。它可以节省搜索命令的时间&#xff0c;而无需知道通过“开始”菜单或“控制面板”查找命令的步骤。上帝模式默认情况下是隐藏的&#xff0c;所以我们需要…

类和对象-封装-设计案例1-立方体类

#include<bits/stdc.h> using namespace std; class Cube{public://设置长void setL(int l){m_Ll;} //获取长int getL(){return m_L;}//设置宽 void setW(int w){m_Ww;}//获取宽 int getW(){return m_W;}//设置高 void setH(int h){m_Hh;}//获取高int getH(){return m_H;…

线程池 ThreadPoolExecutor 配置参数详解

《开发语言-Java》 线程池 ThreadPoolExecutor 参数详解 一、引言二、主要内容2.1 核心构造函数2.2 核心线程数2.3 最大线程数2.4 空闲线程存活时间2.5 keepAliveTime 的时间单位2.6 核心线程在空闲时的回收策略2.7 工作队列2.8 线程工厂2.9 拒绝策略 三、总结 一、引言 提到 …

《QT实用小工具·三十一》基于QT开发的访客管理平台demo2

1、概述 源码放在文章末尾 该项目为访客管理平台demo&#xff0c;包含主界面、系统设置、警情查询、调试帮助、用户退出功能。 项目部分代码如下&#xff1a; #pragma execution_character_set("utf-8")#include "frmmain.h" #include "ui_frmmain…

js调用html页面需要隐藏某个按钮

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Qt日志使用

QsLog使用 这篇讲qt的日志还是比较好的&#xff0c;可以在自己的函数里面配置这个日志框架实现自己所需的功能。 我接触的项目里面&#xff0c;假如有个函数功能执行错误了&#xff0c;我希望可以快速定位到这个错误&#xff0c;这个时候就需要到了日志&#xff0c;我咨询了有经…

Python测试转岗网络安全测试,挑战年薪30W+

有许多人问我安全测试前景怎么样&#xff1f; 目前&#xff0c;网络安全市场可大致分为17大安全领域、59个细分领域。不同领域大类核心技术相距甚远&#xff0c;因此绝大多数企业都选择专注于几个细分市场上。产品终端使用者主要以政企、军队、运营商、金融、医疗、教育、交通…

【技巧】PPT文件如何添加公司LOGO?

在工作上&#xff0c;我们经常要给PPT文件添加上公司的logo&#xff0c;如果一页一页添加不但耗时耗力&#xff0c;还容易有遗漏。那怎样快速给PPT添加logo呢&#xff1f;不清楚的小伙伴一起来看看如何吧&#xff01; 操作步骤&#xff1a; 1.打开PPT文件&#xff0c;点击菜单…

【DM8】ODBC

官网下载ODBC https://www.unixodbc.org/ 上传到linux系统中 /mnt下 [rootstudy ~]#cd /mnt [rootstudy mnt]# tar -zxvf unixODBC-2.3.12.tar.gz [rootstudy mnt]# cd unixODBC-2.3.12/ [rootstudy unixODBC-2.3.12]# ./configure 注意&#xff1a;若是报以上错 则是gcc未安…

【C语言】【数据结构】项目实践——贪吃蛇游戏(超详细)

前言 本篇博客我们来实现一个小游戏项目——贪吃蛇&#xff0c;相信肯定很多人都玩过&#xff0c;那么整个贪吃蛇是怎么实现出来的那&#xff0c;这个项目用到了很多方面的知识&#xff1a;C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。我们就通过这…

JAVA 集合框架(一) Collection集合详解和常用方法

Java集合框架&#xff08;Java Collections Framework&#xff09;是一个强大的、高度灵活的数据结构库&#xff0c;它为Java应用程序提供了组织、存储和操作对象集合的标准方法。 集合类体系结构 接口类&#xff1a; Collection: 是单例集合类的顶层接口&#xff0c;包括Lis…

【MIT6.824】lab3 Fault-tolerant Key/Value Service 实现笔记

引言 lab3A的实验要求如下&#xff1a; Your first task is to implement a solution that works when there are no dropped messages, and no failed servers. You’ll need to add RPC-sending code to the Clerk Put/Append/Get methods in client.go, and implement Pu…

算法课程笔记——pair的使用

先思考&#xff0c;为什么 STL 中的容器和算法都是用的左闭右开区间&#xff1f; | | | 这样迭代器只需要支持和!(或者<或者)操作就可以方便的进行区间遍历了。 其它区间设置的话&#xff0c;要么得支持<操作&#xff0c;要么得在循环体内&#xff0c;操作之前进行!判定。…

牛客2024 【牛客赛文X】春招冲刺 ONT34 加油站【中等 贪心 C++、Java、Go、PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/a013a0691a0343aeb262ca1450d2fe4e 思路 贪心&#xff1a; 如果总的gas小于走完全程的cost&#xff0c;直接返回-1不需要再找了 如果确保了可以走完一圈之后&#xff0c;那么从index 0开始找&#xff0c; 当g…

java-生产者消费者

目录 1.生产者消费者1.1生产者和消费者模式概述【应用】1.2生产者和消费者案例【应用】1.3生产者和消费者案例优化【应用】1.4阻塞队列基本使用【理解】1.5阻塞队列实现等待唤醒机制【理解】 1.生产者消费者 1.1生产者和消费者模式概述【应用】 概述 生产者消费者模式是一个十…