Spark学习(一)---Spark简介和运行环境

news2024/11/27 10:35:03

文章目录

  • 1.Spark介绍
      • 1.1 Spark核心模块
      • 1.2 使用Spark写一个WordCount
      • 1.2 Spark运行环境
        • 1.2.1 Local模式
        • 1.2.2 Standalone 模式
        • 1.2.3 高可用模式(HA)模式
        • 1.2.4 Yarn模式

1.Spark介绍

Hadoop中的MapReduce框架在设计之初并不是为了满足循环迭代式数据流处理,因此在多并行运行的数据可复用场景(如:机器学习,图像挖掘算法、交互式数据挖掘算法)中存在诸多效率问题。所以Spark就是在传统的MR计算框架的基础上,利用其计算过程的优化,从而大大加快了数据分析、挖掘的运行和读写速度,并且将计算单元缩小到更适合并行计算和重复使用的RDD模型。

Spark和Hadoop的根本差异就在于多个作业(job)之间的数据通信问题:Spark多个作业之间数据通信是基于内存的,而Hadoop框架是基于磁盘的。

1.1 Spark核心模块

在这里插入图片描述

Spark Core
Spark Core中提供了Spark最基本和核心的功能,Spark其他的功能都是在Spark Core的基础上进行扩展的。
Spark SQL
Spark SQL是Spark用来操作结构化数据的组件,通过Spark SQL,用户可以使用SQL或者HQL来查询数据
Spark Streaming
Spark Streaming是Spark平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的API
Spark MLlib
Spark MLlib是Spark提供的一个机器学习的算法库,MLlib不仅提供了模型评估,数据导入等额外的功能,还提供了一些机器学习的原语
Spark GraphX
GraphX是Spark面向图计算提供的框架和算法库

1.2 使用Spark写一个WordCount

package com.atguigu.bigdata.spark.core

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

class Spark_demo_WordCount {

}

object Spark_demo_WordCount{
  def main(args: Array[String]): Unit = {
    System.setProperty("hadoop.home.dir", "E:\\BigDataLearn\\hadoop-3.2.3")
    //1.建立和Spark框架的连接
    val sparkConf=new SparkConf().setMaster("local").setAppName("WordCount")
    val sc = new SparkContext(sparkConf)
    //2.执行业务操作

//    //读取数据,一行一行的获取数据
//    val lines = sc.textFile("datas")
//
//    //将一行一行的数据拆分(扁平化操作)
//    val words = lines.flatMap((lines: String) =>
//      lines.split(" ")
//    )
//
//    //将数据根据单词进行分组,便于统计
//    val wordGroup = words.groupBy((word: String) => word)
//
//    //对分组后的数据进行转化
//    val value = wordGroup.map((tuple) => {
//      (tuple._1, tuple._2.size)
//    })
//
//
//    //将转换结果采集到控制台打印
//    for( e<-value)
//    {
//      println(e)
//    }


    //wordcount不同的实现
    val lines = sc.textFile("datas")

    val words = lines.flatMap((line: String) => line.split(" "))

    val wordTuple = words.map((w:String)=>{
      (w,1)
    })
    val wordGroup = wordTuple.groupBy((tuple) => {
      tuple._1
    })
    for(e<-wordGroup)
      {
        println(e)
      }


    val value = wordGroup.map {
      case (key:String, list:Iterable[(String,Int)]) => {
        list.reduce((t1, t2) => {
          (t1._1, t1._2 + t2._2)
        })

      }
    }


    val tuples = value.collect()
    for(e<-tuples)
      {
        println(e)
      }

    //3.spark关闭连接
    sc.stop()
  }
}

1.2 Spark运行环境

Spark作为一个数据处理框架和计算引擎,被设计在所有的集群环境中运行,在国内工作中主流的环境为yarn,不过逐渐容器式的环境也慢慢流行起来。
在这里插入图片描述

1.2.1 Local模式

所谓的Local模式,就是不需要其他任何节点资源就可以在本地执行Spark代码的环境,一般用于教学,调试和演示等。

1.2.2 Standalone 模式

