数据处理技术-Spark入门

对于前面已经学习过的MapReduce我们应该已经有了一个大致的了解。然而回顾MapReduce,会发现这是一个简单但是功能很单一的框架,因为它仅有Map和Reduce两个语义操作。为了进行更多更复杂的操作,出现了Spark.

Spark是什么?

与Hadoop相比,它多了更多的语义操作,而且不需要安装额外的组件(像Hive)就可以进行更多场景的处理。同时它也可以直接与内存进行交互,也就是说处理速度比与磁盘进行交互的Hadoop更快的。Spark是一个由UCB的AMP实验室提出的在一个统一框架下,实现批处理、流处理、交互式计算、机器学习为一体的计算框架。

Spark能做什么?(组成)

All in One框架,Spark提供多种计算场景。其底层是Spark Core(核心计算框架)做批处理运算.

  • Spark SQL: 将SQL转换成Spark Core
  • Spark Streaming: 将流处理转换成批处理,微批处理——批处理间隔时间短
  • Spark MLib: 机器学习
  • Spark GraphX: 图计算

Spark可以通过on Yarn模式提交到Hadoop当中运算。还有更多的运行模式,所以就显得扩展很强大。

Spark编程

Spark基于RDD进行计算。

RDD

弹性分布式数据集(Resilient Distributed Datesets).

  • 分布在集群中的只读对象集合,处理完需要新开一个RDD来保存结果。
  • 由多个Parition组成
  • 通过转换操作构建
  • 失效后自动重构,每一个RDD都存在内存当中,因此失效后不需要重头进行运算,只需要找到上一个RDD的内存重新执行处理
  • 存储在内存或磁盘中
例:词频统计
// sc对象 - SparkContext() - Spark上下文对象
val rdd1 = sc.textFile("hdfs://in") // textFile()读取文件
val rdd2 = rdd1.flatMap(_split("\t")) // 将每一行数据按照\t进行拆分,新的集合保存在rdd2当中
val rdd3 = rdd2.map((_, 1)) // 给每个单词标注1 存在rdd3当中
val rdd4 = rdd3.reduceByKey((_+_)) //按照key值进行reduce _+_为scala语法,表示进行累加求和 
rdd4.saveAsTextFile("hdfs://out") //保存到hdfs当中

RDD过程可以构成一个有向无环图(DAG)

RDD操作

Transformation 转换
  1. 将Scala集合或Hadoop输入数据构造成一个新RDD
  2. 通过已有的RDD产生新的RDD
  3. 惰性执行:只记录转换关系,不触发计算
  4. e.g. map, filter, flatmap, union, distinct, sortbykey
Action 动作
  1. 通过RDD计算得到一个或一组值
  2. 触发计算
  3. e.g. first, count, collect, foreach, saveAsTextFile

RDD依赖

partition一对一进行转换,被称为窄依赖;多对一进行转换,被称为宽依赖。
宽依赖中间一定走shuffle,恢复比较慢。因此需要尽量避免使用宽依赖。e.g. 按照key值进行排序的操作

Spark程序运行框架

在Driver当中执行代码解析,在Executor中进行任务执行。
Dirver包含:生成逻辑查询计划、生成物理查询计划、任务调度。
具体流程:

  1. 客户端向Master提交请求
  2. Master分配Worker运行资源,运行作业管理进程
  3. worker运行Driver,driver向master提交资源申请,master以executor形式分配资源
  4. 执行运算过程中,task(worker当中)向driver实时进行汇报
  5. task汇报作业完成,driver向master汇报,master释放所有资源。

Spark作业提交模式

  • Local模式
    单机运行,用于测试。Spark程序已多线程方式直接运行在本地。
  • Standalone模式
    Spark集群独立运行,不依赖与第三方资源。Driver在Worker中运行,Master只复杂集群管理。
  • OnYarn模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayu阿予

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值