Spark的安装配置及集群搭建

Spark的本地安装配置:

我们用scala语言编写和操作spark,所以先要完成scala的环境配置

1、先完成Scala的环境搭建

下载Scala插件,创建一个Maven项目,导入Scala依赖和插件

 scala依赖

<dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.11.12</version>
        </dependency>

        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>2.11.12</version>
        </dependency>

        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-reflect</artifactId>
            <version>2.11.12</version>
        </dependency>

scala插件

<build>
        <plugins>
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>

    </build>

2、导入spark-core依赖

<!--导入spark-core依赖-->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.4.5</version>
        </dependency>

3、使用spark-->(代码操作)

以下是用spark处理单词统计任务

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Demo1WordCount {
  def main(args: Array[String]): Unit = {
    //1、创建spark的执行环境
    val conf = new SparkConf()
    //设置运行模式
    conf.setMaster("local")
    conf.setAppName("wc")
    val sc = new SparkContext(conf)

    //2、读取数据
    //RDD:弹性的分布式数据集(相当于List)
    val linesRDD: RDD[String] = sc.textFile("data/lines.txt")

    //一行转换多行
    val wordsRDD: RDD[String] = linesRDD.flatMap(_.split(","))

    val kvRD: RDD[(String, Int)] = wordsRDD.map(word => (word, 1))

    //统计单词的数量
    val countRDD: RDD[(String, Int)] = kvRD.reduceByKey((x, y) => x + y)

    //保存结果
    countRDD.saveAsTextFile("data/word_count")

  }
}

搭建Spark独立集群:

## 1、独立集群

> Spark自己搭建一个资源管理框架,不依赖yarn

### 1、上传解压配置环境变量

```shell
# 家业安装包
tar -xvf spark-3.1.3-bin-hadoop3.2.tgz -C /usr/local/soft
# 重命名解压目录
mv spark-3.1.3-bin-hadoop3.2/ spark-3.1.3

# 配置环境变量
vim /etc/profile

export SPARK_HOME=/usr/local/soft/spark-3.1.3
export PATH=$PATH:$SPARK_HOME/bin

source  /etc/profile
```

### 2、修改配置文件

```shell
# 1、修改spark-env.sh
cd /usr/local/soft/spark-3.1.3/conf/
mv spark-env.sh.template spark-env.sh
# 在spark-env.sh中增加配置
export HADOOP_CONF_DIR=/usr/local/soft/hadoop-3.1.1/etc/hadoop
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=4G
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171


# 2、修改workers
mv workers.template workers

# 增加配置
node1
node2


# 3、同步到所有节点
cd /usr/local/soft/
scp -r spark-3.1.3/ node1:`pwd`
scp -r spark-3.1.3/ node2:`pwd`
```

### 3、启动集群

```shell
# 启动集群
cd /usr/local/soft/spark-3.1.3/sbin
./start-all.sh 

# spark webUI
http://master:8080
```

### 4、提交任务

```shell
# 进入样例代码所在的目录
/usr/local/soft/spark-3.1.3/examples/jars

# 提交任务
spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi spark-examples_2.12-3.1.3.jar 100


# 代码提交到集群运行方式
#1、注释local
#2、修改数据路径,改成HDFS的路径,输入输出目录都需要修改i
#3、将代码打包上传到服务器运行
# 提交任务
spark-submit --master spark://master:7077 --class com.company.core.Demo15Submit spark-1.0-SNAPSHOT.jar
```

## 2、Spark on Yarn

> yarn是一个分布式资源管理管家,负责管理集群的CPU和内存

### 1、关闭独立集群

```shell
# 进入spark脚本目录
cd /usr/local/soft/spark-3.1.3/sbin
./stop-all.sh
```

### 2、启动hadoop

```shell
start-all.sh
```

### 3、提交任务

