摸鱼大数据——Spark基础——Spark基本介绍

1、Spark是什么

1.1 定义

Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎。

1.2 Spark与MapReduce对比

MapReduce架构回顾

  • MapReduce的主要缺点:

    • 1- MapReduce是基于进程进行数据处理,进程相对线程来说,在创建和销毁的过程比较消耗资源,并且速度比较慢

    • 2- MapReduce运行的时候,中间有大量的磁盘IO过程。也就是磁盘数据到内存,内存到磁盘反复的读写过程

    • 3- MapReduce只提供了非常低级(底层)的编程API,如果想要开发比较复杂的程序,那么就需要编写大量的代码。

  • Spark相对MapReduce的优点:

    • 1- Spark底层是基于线程来执行任务

    • 2- 引入了新的数据结构——RDD(弹性分布式数据集),能够让Spark程序主要基于内存进行运行。内存的读写数据相对磁盘来说,要快很多

    • 3- Spark提供了更加丰富的(顶层)编程API,能够非常轻松的实现功能开发

1.3 线程和进程对比

  • 线程的创建和销毁,比进程会更加的快速,以及更加的节省资源

  • 进程很难共享内存中的数据;而同个进程中的线程可以共享内存中的数据

进程(Process)和线程(Thread)是操作系统中用于执行程序的两个基本概念,它们之间有几个重要的区别:
​
    资源分配:
        进程是程序在执行时分配资源的基本单位,每个进程拥有独立的内存空间、文件描述符、堆栈等资源。
        线程是进程内的执行单元,共享同一进程的资源,包括内存空间、文件描述符等。不同线程之间可以共享全局变量等数据。
​
    并发性:
        进程之间是相互独立的,每个进程都有自己的执行流程,进程之间的通信需要通过特定的机制,如进程间通信(Inter-Process Communication,IPC)。
        线程是在同一个进程内部运行的,它们共享相同的地址空间,可以直接访问进程的资源,因此线程之间的通信更加方便和高效。
​
    切换开销:
        由于进程拥有独立的资源空间,进程切换的开销较大,包括保存和恢复进程的上下文、更新页表等操作。
        线程共享相同的资源空间,因此线程切换的开销较小,通常只需要保存和恢复线程的上下文即可。
​
    并发性控制:
        进程之间的并发性控制相对简单,由操作系统负责管理进程的调度和资源分配。
        线程之间的并发性控制更加复杂,需要程序员显式地使用同步机制(如互斥锁、信号量等)来保证线程之间的数据一致性和访问的互斥性。
​
总的来说,进程是操作系统中资源分配的基本单位,而线程是操作系统中执行调度的基本单位。进程之间相互独立,线程之间共享同一进程的资源,因此线程之间的通信和同步更加方便和高效

2、Spark的发展

3、Spark特点

快速记忆: speed, easy use , general , runs everywhere

  • 高效性

    • 计算速度快

      • 提供了一个全新的数据结构RDD(弹性分布式数据集)。整个计算操作,基于内存计算。当内存不足的时候,可以放置到磁盘上。整个流程是基于DAG(有向无环图)执行方案。

      • Task线程完成计算任务执行

  • 易用性

    • 支持多种语言开发 (Python,SQL,Java,Scala,R),降低了学习难度

  • 通用性

    • 在 Spark 的基础上,Spark 还提供了包括Spark SQL、Spark Streaming、MLlib 及GraphX在内的多个工具库(模块),我们可以在一个应用中无缝地使用这些工具库。

  • 兼容性(任何地方运行)

    • 支持三方工具接入

      • 存储工具

        • hdfs

        • kafka

        • hbase

      • 资源调度

        • yarn

        • Kubernetes(K8s容器)

        • standalone(spark自带的)

      • 高可用

        • zookeeper

    • 支持多种操作系统

      • Linux

      • windows

      • Mac

4、Spark框架模块

  • Spark Core API:实现了 Spark 的基本功能。包含RDD、任务调度、内存管理、错误恢复、与存储系统交互等模块。数据结构RDD。

  • Spark SQL:我们可以使用 SQL处理结构化数据。数据结构:Dataset/DataFrame = RDD + Schema。

  • Structured Streaming:基于Spark SQL进行流式/实时的处理组件,主要处理结构化数据。

  • Streaming(Spark Streaming):提供的对实时数据进行流式计算的组件,底层依然是离线计算,只不过时间粒度很小,攒批。

  • MLlib:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等。

  • GraphX:Spark中用于图计算的API,性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

困了就倒头睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值