Spark概述

Spark介绍

Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,用来构建大型的、低延迟的数据分析应用程序。它扩充了MapReduce的计算模型。
spark的一个主要特点是基于内存进行计算,即使依赖磁盘进行复杂的运算,Spark依然比MapReduce更加高效。

Spark容纳了其它分布式系统拥有的功能(批处理、流处理、交互式处理、机器学习等),所有的大数据处理场景都可以在Spark中一栈式解决,降低了维护成本。

Spark组件

在这里插入图片描述

  • Spark Core:
    包含Spark的基本功能,包含任务调度、内存管理、容错机制等。内部定义了RDD(弹性分布式数据集)以及操作RDD的API。
    Spark Core为其它组件提供底层的服务。
  • Spark SQL:
    Spark处理结构化数据的库,类似Hive、MySql。
    一般用来做报表统计。
  • Spark Streaming:
    实时数据流处理组件,类似Strom,Spark Streaming提供了API来操作实时流数据。
    一般用来从Kafka或者其他的消息队列中接收数据做实时统计。
  • Mlib:
    包含通用机器学习功能的包,Machine learning lib。包含分类、聚类、回归等,还包括模型评估和数据导入。
  • Graphx:
    处理图的库(例如,社交网络图),并进行图的并行计算。和Spark Streaming,Spark SQL一样,它也继承了RDD API。
    它提供了各种图的操作,和常用的图算法,例如PageRank算法。
  • Cluster Manager:
    集群管理,Spark自带的集群管理(Standalone)
Spark紧密集成的优点:
  • Spark底层如果优化,基于Spark底层的组件也会得到相应的优化。
  • 节省了各个组件组合使用时的部署、测试等时间
  • 如果Spark增加新的组件时,其它组件可立即共享新组件的功能。

RDD

RDD(Resilient Distributed Datasets) ,弹性分布式数据集, 是分布式内存的一个抽象概念,可以简单的把RDD理解成一个提供了许多操作接口的数据集合,和一般数据集不同的是,虽然叫做数据集,但是RDD中不存储数据,其实际数据分布存储于一批机器中(内存或磁盘中)。RDD的功能还包括容错、集合内的数据可以并行处理等。

RDD五大特性

  • a list of partiotioner
    RDD是由一系列的partition组成的(遵循数据的本地性,一般会把HDFS中的一个block加载为一个partition)

  • a function for partiotioner
    RDD提供的每一个函数实际上是作用在每一个partition上的(每一个partition所在节点都会启动一个进程来运行同一个函数,进行并发计算)

  • a list of dependencies on others RDDS
    RDD是有一系列的依赖关系的,依赖于其他的RDD(作用:计算的容错性,如果数据丢失可以去上一个RDD重新计算得来)

  • optionally ,a partitioner for key-value RDDS
    可选项 分区器是作用在KV格式的RDD上的(如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分区,例如这里自定义的Partitioner是基于key进行分区,那则会将不同partition里面的相同key的数据放到同一个partition里面,相当于MR,控制key分到哪个reduce)

  • Optionally, a list of preferred locations to compute each split on
    可选项 RDD会提供一系列最佳的计算位置(RDD提供了一个方法接口,直接调用这个方法接口,就能拿到这个RDD所有的partition位置)

RDD的三种算子

  • Transformation类算子 : 延迟执行
    Transformation操作会由一个RDD生成一个新的 RDD。Transformation操作是延迟计算的,也就是说从一个RDD转换生成另一个RDD的转换操作不是马上执行,需要等到Actions操作时,才真正开始运算。
  • Action类算子: 一个action类算子就会触发一个job
    Action操作会对 RDD 计算出一个结果,并把结果返回到驱动器程序中,或把结果存储到外部存储系统(如 HDFS)中。
  • 控制类算子:延迟执行

Transformation类算子

map			接收一个函数,对于RDD中的每一个元素执行此函数操作,结果作为返回值。
flatMap		和map差不多,只是对于每个输入项返回结果有多个,类似一对多映射。
filter		通过定义的规则对RDD中的每一个元素进行过滤
join		相当于inner(内连接)
leftOuterJoin 	左连接
rightOuterJoin 	右连接
sortByKey 	根据key进行排序,可以指定分区数和升降序
sortBy 		可以指定根据哪个字段来排序,基于sortByKey实现的
groupByKey 	根据key进行分组
reduceByKey 根据key进行聚合
...

Action类算子

reduce
count
collect
foreach
saveAsTextFile
...

控制类算子

cache 
可以把数据持久化到内存中
注意:
① 控制类算子后不能立即紧跟action类算子
② 缓存单元是Partition
③懒执行,需要action类算子触发执行

persist	
可以指定持久化的级别:
MEMORY_ONLY
DISK_ONLY
MEMORY_AND_DISK
...

Spark在集群中的大致运行流程

Spark提交任务有两种方式,分别是Client和Cluster
Client:
提交命令:这里以SparkPi为例

spark-submit --deploy-mode client --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100

在这里插入图片描述

  1. Client向Master提交一个Application,在本地会启动一个Driver进程
  2. Driver向Master为当前Application申请资源
  3. Master接收到请求之后,会在资源充足的节点上启动Executor进程
  4. Driver分发task到Executor执行

Cluster:
提交命令:这里以SparkPi为例

spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 100

在这里插入图片描述

  1. Client向Master提交一个Application,会在本地启动一个spark-submit进程。
  2. spark-submit为Driver向Master申请资源。Driver进程默认需要1G内存,1core。
  3. Master会随机找一台Worker节点启动Driver进程。
  4. Driver进程启动成功后,spark-submit进程关闭,然后Driver会向Master为当前Application申请资源。
  5. Master接收到请求后,会在资源充足的节点上启动Executor进程。
  6. Driver分发task到Executor执行。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Apache Spark是一个用于大规模数据处理的统一分析引擎,被许多大数据公司支持和应用。一些支持Spark的公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆等。Spark可以在数千个计算节点之间高效地伸缩计算,并支持在各种集群管理器上运行,包括Hadoop YARN、Apache Mesos以及Spark自带的独立调度器。Spark已经被应用于百度的大搜索、直达号、百度大数据等业务,阿里利用GraphX构建了大规模的图计算和图挖掘系统,腾讯拥有世界上已知最大的Spark集群,达到8000台的规模。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [大数据技术之Spark入门(一)概述](https://blog.csdn.net/BAO7988/article/details/103510705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [大数据(十一)--Spark概述](https://blog.csdn.net/skisqibao/article/details/84130389)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值