Spark笔记(1)-Spark初体验

最近在实习,公司用的Spark,需要学习一下,废话少说,开始学习旅程。


说到Spark,不得不提一下MapReduce,众所周知,Spark的出现,正是用来替代原来的MapReduce计算框架,对于传统的MapReduce来说,存在许多局限性:

1. 只支持Map和Reduce两种操作,编程不够灵活

2. 处理效率低:map中间结果写入磁盘,reduce写HDFS,多个MR间通过HDFS交换数据

                            无法充分利用内存

                            任务调度和启动开销大

                            map端和reduce端都需要排序

3. 对于一些迭代计算、交互式处理、流式计算不适合


OK,下面来看下Spark优点:

1. 高效:内存计算引擎,提供Cache机制来支持需要反复迭代计算或者多次数据共享,减少数据读取时的IO开销

                采用DAG引擎(有向无环图),减少多次计算之间中间结果写到HDFS的开销

                使用多线程池模型来减少task启动的开销,shuffle过程中避免不必要的sort操作以及减少磁盘的IO操作

2. 容易上手: 提供了比较丰富的API,同时支持Java、Scala、Python、R四种语言(优先选择Scala)

3 与Hadoop集成: 读写HDFS/HBase

                                   与YARN集成



OK,接下来来看一下Spark里面的一个核心概念:RDD

RDD:弹性式分布数据集,分布在集群中的只读对象集合(由多个partition组成),可以通过配置项选择存储在磁盘或者内存中,通过并行转换操作构造,失效后自动重构。


RDD有两个基本操作:Transformation和Action

Transformation:就是通过Scala集合或Hadoop数据集构造一个新的RDD,或者通过已有的RDD产生新的RDD,比如map、filter、groupBy、reduceBy等操作。

Action:通过RDD计算得到一个或者一组值,比如count、reduce、saveAsTextFile等操作。


通常在创建一个新的RDD后,通过一系列的Transformation不断生成新的RDD,最后再执行Action操作,由于Spark采用的是惰性执行机制,Transformation只会记录RDD的转化关系,而Action才是触发程序分布式执行的算子。


Spark的运行模式有三种

1. 本地模式:单机运行,通常用于测试

2. 独立模式:独立运行在一个集群中

3. YARN模式:运行在YARN上(yarn-client或yarn-cluster)


















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值