```shell
# --num-executors 2: 指定Executor的数量
# --executor-cores 1 : 指定executor的核数
# --executor-memory 2G :指定executoe的内存

# yarn client模式
# 1、会在本地打印详细的执行日志,可以看到全部执行错误日志
# 2、一般用于测试使用,如果大量的任务都使用client模式去提交,会导致本地节点压力大
# 3、client模式Driver、在本地启动,所以再本地可以看详细日志
spark-submit --master yarn --deploy-mode client --num-executors 2 --executor-cores 1 --executor-memory 2G --class com.company.core.Demo15Submit spark-1.0-SNAPSHOT.jar


# yarn cluster模式
# 1、在本地不打印详细的执行日志,只能看到部分错误日志
# 2、任务执行报错会重试一次
# 3、一般用于上线使用,Driver是随机节点,不会导致某一个系欸但压力大
# 4、Driver不在本地启动,所在再本地看不到详细日志
spark-submit --master yarn --deploy-mode cluster  --num-executors 2 --executor-cores 1 --executor-memory 2G  --class com.company.core.Demo15Submit spark-1.0-SNAPSHOT.jar

# 获取yarn任务的详细日志
yarn logs -applicationId  [appid]


spark-submit --master yarn --deploy-mode client  --class org.apache.spark.examples.SparkPi spark-examples_2.12-3.1.3.jar 100
```

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【途牛旅游网-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

Java多线程--实现跑马小游戏

线程的实现方式 继承Thread类&#xff1a;void run()方法没有返回值&#xff0c;无法抛异常实现Runnable接口&#xff1a;void run()方法没有返回值&#xff0c;无法抛异常实现Callable接口&#xff1a;V call() throws Exception 返回结果&#xff0c;能够抛异常 实现Callab…

《Windows PE》6.4.2 远程注入DLL

实验四十七&#xff1a;远程注入DLL 写一个窗口程序&#xff0c;将一个dll通过远程注入的方法&#xff0c;注入到第三章的示例程序PEHeader.exe中&#xff0c;支持32位和64位PE。 ●dll.c /*------------------------------------------------------------------------FileNam…

【实战案例】JSR303统一校验与SpringBoot项目的整合

前后端分离项目中&#xff0c;当前前端请求后端接口的时候通常需要传输参数&#xff0c;对于参数的校验应该在哪一步进行校验&#xff1f;Controller中还是Service中&#xff1f;答案是都需要校验&#xff0c;只不过负责的板块不一样&#xff0c;Controller中通常校验请求参数的…

OpenCV高级图形用户界面(6)获取指定窗口中图像的矩形区域函数getWindowImageRect()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 提供窗口中图像的矩形区域。 该函数 getWindowImageRect 返回图像渲染区域的客户端屏幕坐标、宽度和高度。 函数原型 Rect cv::getWindowImage…

上海亚商投顾:沪指失守3200点 房地产板块集体下挫

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 市场全天冲高回落&#xff0c;沪指尾盘跌超1%&#xff0c;失守3200点关口。网络安全概念开盘大涨&#xff0c;…

Kaggle竞赛的流程 —— 手把手讲述如何完成一次kaggle比赛

Kaggle竞赛的工作流程&#xff1a; 1、加入竞赛&#xff1a; 看一下竞赛的描述&#xff0c;了解具体任务和数据集的情况之后&#xff0c;如果比较感兴趣这个比赛。点击Join Competition按钮&#xff0c;接受竞赛规则后&#xff0c;就可以访问比赛数据集啦。如下图所示&#xf…

08_实现 reactive

目录 编写 reactive 的函数签名处理对象的其他行为拦截 in 操作符拦截 for...in 循环delete 操作符 处理边界新旧值发生变化时才触发依赖的情况处理从原型上继承属性的情况处理一个对象已经是代理对象的情况处理一个原始对象已经被代理过一次之后的情况 浅响应与深响应代理数组…

Leetcode 跳跃游戏 二

核心任务是找出从数组的起点跳到终点所需的最小跳跃次数。 这段代码解决的是“跳跃游戏 II”&#xff08;Leetcode第45题&#xff09;&#xff0c;其核心任务是找出从数组的起点跳到终点所需的最小跳跃次数。 class Solution {public int jump(int[] nums) {//首先处理特殊情…