local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的
集群中去执行,这里我们来看看只使用 Spark 自身节点运行的集群模式,也就是我们所谓的
独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的 master-slave 模式。
在这里插入图片描述

1.2.3 高可用模式(HA)模式

所谓的高可用是因为当前集群中的 Master 节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个 Master 节点,一旦处于活动状态的 Master发生故障时,由备用 Master 提供服务,保证作业可以继续执行。这里的高可用一般采用Zookeeper 设置

1.2.4 Yarn模式

独立部署(Standalone)模式由 Spark 自身提供计算资源,无需其他框架提供资源。这
种方式降低了和其他第三方资源框架的耦合性,独立性非常强。但是你也要记住,Spark 主
要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,所以还是
和其他专业的资源调度框架集成会更靠谱一些。所以接下来我们来学习在强大的 Yarn 环境
下 Spark 是如何工作的(其实是因为在国内工作中,Yarn 使用的非常多)。

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

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

相关文章

DMDSC共享存储集群启动、关闭及介绍

DMDSC介绍 DM 共享存储数据库集群&#xff08;DMDSC&#xff09;。DM共享存储数据库集群&#xff0c;允许多个数据库实例同时访问、操作同一数据库&#xff0c;具有高可用、高性能、负载均衡等特性。DMDSC 支持故障自动切换和故障自动重加入&#xff0c;某一个数据库实例故障后…

FastDFS【FastDFS环境搭建_Linux、FastDFS指令、复习】(二)-全面详解(学习总结---从入门到深化)

目录 FastDFS环境搭建_Linux FastDFS指令 复习&#xff1a; FastDFS环境搭建_Linux 下载安装gcc 安装方式为yum安装&#xff08;需网络&#xff09;&#xff1a; yum install gcc-c perl-devel pcre-devel openssl-devel zlib-devel wget 下载安装FastDFS wget https:/…

leetcode42. 接雨水(单调栈-java)

接雨水 leetcode42. 接雨水题目描述单调栈解题代码演示 单调栈专题 leetcode42. 接雨水 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water 题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图…

一章让你明白什么是权限

目录 &#x1f30f;什么是Linux 权限&#xff1f; &#x1f30f;文件&#xff1a; &#x1f30f;目录&#xff1a; &#x1f30f;查看文件的权限 &#x1f30f;权限针对的三类用户&#xff1a; &#x1f30f;ls -l 命令显示的意义 &#x1f30f;修改文件的属性和权限 …

uni-app获取系统信息(手机牌子、手机型号、屏幕宽度、屏幕高度)

