spark 2.2.0学习笔记1之概述

spark 2.2.0学习笔记1之概述

参考

概念

  • 基于内存—-快速/通用—-计算
  • Spark 是一个用来实现快速而通用的集群计算的平台

生态

  • 2009年伯克利分校—-基于mapreduce—-使用scala编写

组件

上层组件—-spark sql/spark streaming/mlib/graphx

  • spark sql—-Spark 用来操作结构化/半结构化数据的程序包
    • 从各种数据源读取数据/支持各种方式的sql查询
    • hive查询
    • 支持udf(用户自定义函数)
    • SchemaRDD(DataFrame)—-存放Row 对象的RDD,每个Row 对象代表一行记录

      SELECT SUM(user.favouritesCount), SUM(retweetCount), user.id FROM tweets
      GROUP BY user.id
  • spark streaming—-Spark 提供的对实时数据进行流式计算的组件/微批次架构
    • Spark Streaming 使用离散化流(discretized stream)作为抽象表示,叫作DStream
    • DStream 是随时间推移而收到的数据的序列
    • 一种是转化操作(transformation),会生成一个新的DStream
      • 无状态(stateless)—-每个批次的处理不依赖于之前批次的数据
      • 有状态(stateful)—-需要使用之前批次的数据或者是中间结果来计算当前批次的数据
    • 另一种是输出操作(output operation),可以把数据写入外部系统
  • mlib—-提供常见的机器学习(ML)功能的程序库
    • 待学习
  • graphx—-用来操作图(比如社交网络的朋友关系图)的程序库

中间层—-spark core

  • 弹性分布式数据/rdd(RDD 表示分布在多个计算节点上可以并行操作的元素集合)

底层—-集群管理器

  • local
  • 独立调度器—-Spark自带/默认
  • Hadoop YARN
  • Apache Mesos

应用处理

  • hadoop—-离线处理/时效性不高
  • spark—-时效性高/机器学习

spark 集群运行

  • spark驱动器节点—-执行main方法的进程/创建SparkContext、创建RDD、转换RDD、行动操作RDD/驱动器节点进行任务的调度、数据的跟踪
    • 把用户程序转为任务—-stage—-task
    • 为执行器节点调度任务
  • 集群管理器—-启动执行器节点,有时启动驱动器节点()—-主节点/工作节点
    • 独立调度器—-Spark自带/默认
    • Hadoop YARN
    • Apache Mesos
  • spark执行器节点
    • 运行驱动器任务,返回结果给驱动器
    • 提供RDD的内存式存储

命令

  • start-master—-启动master
  • start-class—-启动worker
  • spark-submit—-提交作业/部署应用

RDDs

  • 弹性分布式数据集/不可变分布式的集合元素/计算和抽象的基础
  • 驱动器程序通过一个SparkContext 对象来访问Spark。这个对象代表对计算集群的一个连
    接。
  • rdd血统关系图—-rdd之间的依赖与创建关系/延迟计算/第一次action的时候计算
    • RDD有向无环图
    • 用户代码定义RDD的有向无环图
    • 行动操作把有向无环图强制转译为执行计划
      • 这个作业会包含一个或多个步骤,每个步骤其实也就是一波并行执行的计算任务
    • 任务于集群中调度并执行
    • Spark 会使用60%的空间来存储RDD,20% 存储数据混洗操作产生的数
      据,剩下的20% 留给用户程序
  • driver program
    • 包含main/SparkContext
  • SparkContext
    • 代表和一个集群的连接
  • 分片/分区—-运行在集群中不同的节点
    • 属于rdd的一部分/是并行处理单元
  • 创建—-读取外部数据集/驱动器程序集合并行化
  • 键值对RDD(pair RDD)—-用来进行聚合运算/元素为元组
    • reduceByKey—-通过key 进行操作—-返回新的rdd
    • groupByKey—-进行分组
    • mapValues/flatMapValues—-应用值
    • keys/values/sortByKey—-返回key value sort
    • join—-对两个rdd进行内连接
    • subtractByKey/rightOuterJoin/leftOuterJoin/cogroup

操作—-转换操作(转换操作返回的是RDD)与行动操作(行动操作返回的是其他类型)

  • trans—-由一个rdd生成另一个新的rdd/
    • map—-接收函数,应用到rdd每个元素,将函数的返回结果放入rdd
    • filter—-接收函数返回新的rdd,将满足函数的元素放入rdd
    • flatMap—-压扁,一行转多行,将返回的迭代器拍扁
    • 集合运算(rdd具有相同数据类型)—-
    • distinct(shuffle开销很大)/union(包含重复数据)/
    • intersection(shuffle去重)/subtract(shuffle)/cartesian(笛卡尔积/所有可能组合)
    • countByKey/lookup/collectAsMap
  • action—-对rdd计算结果—-返回结果给驱动程序或者保存到外部系统—-
    • reduce—-接收函数,操作两个rdd元素,返回同类型新元素
    • fold—-与reduce一致,但是需要初始值
    • aggregate(zeroValue)(seqOp, combOp)—-返回不同的数据类型
    • collect—-获取整个rdd数据
    • take—-返回n个结果 随机的
    • takeOrdered—-按照指定顺序返回
    • top—-排序后的top
    • takeSample—-从数据集获取采样
    • foreach—-计算元素 不返回本地
    • persist/unpersist—-持久化(可内存/磁盘)
    • count—-返回元素个数
    • countByValue—-各元素在rdd中出现次数
    • first—-

scala编程

  • 传递局部可序列化变量或顶级对象中的函数始终是安全的/val query_ = this.query
  • 共享变量
    • 累加器—-对信息进行聚合
    • val blankLines = sc.accumulator(0)/转化操作中,累加器通常只用于调试目的
    • 广播变量—-高效分发较大对象

存储方式

  • 文件格式与文件系统
    • 文本文件/JSON/CSV/SequenceFile/对象文件/Hadoop输入输出格式/protocol buffer
    • 本地文件系统/amazon s3/hdfs
  • SPARK SQL 的结构化数据源
    • hive
  • 数据库与键值存储
    • jdbc/cassandra/hbase/elasticsearch

Code

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值