spark(入门)知识点总结

1. Spark的概述

Apache Spark is a fast and general-purpose cluster computing system. It provides high-level APIs in Java, Scala, Python and R, and an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming.

Apache Spark是一个快速的、通用的集群计算系统。它提供Java、Scala、Python和R中的高级api,以及一个支持通用执行图的优化引擎。它还支持一组丰富的高级工具,包括用于SQL和结构化数据处理的Spark SQL、用于机器学习的MLlib、用于图形处理的GraphXSpark Streaming

2. 什么是Spark

Spark是一种基于内存的快速、通用、可扩展的大数据分析引擎

3. Spark内置模块

在这里插入图片描述

  • spark core:实现了spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块;spark core中还包含了对弹性分布式数据集(RDD) 的API定义;
  • spark sql:是spark用来操作结构化数据的程序包;对历史数据做交互查询(即席查询:用户根据自己的需求自定义查询);
  • spark streaming:是spark提供的对实时数据进行流式计算的组件;
  • spark mllib:提供常见的机器学习(ML) 功能的程序库;
  • spark graghX图计算(关注事物本身而且关注事物之间的联系);
  • 集群管理器:spark设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计算;为了实现这样的要求,同时获得最大灵活性,spark支持在各种集群管理器(cluster,Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度器,叫做独立调度器。

4. Spark的特点

  • :spark实现了高效的DAG(有向无环图)执行引擎
  • 易用:API较为顶层,方便使用
  • 通用:spark用于批处理,spark sql 用于交互式查询,spark streaming是实时流处理,spark mllib是机器学习,spark graghX是图计算;这些不同类型的处理都可以在同一个应用中无缝使用
  • 兼容性:spark可恶意非常方便的与其他的开源产品进行融合

5. Spark和Hadoop的异同

HadoopSpark
类型基础平台,包含计算,存储,调度分布式计算工具
场景大规模数据集上的批处理迭代计算,交互式计算,流计算
延迟
易用性API较为底层,算法适应性差API较为顶层,方便使用
价格对机器要求低,便宜对内存有要求,相对较贵

6. 运行一个Spark程序

在这里插入图片描述

  • 启动Driver,创建SparkContext;
  • Client提交程序给Driver,Driver想Cluster Manager申请集群资源;
  • 资源申请完毕,在Worker中启动Executor;
  • Driver将程序转化为Tasks,分发给Executor执行。

角色介绍:

  1. Driver:该进程调用spark程序的main方法,并且启动sparkContext

    • 主要负责(作用)?

      把用户程序转为作业(job)

      跟踪Executor的运行状况

      为执行器节点调度任务

      UI展示应用运行状况

    • 启动模式分为两种:

      Client:driver在当前的节点运行,driver需要频繁的和汲取通信占用大量的网络带宽,容易挂掉;好处是方便查看日志,便于调试,多用于学习和测试;

      Cluster:driver在集群的节点运行,挂掉会自动重启。

      • cluster模式如何查看日志?

        聚合日志方式(推荐,比较常用)

        web ui(如果你有精力的话,可以去配一下)

        分散查看(通常不推荐)

    • Diver失败了如何恢复?

      在集群模式下,driver失败了自动重启

      对driver的元数据做checkpoint

  2. Cluster Manager:该进程负责和外部集群工具打交道,申请/释放集群资源

  3. Worker:该进程是一个守护进程,负责启动和管理Executor

  4. Executor:该进程是一个JVM虚拟机,负责进行Spark Task

    • 作用

      负责运行组成Spark应用的任务,并将结果返回给驱动器进程;

      通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储;

      RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

  5. Spark Context:是Spark Core的入口组件,是一个spark程序的入口,是一个元老级API;主要作用是连接集群,创建RDD,累加器,广播变量等。

7. 实时计算框架Spark Streaming,Storm,Flink的区别?

Spark Streaming:批处理

Storm:实时处理;容错性,事务性;单一的框架

Flink:有批处理,实时处理;容错性,事务性;新兴的框架

sparkStreaming是spark里面的一个做流式准实时计算的组件,它使用的数据结构是Dstream,Dstream里面是一连串时间片的rdd。

相比于storm,sparkStreaming在实时性,保证数据不丢失方面都不占用优势;

spark streaming在spark支持者眼中的优势是spark Streaming具有高吞吐性;

sparkStreaming相比于storm的优势是sparkStreaming可以和spark core,spark sql无缝整合。

8. Spark的资源调度

模式Spark安装机器数需启动的进程所属者
本地1Spark
standalone3Master及WorkerSpark
spark on yarn1YARN及HDFSHadoop
spark on mesos/Spark直接连接Mesos/

9. Spark为什么比MapReduce快?

  1. 基于内存计算,减少低效的磁盘交互;
  2. Spark实现了DAG引擎,高效的调度算法,基于DAG;
  3. Spark的容错机制Lineage,精华部分就是DAG和Lineage。

10. Spark为什么比Hadoop快?

  1. 消除了冗余的HDFS读写
  2. 消除了冗余的MapReduce阶段
  3. JVM的优化

Spark不能代替Hadoop,它仅仅是MapReducer的替代方案

11. Spark中spark-submit脚本的参数有哪些?

参数名参数说明
–mastermaster的地址,提交任务到哪里执行
–deploy-mode在本地(client)启动driver或在cluster上启动,默认是client
–class应用程序的主类,仅针对java或scala应用
–name应用程序的名称
–jars用逗号分隔的本地jar包,设置后,这些jar将包含在driver和executor的classpath下
–packages包含在driver和executor的classpath中的jar的maven坐标
–exclude-packages为了避免冲突,而指定不包含的package
–repositories远程repository
–conf PROP=VALUE指定 spark 配置属性的值,例如 --conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"
–properties-file加载的配置文件,默认为conf/spark-defaults.conf
–driver-memoryDriver内存,默认1G
–driver-java-options传给driver的额外的java选项
–driver-library-path传给driver的额外的库路径
–driver-class-path传给driver的额外的类路径
–driver-coresDriver的核数,默认是1。在yarn或者standalone下使用
–executor-memory每个executor的内存,默认是1G
–total-executor-cores所有executor总共的核数。仅仅在mesos或者standalone下使用
–num-executors启动的executor数量。默认为2。在yarn下使用
–executor-core每个executor的核数。在yarn或者standalone下使用

12. Spark on Hive,Hive on Spark

Spark on Hive:hive作为数据源,spark进行计算

Hive on Spark:spark作为hive底层的计算引擎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值