Spark总结1

Spark 同时被 2 个专栏收录
10 篇文章 0 订阅
1 篇文章 0 订阅

spark框架体系

先通过flume采集数据,然后可以用MapReduce对数据进行清洗和分析,之后存储到HBase,也相当于存储到HDFS中。

hadoop优缺点

优点
1.高可靠性:Hadoop按位存储和处理数据的能力强大;
2. 高扩展性:Hadoop是在高可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中;
3.高效性:Hadoop能在节点中动态移动数据,并保证各个节点动态平衡,因此处理速度非常快;
3. 高容错性:Hadoop能够自动保存数据多个副本,并能自动将失败的任务重新分配;

缺点
1.不适合低延迟数据访问
2.无法高效存储大量小文件
3.不支持多用户写入及修改文件

Spark和MR对比

MR中的迭代:
MR中的迭代
Spark中的迭代:
在这里插入图片描述
1.Spark吧运算的中间结果放在内存,迭代计算效率更高;mapreduce中间数据需要保存在磁盘,有这样的磁盘io操作,影响性能。
2.Spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,某一部分数据丢失或者出错,可以通过整个数据集计算流程的血缘关系来实现重建;而mapreduce出错了只能重新计算,成本较高。
3.Spark更加通用,Spark提供了transformation和action两大类的多个功能api,另外还有流失处理sparkstreaming模块、图计算GraphX等等;mapreduce只提供了map和reduce两种操作,流计算及其他模块的支持比较缺乏。
4.Spark框架和生态更加复杂,首先有RDD、血缘lineage、执行时的有向无环图DAG、stage划分等等,很多时候spark作业都需要根据不同业务场景进行调优以达到性能要求;mapreduce较为简单,对性能要求也相对较弱,但是运行稳定,适合长期后台运行。

Spark简介

Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。项目是用Scala进行编写。

目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLib、SparkR等子项目,Spark是基于内存计算的大数据并行计算框架。除了扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。Spark 适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询、流处理。通过在一个统一的框架下支持这些不同的计算,Spark 使我们可以简单而低耗地把各种处理流程整合在一起。而这样的组合,在实际的数据分析 过程中是很有意义的。不仅如此,Spark 的这种特性还大大减轻了原先需要对各种平台分 别管理的负担。

Spark内置项目

在这里插入图片描述
Spark Core:实现了Spark基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core还包含了对弹性分布式数据集RDD的定义。
Spark SQL:是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用SQL或者Apache Hive版本的SQL方言(HQL)来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。
Spark Streaming:是Spark提供的对实时数据进行流式计算的组件。提供了用来操作数据流的API,并且与Spark Core中的RDD API高度对应。
Spark MLlib:提供常见的机器学习功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。
集群管理器:Spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器,叫作独立调度器。

Spark特点


与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流。

易用
Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

兼容性
Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用Spark。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。

Saprk安装包下载

现在使用的版本是spark2.2.0需要的hadoop环境最好是2.7(含)版本以上,可以在课程中讲解知识点的时候所以下spark1.6.3中的一些概念穿插讲解

另外的两种下载方式:

http://archive.apache.org/dist

https://github.com/apache/spark

Spark运行模式

Local 多用于本地测试,如在eclipse,idea中写程序测试等。
Standalone 是Spark中自带的一个资源调度框架,它支持完全分布式。
On Yarn 生态圈中的一个资源调度框架,Spark也是可以基于Yarn来计算的。
Mesos 资源调度框架。

Spark程序执行

提交Spark提供的利用蒙特·卡罗算法求π的例子,其中100这个参数是计算因子

在spark安装目录下执行这个例子

bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://hadoop01:7077 examples/jars/spark-examples_2.11-2.2.0.jar 10

在这里插入图片描述
Standalone模式下,集群启动时包括Master与Worker,其中Master负责接收客户端提交的作业,管理Worker

名词解释

1.Standalone模式下集群中存在的角色

Master:Standalone模式中主控节点,负责接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor

Worker:Standalone模式中slave节点上的守护进程,负责管理本节点的资源,定期向Master汇报心跳,接收Master命令,启动Driver和Executor。

Driver:一个Spark作业运行时包括一个Driver进程,也是作业的主进程

Executor:即真正的执行作业的地方,一个集群一般包含多个Executor,每个Executor接收Driver的命令Launch Task,一个Executor可以执行一到多个Task。

2.作业相关的名词解释

Stage:一个Spark作业一般包含一到多个Stage。

Task:一个Stage包含一到多个Task,通过多个Task实现并运行的功能。

DAGScheduler:实现将Spark作业分解成一到多个Stage,每个Stage根据RDD的Partition个数决定Task的个数,然后生成

作业执行流程描述

1.客户端启动后直接运行用户程序,启动Driver相关的工作:DAGScheduler和BlockManagerMaster等。
2.客户端的Driver向Master注册。
3.Master还会让Worker启动Exeuctor。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动ExecutorBackend进程。
4.ExecutorBackend启动后会向Driver的SchedulerBackend注册。Driver的DAGScheduler解析作业并生成相应的Stage,每个Stage包含的Task通过TaskScheduler分配给Executor执行。
5.所有stage都完成后作业结束。

在启动任务的时候并没有指定分配资源,而是有多少资源就使用了多少资源我们在跑任务的时候是可以指定资源的,可以在指定使用核心和资源

./spark-submit \
> --class org.apache.spark.examples.SparkPi \
> --master spark://hadoop01:7077 \
> --executor-memory 512m \
> --total-executor-cores 2 \
> /opt/software/spark-2.2.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.2.0.jar 100

--executor-memory 设置内存 --total-executor-cores 核心数

SparkShell

spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用Scala编写Spark程序。spark-shell程序一般用作Spark程序测试练习来用。spark-shell属于Spark的特殊应用程序,我们可以在这个特殊的应用程序中提交应用程序

spark-shell启动有两种模式,local模式和cluster模式,分别为
local模式:

spark-shell

local模式仅在本机启动一个SparkSubmit进程,没有与集群建立联系,虽然进程中有SparkSubmit但是不会被提交到集群中
在这里插入图片描述

Cluster模式:

spark-shell \
--master spark://hadoop01:7077 \
--executor-memory 512m \
--total-executor-cores 1

后两个命令不是必须的 --master这条命令是必须的(除非在jar包中已经指可以不指定,不然就必须指定)

退出shell
千万不要ctrl+c spark-shell 正确退出 :quit 千万不要ctrl+c退出 这样是错误的 若使用了ctrl+c退出 使用命令查看监听端口 netstat - apn | grep 4040 在使用kill -9 端口号 杀死即可

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值