uni.getSystemInfo({success(res) {console.log(res.brand) //手机牌子console.log(res.model) //手机型号console.log(res.screenWidth) //屏幕宽度console.log(res.screenHeight) //屏幕高度}) .exec()}}); 如下 官网链接&#xff1a;系统信息的概念 | uni-app官网

基于Java学生作业管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

机器学习面试题 - 模型评估1

目录标题 1、准确率的局限性广告投放问题&#xff1a; 2、精确率与召回率的权衡2.1 案例2.2 P-R曲线 3、平方根误差4、ROC曲线5、如何绘制ROC6、如何计算AUC7、ROC曲线相比P-R曲线有什么特点&#xff1f; 模型评估主要分为离线评估和在线评估两个阶段。 针对分类、排序、回归、…

uni_app 微信小程序 苹果手机 边框显示不全

![在这里插入图片描述](https://img-blog.csdnimg.cn/3a4c4ab1a146444c84c72d360a057c01.png 解决方案&#xff1a; 原因&#xff1a;是因为我们在设置边框的时候设置的rpx &#xff0c;自适应会自动换算px, 两者之间的比例一般都是1.5-2之间&#xff0c;对于边框 border 来说…

指定专业和城市|超声科医生赴美国佐治亚理工学院自费访学

从事超声医学的Y医生拟自费赴美国访学&#xff0c;希望在亚特兰大附近&#xff0c;且专业相符。最终我们落实了佐治亚理工学院的职位&#xff0c;专业及地理位置都符合申请人的预期目标。 Y医生背景&#xff1a; 申请类型&#xff1a;自费访学 工作背景&#xff1a;三甲医院医…

QT 实现windows系统文件拖拽

效果预览&#xff1a; 2023-07-05 14-29-11 功能描述&#xff1a; 1.首先实现了根据文件的路径获取了文件的信息&#xff0c;通过 QFileIconProvider 获取图标信息&#xff0c;并在界面上进行展示。 2.dropEvent 是实现拖拽功能的核心。重新此事件函数&#xff0c;并将窗口设…

vue实现动态URL

最近在项目上要用到动态baseURL,用的是vuex存储&#xff0c;具体实现如下 1.拦截器中重写baseURL 但是需要注意的是这个url必须符合URL格式&#xff0c;所以前端校验是必须的 2.前端校验 const validateUrl (rule, value, callback) > {if (isBlank(value)) {callback(ne…

【技巧】快速提取PowerPoint文件的图片

如果你看到PPT里的图片或背景素材比较好看&#xff0c;想要保存下来&#xff0c;你会怎么做呢&#xff1f; 可能很多人首先想到的就是选择图片后另存下来&#xff0c;或者使用截图保存&#xff0c;这也是一种方法&#xff0c;但如果图片很多的话&#xff0c;就十分繁琐和费时间…

MySQL用户与权限管理

用户与权限管理 1. 用户管理1.1 创建用户1.2 修改用户1.3 删除用户1.4 用户密码相关1.4.1 密码修改1.4.2 密码管理机制 2. 权限管理2.1 授予权限原则2.2 查看权限2.3 授予权限2.4 收回权限 3. 权限表4. 访问控制 1. 用户管理 MySQL用户分为root用户和普通用户&#xff1b;root…

大模型时代的模型运维与部署:LLMops

文章目录 1 LLMOps介绍1.1 关联定义1.2 LLMOps 与 MLOps 2 LLMOps实现步骤2.1 数据管理2.1.1 数据清洗和预处理技术2.1.2 数据标记和注释2.1.3 数据存储、组织和版本控制2.1.4 数据合规性检验 2.2 基础模型的选择2.3 迭代和提示管理2.4 测试评估2.5 部署2.6 监控 3 参考文献 1 …

万物的算法日记|算法学习 [java 二分法 acwing789.数的范围]

算法语言&#xff1a;java 题目来源&#xff1a;acwing.789 文章目录 题目描述题解五点七边的二分法第一个细节 l&#xff0c;r 边界问题为什么 l 边界初始化为 -1&#xff1f;同理为什么 r 边界初始化为 N而不是N-1 ?第二个细节 m是否始终处于[0,N)以内第三个细节&#xff0c…

【UnityDOTS 四】System的理解

System的理解 前言 System主要用于在ECS中进行逻辑处理。它具有自己的声明周期&#xff0c;主要分为两类&#xff1a;ISystem,SystemBase。前一个是非托管内存访问&#xff0c;后一个是托管内存访问。 一、Systemg认知 System在主线程运行&#xff0c;可以在代码中使用Job系…

基于php电影动漫在线观看系统 (源码➕数据库)

本系统主要是为用户提供一个动漫视频观看的平台&#xff0c;系统分为两个角色&#xff0c;一个是用户角色&#xff0c;另一个是管理员角色&#xff0c;其中用户角色可查看动漫视频的分类&#xff0c;查看动漫视频的详情&#xff0c;点击播放动漫视频&#xff0c;对动漫视频进行…

如何使用 OpenCV 去除图像背景

文末附源代码的免费下载链接 在本教程中,我们将学习如何使用 OpenCV 使用一种名为背景减法的技术来去除视频中的背景。 背景扣除是计算机视觉中用于检测视频中移动物体的常用技术。对于安全、监视、交通监控等来说,这是一种非常有用的技术。 背景减法的基本思想是通过从前景…

VirtualBox安装Ubuntu(22.04.2)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Hello mysql】 数据库基础

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;简单的介绍mysql相关的一些基础知识和在Linux环境下的安装 让大家对于mysql有一个初步的认知 数据库基础 数据库基础数据库定义数据库再理解软件角度文件角度总结 主流数据库mysql安装卸载不要的环境获取mysql官方yum源安装…