来,我教你spark

      首先推出的spark系列,为啥要学习spark呢?spark是基于内存计算,速度更快,更时髦?spark是All-in-one,集成了流式计算(spark Streaming),即席查询(spark SQL), 机器学习(MLlib), 图处理(GraphX)于一身?不,仅仅就因为:

       当然了,如果努力学习,却只是得了个“B”,那么效果确实不太好,针对前段时间对spark实践做了部门技术分享,我发现有些同事听的稀里糊涂,难道是老衲尽力了,队友CBA? 显然不是,所以我打算以一种比较幽默的方式(当然本人是个比较严肃,认真脸.jpg),更多的图像展示来说明技术,以及更细粒度的对spark进行详细的介绍。

       一言不合就甩图:




       spark官方用这张图来表示spark的速度是hadoop的100多倍。然后你就会发现,官方原来也这么能吹牛逼,这种没有说明场景,以一概全的比较显然是耍流氓。于是乎,坊间流传,Spark要取代hadoop了。。。。。。当然,谣言止于智者,本人正式说明,spark不可能取代hadoop,hadoop是个生态,更准确点说,spark会逐步取代mapreduce,二者同是分布式计算框架,那么他们两到底有啥区别呢?首先,他们名字不一样。。。。。。。




  • 磁盘与内存

Mapreduce更像是一个学渣,Spark更像是个学神,一个基于磁盘,一个基于内存,先天条件就表明spark的表现要远远好于Mapreduce。MR喜欢将中间结果写到磁盘上,计算过程也是一板一眼,分成map, reduce两个过程,处理完数据落地到磁盘,然后下一个job继续从磁盘读取数据,继续下一个map,  reduce过程;Spark相对机灵一点,事先评估好做事情的策略和方法(有向无环图DAG),计算数据放在内存里,当然了,这对内存的要求要高得多,如果内存不够,spark就会把数据一部分落地到磁盘,那么这时候效率也会有所下降。


  • map, reduce  和 算子的比较

Spark提供的数据集操作类型有很多种,不像Mapreduce只提供了Map和Reduce两种操作。比如map, filter, flatMap, sample, groupByKey, reduceByKey, union, join, cogroup, mapValues, sort,partionBy等多种操作类型,Spark把这些操作称为Transformations。同时还提供Count, collect, reduce, lookup, save等多种actions操作。


这些多种多样的数据集操作类型,给给开发上层应用的用户提供了方便。各个处理节点之间的通信模型不再像Mapreduce那样就是唯一的Data Shuffle一种模式,可以说编程模型比Hadoop更灵活。


  • 应用场景

Mapreduce善于对海量数据的离线处理,对时间和效率上要求不是那么高,不适合迭代计算,如机器学习,图计算等,交互式计算,流式处理。而spark在这几个方面表现很好。


       以上是mapreduce和spark的几点主要区别。这时候你可能觉得spark也没那么难,不过如此



      其实这只是稍微介绍了spark,以后会详细介绍以下重点概念,大概每个点都可以写成一篇文章:

RDD

Master

Worker

Transformation

Action

SparkContext

DAGScheduler

TaskScheduler

Executor

Task

Shuffle

BlockManager

CacheManager

。。。

      先把这几个重点概念词背熟了。。。为啥要先讲spark的原理机制?因为后期程序运行报错以及调优都要求对spark的运行机制非常熟悉。




为了让你有个大体的印象,我只能继续甩图




                                             spark原理机制图-1

   

         spark应用程序提交,也就是一个Application,Driver程序解析,通过程序中action操作,把Application切分成一个个job,注意了,action!!! action就是count, collect, save这些算子操作。DAGScheduler又把job切分成一个一个stage,依据又是啥呢?ShuffleDependency,宽依赖,也就是那些会触发shuffle的transformation?DAGScheduler在这过程起的作用:面向stage的切分,切分依据为宽依赖,维护waiting jobs和active jobs,维护waiting stages、active stages和failed stages,以及与jobs的映射关系。

        Stage又被分成一个个Task,DAGScheduler把TaskSet里的一个个Task提交给了TaskScheduler,TaskScheduler维护task和executor对应关系,executor和物理资源对应关系,在排队的task和正在跑的task。内部维护一个任务队列,根据FIFO或Fair策略,调度任务。

           然后Task呢?这里先不讲了,以后慢慢展开。




                                           spark原理机制图-2  


    先头脑里有个大概印象,具体以后会展开介绍。


欢迎关注个人微信公众号:BigData共享

文章来自

https://mp.weixin.qq.com/s?__biz=MzU2NzA3OTEwMg==&mid=2247483663&idx=1&sn=8f98a51b66d08b742484fbb6a0360ef7&chksm=fca3f8decbd471c81a70723a8a408f6c901a723165440cd7b8f6d4415c06944a747052de1082#rd





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值