美文网首页
Spark基础解析

Spark基础解析

作者: TousandeG | 来源:发表于2020-05-25 16:14 被阅读0次

    spark内置模块

    Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。 

    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:提供常见的机器学习(ML)功能的程序库。包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据 导入等额外的支持功能。 

    集群管理器:Spark 设计为可以高效地在一个计算节点到数千个计算节点之间伸缩计 算。为了实现这样的要求,同时获得最大灵活性,Spark支持在各种集群管理器(Cluster Manager)上运行,包括Hadoop YARN、Apache Mesos,以及Spark自带的一个简易调度 器,叫作独立调度器。 

     Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

    重要角色

    Driver(驱动器)

    Spark的驱动器是执行开发程序中的main方法的进程。它负责开发人员编写的用来创建SparkContext、创建RDD,以及进行RDD的转化操作和行动操作代码的执行。如果你是用spark shell,那么当你启动Spark shell的时候,系统后台自启了一个Spark驱动器程序,就是在Spark shell中预加载的一个叫作 sc的SparkContext对象。如果驱动器程序终止,那么Spark应用也就结束了。主要负责:

    1)把用户程序转为作业(JOB)

    2)跟踪Executor的运行状况

    3)为执行器节点调度任务

    4)UI展示应用运行状况

    Executor(执行器)

    Spark Executor是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。主要负责:

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

    2)通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在Executor进程内的,因此任务可以在运行时充分利用缓存数据加速运算。

    Local模式

    Local模式就是运行在一台计算机的模式,通常就是用于在本机上练手和测试使用

    Local[K] 指定用几个线程(worker)来运行计算

    Local[*] cpu最多的cores 来设置线程数


    基本语法

    bin/spark-submit \

    --class <main-class> \

    --master <master-url> \

    --deploy-mode <deploy-mode> \

    --conf <key>=<value> \

    <application-jar> \

    [application-arguments]

    参数说明:

    --master 指定Master的地址,默认为Local

    --class 你的应用启动类(如:org.apache.spark.examples.SparkPi)

    --deploy-mode: 是否发布你的驱动到worker节点(cluster) 或者作为一个本地客户端 (client) (default: client)*

    --conf: 任意的Spark配置属性, 格式key=value. 如果值包含空格,可以加引号“key=value” 

    application-jar: 打包好的应用jar,包含依赖. 这个URL在集群中全局可见。 比如hdfs:// 共享存储系统, 如果是 file:// path, 那么所有的节点的path都包含同样的jar

    application-arguments: 传给main()方法的参数

    --executor-memory 1G 指定每个executor可用内存为1G

    --total-executor-cores 2 指定每个executor使用的cup核数为2个

    运行WordCount程序

    val wc = sc.textFile("input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)

    运行简易流程:

    数据流分析:

    textFile("input") 读取本地文件 input 文件夹下数据;

    flatMap(_.split(" ")) 压平操作,按照空格分隔符将一行数据 映射成一个个单词;

    Map((_,1)) 对每一个元素进行操作,将单词映射成元祖;

    reduceByKey(_+_) 按照key 值进行聚合 相加;

    collect() 将数据收集到Driver端展示

    wordCount 案例分析:

    sc.textFile("input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

    standalone 模式:

    构建一个由Master+Slaves 构成的spark集群,spark 运行在集群中

    standalone 运行模式介绍:

    HA 配置:

    Yarn 运行模式介绍:

    备注:以上内容整理自尚硅谷在线视频资料,此文章仅个人学习整理,不做商业用途。

    相关文章

      网友评论

          本文标题:Spark基础解析

          本文链接:https://www.haomeiwen.com/subject/mlyyahtx.html