为了账号安全,请及时绑定邮箱和手机立即绑定

Spark从零开始

Terby JAVA开发工程师
难度初级
时长 2小时18分
学习人数
综合评分9.80
56人评价 查看评价
9.8 内容实用
9.7 简洁易懂
9.9 逻辑清晰
  • Spark

    1. Spark简介

      1. Spark是什么:

        1. Spark是一个快速且通用的集群计算平台

    2. Spark的特点

      1. Spark是快速的

        1. Spark扩充了流行的MapReduce计算模型

        2. Spark是基于内存的计算 

      2. Spark是通用的

        1. Spark的设计容纳了其他分布式系统拥有的功能,批处理,迭代式计算,交互查询和流处理等。

        2. 优点:降低了维护成本

      3. Spark是高度开放的

        1. Spark提供了Python, Java, Scala, SQL的API和丰富的内置库。

        2. Spark和其他的大数据工具整合的很好,包括Hadoop, Kafka等

    3. Spark历史

      1.  诞生于2009年,加州大学伯克利分校RAD实验室的一个研究项目,最初是基于Hadoop MapReduce

      2. 发现MapReduce在迭代式计算和交互式上抵消,引入内存存储

      3. 2010年3月份Spark开源

      4. 2011年AMP实验室在Spark上开发高级组件,像Spark Streaming

      5. 2013年转移到了Apache下,不久便成为顶级项目了。

    4. Spark组件:Spark包含多个紧密集成的组件

      1. Spark Core: 

        1. 包含Spark的基本功能,包含任务调度,内存管理,容错机制等。

        2. 内部定义了RDDs(弹性分布式数据集)

        3. 提供了很多API来创建和操作这些RDDs。

        4. 应用场景,为其他组件提供底层的服务。

      2. Spark SQL:

        1. 是Spark处理结构化数据的库,就像Hive SQL,MySQL一样。

        2. 应用场景,企业中用来做报表统计。

      3. Spark Streaming:

        1. 是实施数据流处理的组件,类似Storm。

        2. Spark Streaming提供了API来操作实施流数据。

        3. 应用场景,企业中用来从Kafka接受数据做实时统计。

      4. Mlib:

        1. 一个包含通用机器学习功能的包,Machine learning lib.

        2. 包含分类,聚类,回归等,还包括模型评估,和数据导入。

        3. Milb提供的上面这些方法,都支持集群上的横向扩展。

        4. 应用场景,机器学习。

      5. Graphx:

        1. 是处理图的库(例如,社交网络图),并进行图的并行计算。

        2. 像Spark Streaming, Spark SQL一样, 它也集成了RDD API。

        3. 它提供了各种图的操作,和常用的图算法,例如PangeRank算法。

        4. 应用场景,图计算

      6. Cluster Managers:

        1. 就是集群管理,Spark自带一个集群管理是单独调度器。

        2. 常见集群管理包括Hadoop YARN, Apache Mesos。

      7. 紧密集成的优点:

        1. Spark底层优化了,基于Spark底层的组件,也得到了相应的优化。

        2. 紧密集成,节省了各个组件组合使用时的部署,测试等时间。

        3. 向Spark增加新的组件时,其他组件,可立刻享用新组件的功能。

    5. Spark与Hadoop的比较

      1. Hadoop应用场景

        1. 离线处理

        2. 对时效性要求不高

      2. Spark应用场景

        1. 时效性要求高的场景

        2. 机器学习等领域

      3. 比较

        1. Doug Cutting(Hadoop之父)的观点

          1. 这是生态系统,每个组件都有其作用,各善其职即可。

          2. Spark不具有HDFS的存储能力,要借助HDFS等持久化数据。

          3. 大数据将会孕育出更多的新技术。

    6. Spark安装

      1. Spark运行环境

        1. Spark 是scala写的,运行在JVM上,所以运行环境Java7+

        2. 如果使用Python API,需要安装Python 2.6+或者Python3.4+。

        3. Spark 1.6.2 -Scala 2.10  Spark 2.0.0 -Scala 2.11

      2. Spark下载:

        1. 下载地址:http://spark.apache.org/downloads.html

        2. 搭Spark不需要Hadoop,如有hadoop集群,可下载相应的版本解压。

      3. Spark目录

        1. bin:包含用来和Spark交互的可执行未见,如Spark shell。

        2. core, streaming, python, ...包含主要组件的源代码。

        3. examples包含一些单机的Spark jobs,可以单机运行的例子。

      4. Spark的Shell

        1. Spark的shell使你能够处理分布在集群上的数据。

        2. Spark把数据加载到节点的内存中,因此分布式处理可在秒级完成。

        3. 快速使迭代式计算,实时查询,分析一般能够在shell中完成。

        4. Spark提供了Python shells和Scala shells。

        5. Python Shell:

          1. bin/pyspark

        6. Scala Shell

          1. bin/spark-shell

          2. ```

            1. var lines = sc.textFile("../testfile/helloSpark")

            2. lines.conut()

            3. lines.first()

            4. 修改日志级别log4j.rootCategory=WARN, console

          3. ```

      5. Spark开发环境的搭建

        1. Scala安装:

          1. 下载地址:https://www.scala-lang.org/

        2. IDEA下载

        3. 插件安装:Scala

        4. 搭建开发环境常遇到的问题

          1. 网络问题,导致sbt插件下载失败,解决方法,找一个好的网络环境。

          2. 版本匹配问题:Scala2.10.5, jdk1.8

        5. IntelliJ IDEA 常用设置

      6. 开发第一个Spark程序

        1. 配置ssh无密登陆:

          1. ssh-keygen

          2. .ssh目录下cat xxx_rsa.pub > authorized_keys

          3. chmod 600 authorized_keys 

        2. WordCount:

          1. 创建一个Spark Context

          2. 加载数据

          3. 把每一行分割成单词

          4. 转换成pairs并且计数

    7. RDDs介绍

      1. Driver program:

        1. 包含程序的main()方法,RDDs的定义和操作。

        2. 它管理很多节点,我们称作executors。

      2. SparkContext:

        1. Driver programs通过SparkContext对象访问Spark。

        2. SparkContext对象代表和一个集群的连接。

        3. 在Shell中SparkContext自动创建好了,就是sc。

      3. RDDs:

        1. Resilient distributed datasets(弹性分布式数据集,简称RDDs)

        2. 这些RDDs,并行的分布在整个集群中。

        3. RDDs是Spark分发数据和计算的基础抽象类。

        4. 一个RDD是一个不可改变的分布式集合对象。

        5. Spark中,所有的计算都是通过RDDs的创建,转换,操作完成的。

        6. 一个RDD内部有很多partition(分片)组成的。

      4. 分片:

        1. 每个分片包括一部分数据,partitions可在集群不同节点上计算。

        2. 分片是Spark并行处理的单元,Spark顺序的,并行的处理分片。

      5. RDDs的创建方法:

        1. 把一个存在的集合传给SparkContext的parallelize()方法,测试用

          1. val rdd = sc.parallelize(Array(1, 2, 2, 4), 4)

          2. 第1个参数:待并行化处理的集合

          3. 第2个参数:分区个数

        2. 加载外部数据集

          1. val rddText = sc.textFile("helloSpark.txt")

      6. Scala的基础知识

        1. Scala的变量声明

          1. 创建变量是val/var

            1. val:变量值是不可修改的,类似java final。

            2. var:变量值定义完是可以修改的。

        2. Scala的匿名函数和类型推断

          1. lines.filter(line => line.contains("world")),定义一个匿名函数,接受line.

          2. 使用line这个Strig类型的变量上的contains方法,并且返回结果

          3. line不需要制定类型,会自动推断

    8. RDD基本操作 Transformation

      1. Transformations介绍:

        1. 转换

        2. 从之前的RDD构建一个新的RDD,像map() 和 filter()。

      2. 逐元素Transformation

        1. map(): map()接收函数,把函数应用到RDD的每一个元素,返回新的RDD。

        2. filter(): filter()接受函数,返回只包含满足filter()函数的元素的新RDD。

        3. flatMap(): flatMap()对每个输入元素,输出多个输出元素。flat压扁的意思,将RDD中的元素压扁后返回一个新的RDD。

      3. 集合运算

        1. RDDs支持数学集合的计算,例如并集,交集计算。

    9. RDD基本操作 Action

      1. Action介绍:在RDD上计算出来一个结果。把结果返回给driver program或保存在文件系统,count(), save()

      2. collect(): 返回RDD的所有元素。

      3. count(): 计数。

      4. countByValue(): 返回一个map表示唯一元素出现的个数。

      5. take(num): 返回几个元素。

      6. top(num): 返回前几个元素。

      7. takeOrdered(num)(ordering): 返回基于提供的排序算法的前几个元素。

      8. takeSample(withReplacement, num, [seed]): 取样例。

      9. reduce(fun): 合并RDD中元素。

      10. fold(zero)(fun): 与reduce()相似提供zero value。

      11. aggregate(zeroValue)(seqOp, combOp): 与fold()相似,返回不同类型。

      12. foreach(fun): 对RDD的每个元素作用函数,什么也不返回

    10. RDDs的特性

      1. RDDs的血统关系图:

        1. Spark维护着RDDs之间的依赖关系和创建关系,叫做血统关系图

        2. Spark使用血统关系图来计算每个RDD的需求和恢复丢失的数据

      2. 延迟计算(Lazy Evaluation):

        1. Spark对RDDs的计算是,他们第一次使用action操作的时候。

        2. 这种方式在处理大数据的时候特别有用,可以减少数据的传输。

        3. Spark内部记录metadata表明transformations操作已经被响应了。

        4. 加载数据也是延迟计算,数据只有在必要的时候,才会被加载进去。

      3. RDD.persist(): 持久化

        1. 默认每次在RDDs上面进行action操作时,Spark都重新计算RDDs,如果像重复利用一个RDD,可以使用RDD.persist()。

        2. unpersist()方法从缓存中移除。

        3. 例子RDD.persist()

    11. KeyValue对RDDs

      1. 创建KeyValue对RDDs

        1. 使用map()函数,返回key/value对,例如,包含数行数据的RDD,把每行数据的第一个单词作为keys

        2. KeyValue对RDDs的Transformations

          1. reduceByKey(fun): 把相同Key的结合。

          2. groupByKey(): 把相同的key的values分组。

          3. combineByKey(): 把相同key的结合,使用不同的返回类型。

          4. mapValues(fun): 函数作用于pairRDD的每个元素,key不变

          5. flatMapValues(fun): 符号化的时候使用

          6. keys: 仅返回keys

          7. values: 仅返回values

          8. sortByKey(): 按照key排序的RDD

        3. combineByKey(createCombiner, mergeValue, mergeCombiners, partitioner)

          1. 最常用的基于key的聚合函数,返回的类型可以与输入类型不一样,许多基于key的聚合函数都用到了它,像groupByKey()

          2. 原理,便利partition中的元素,元素的key,要么之前见过的,要么不是。如果是新元素,使用我们提供的createCombiner()函数,如果是这个partition中已经存在的key,就会使用mergeValue()函数,合计每个partition的结果的时候,使用mergeCombiners()函数

    12. Spark基础课程总结

      1. Spark介绍。

      2. Spark安装,开发环境搭建,WordConut程序开发和运行。

      3. RDDs介绍,Transformations,Actions

      4. RDDs的特性,KeyValue对RDDs

    13. 后续课程:

      1. Spark架构

      2. Spark运行过程

      3. Spark程序部署


    查看全部
    5 采集 收起 来源:Spark课程总结

    2018-07-25

  • 1-1 Spark简介

    Spark的含义:是一个快速且通用的集群计算平台

    Spark的特点:

    1. spark是快速的

      1. Spark扩充了流行的Mapreduce计算模型

      2. Spark是基于内存的计算

    2. spark是通用的

      1. 容纳了其他分布式系统拥有的功能:批处理、迭代式计算、交互查询和流处理,方便维护

      2. 优点:降低了维护成本

    3. spark是高度开放的

      1. 提供了python、java、scala、SQL的API和丰富的内置库(Scala是spark的原生语言)

      2. 和其他的大数据工具整合的很好,包括hadoop、kafka等


    查看全部
    2 采集 收起 来源:Spark简介

    2020-01-30

  • spark core:

        包含spark的基本功能,任务调度,内存管理,容错机制

        内部定义了RDDs,弹性分布式数据集

    spark sql:

        是spark处理结构化数据的库

    spark streaming:

        实时数据流处理组件

    milb:

        包含通用机器学习功能的包,分类,聚类,回归

        支持起群上的横向扩展

    graphx:

        处理图的库,并进行图的并行计算

    cluster managers:  

        集群管理


    紧密集成的优点

    1.     spark底层优化了,基于spark的底层组件也会得到相应的优化。

    2. 紧密继承节省了各个组价组合使用时的部署,测试等时间

    3. 向spark增加新的组件时,其他组件,可立刻享用新组建的功能。

    查看全部
    2 采集 收起 来源:Spark生态介绍

    2019-04-23

  • hadoop 离线处理 实时性要求不高的场景,中间计算数据存储在磁盘,处理时间分钟-小时

    spark 即时处理 实时性要求高的场景,中间计算数据存储在内存,处理时间秒-分钟

    查看全部
  • 集合运算

    RDDs支持数学集合的计算,例如并集、交集等

    val rdd_distinct = rdd1.distinct()

    val rdd_union = rdd1.union(rdd2)

    val rdd_inter = rdd1.intersection(rdd2)

    val rdd_sub = rdd1.subtract(rdd2)


    查看全部
  • http://img1.sycdn.imooc.com//5eca73a60001fc8816180474.jpg

    默认安装选项会自动配置环境变量。

    Spark 1.6.2 -- Scala 2.10 

    Spark 2.0.0 -- Scala 2.11

    http://img1.sycdn.imooc.com//5eca740800019a4d14240520.jpg

    http://img1.sycdn.imooc.com//5eca741800013be315040374.jpg

    http://img1.sycdn.imooc.com//5eca744f0001665111280434.jpg

    IntelliJ IDEA常用的设置:

    主题和颜色

    编辑器界面字体设置

    光标所在行背景颜色






    查看全部
  • spark的运行环境:

        基于Scala ,运行在JVM,运行环境Java7+

    spark下载:

        搭建spark不需要Hadoop,下载后解压

        虚拟机(Linux)联网状态下,通过  wget+下载链接

        Linux解压命令  tar -zxvf spark.....

    spark目录

        bin目录-可执行文件

        core,streaming主要包含组件源代码

        examples 包含单机例子

    spark的shell:

        梳理分布在集群上的数据

        可以将数据加载到节点的内存中,因此分布式处理可在秒级完成。

        快速迭代计算,实时查询、分析

        spark提供了Python shell和Scala shell

    Scala shell

        /bin/spark-shell

    查看全部
    1 采集 收起 来源:spark安装

    2019-04-23

  • Spark目录:

    bin包含用来和spark交互的可执行文件,如spark shell

    core, streaming ,python,包含主要组件的源代码

    examples包含一些单机Spark job,可以研究和运行这些例子

    Spark的shell:

    Spark的shell使得能够处理分布在集群上的数据

    Spark把数据加载到节点的内存中,因此,分布式处理可以在秒级完成。

    快速式迭代式计算,实时查询、分析一般能够在shell中完成

    spark提供了python shells和Scala shells

    python shells位于bin/pyspark

    scala shell位于 bin/spark-shell

    查看全部
    1 采集 收起 来源:spark安装

    2018-07-13

  • Spark是Scala写的。在Java环境下运行

    查看全部
    1 采集 收起 来源:spark安装

    2018-04-12

  • Driver program:包含了main方法 sparkContext:链接spark集群,一般直接使用shell创建好的对象sc即可 rdds:弹性分布数据集,spark如果大数据量时会自动将片分配到每一个节点上,各个片的总名称就是rdds 对象 创建rdds的两种对象: 1.使用sc.prilize对象 2.使用sc.textFile()加载外部对象 3.scala:匿名函数和类型推断。 line2.Filter(line=>line.contains("world")) 即line2通过Filter的方法将每一行赋值给line,然后line在调用contains方法确认哪一行是否包含有world,这个单词,有则返回给line2,
    查看全部
    1 采集 收起 来源:Rdds介绍

    2018-03-22

  • 1、Spark是快速且通用的计算框架 2、Spark特点:a.快速(扩充了流行的Mapreduce计算模型,基于内存) b.通用的(批处理、迭代计算、交互式查询、流处理等),降低维护成本 c.高度开发(支持多语言编程,与其他大数据工具结合)
    查看全部
    2 采集 收起 来源:Spark简介

    2017-11-07

  • 启动master ./sbin/start-master.sh 启动worker ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://localhost.localdomain:7077 提交作业 ./bin/spark-submit --master spark://localhost.localdomain:7077 --class WordCount /home/spark/testspark.jar
    查看全部
  • zcm
    RDD 基本操作 Transformation(转换) val lines = sc.parallelize(Array("hello","spark","spark","hello","!")) lines.freach(println) lines.map(workd=>(word,1)) 每一个元素+1 filter() lines.filter(world=>word.constains("hello")) flatMap() 压扁,返回一个新的Rdd
    查看全部
  • RDDs创建方法2
    查看全部
    1 采集 收起 来源:Rdds介绍

    2017-05-10

  • RDDs创建方法
    查看全部
    1 采集 收起 来源:Rdds介绍

    2017-05-10

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
1、 简单Linux的操作
老师告诉你能学到什么?
1、了解Spark到底是什么 2、了解Spark和Hadoop的区别 3、了解Spark的基础知识和概念 4、掌握Spark RDD的基本操作和特性 5、掌握Spark程序的开发和部署流程

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!