LabVIEW提高开发效率技巧----时序分析

一、什么是时序分析&#xff1f; 时序分析是优化LabVIEW程序性能的重要步骤。它通过分析程序各个部分的执行时间&#xff0c;帮助开发者找到程序运行中的瓶颈&#xff0c;并进行有针对性的优化。在LabVIEW中&#xff0c;Profile Performance and Memory工具是进行时序分析的关…

MySQL 免密登录的几种配置方式

文章目录 MySQL 免密登录的几种配置方式使用操作系统用户实现免密登录具体步骤&#xff1a;Step 1: 修改 MySQL 配置文件Step 2: 重启 MySQL 服务Step 3: 使用系统用户登录 MySQL优点&#xff1a;缺点&#xff1a; 使用 mysql_config_editor 配置免密文件具体步骤&#xff1a;S…

晶体与晶振的区别

概述 晶振是有源晶振的简称&#xff0c;又叫振荡器。英文名称是oscillator。 晶体则是无源晶振的简称&#xff0c;也叫谐振器。英文名称是crystal&#xff0c;电路上简称为XTAL。 无源晶振&#xff08;晶体&#xff09;&#xff1a;需要借助时钟电路才能产生振荡信号。 有源…

基于SpringBoot网上超市的设计与实现(论文+源码)_kaic

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此超市商品销售信…

Oracle DECODE 丢失时间精度的原因与解决方案

在Oracle数据库中&#xff0c;DECODE 函数是一个非常实用的条件处理函数&#xff0c;通常用于替代简单的 CASE WHEN 语句。它根据给定的值列表进行匹配&#xff0c;如果匹配成功则返回相应的值。如果不匹配&#xff0c;返回一个默认值。 问题描述 SELECT DECODE(-21, -1, NU…

Python酷库之旅-第三方库Pandas(157)

目录 一、用法精讲 716、pandas.Timedelta.view方法 716-1、语法 716-2、参数 716-3、功能 716-4、返回值 716-5、说明 716-6、用法 716-6-1、数据准备 716-6-2、代码示例 716-6-3、结果输出 717、pandas.Timedelta.as_unit方法 717-1、语法 717-2、参数 717-3、…

MyBatis 框架搭建时依赖包引入异常

MyBatis 框架搭建时依赖包引入异常 问题&#xff1a;原因&#xff1a;解决办法&#xff1a; 问题&#xff1a; 在基于idea环境中学习搭建mybatis框架时&#xff0c;在maven工程的pom.xml文件中引入的 junit及mysql依赖包后&#xff0c;出现驼色阴影&#xff0c;提示信息如下图&…

白平衡之基于 Green 通道的白平衡算法

免责声明&#xff1a;本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下&#xff0c;作者不对因使用本文内容而导致的任何直接或间接损失承担责任&#xff0c;包括但不限于数据丢失、业务中断或其他经济…

IP报文格式、IPv6概述

IPv4报文格式 IPv4报文首部长度至少为20字节(没有可选字段和填充的情况下)&#xff0c;下面来逐一介绍首部各个字段的含义 Version版本&#xff1a;表示采用哪一种具体的IP协议&#xff0c;对于IPv4来说该字段就填充4以表示&#xff0c;如果是IPv6就填充6IHL首部长度&#xff…

HTML5实现古典音乐网站源码模板2

文章目录 1.设计来源1.1 主界面1.2 古典音乐界面1.3 著名人物界面1.4 古典乐器界面1.5 历史起源界面1.6 联系我们界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&a…

3D Gaussian Splatting前向渲染代码解读

文章目录 3D Gaussian Splatting前向渲染简介3DGS前向渲染流程伪代码 代码解读栅格化主流程初始化常量和变量预处理生成Idx为排序做准备查找最高有效位device级别的并行基数排序排序后处理渲染 预处理获取3D高斯点的id&#xff0c;变量初始化检查3D高斯点是否在视锥体范围内计算…