首页 > 其他 > 详细

hadoop和spark比较

时间:2018-11-08 17:19:55      阅读:184      评论:0      收藏:0      [点我收藏+]

http://blog.51cto.com/13943588/2165946

hadoop和spark的都是并行计算,那么他们有什么相同和区别? 

两者都是用mr模型来进行并行计算,hadoop的一个作业称为job,job里面分为map task和reduce task,每个task都是在自己的进程中运行的,当task结束时,进程也会结束。 

spark用户提交的任务成为application,一个application对应一个sparkcontext,app中存在多个job,每触发一次action操作就会产生一个job。 

这些job可以并行或串行执行,每个job中有多个stage,stage是shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset有TaskSchaduler分发到各个executor中执行,executor的生命周期是和app一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算。 

hadoop的job只有map和reduce操作,表达能力比较欠缺而且在mr过程中会重复的读写hdfs,造成大量的io操作,多个job需要自己管理关系。 

spark的迭代计算都是在内存中进行的,API中提供了大量的RDD操作如join,groupby等,而且通过DAG图可以实现良好的容错。

hadoop的TextInputFormat作用是什么,如何自定义实现

InputFormat会在map操作之前对数据进行两方面的预处理 

1是getSplits,返回的是InputSplit数组,对数据进行split分片,每片交给map操作一次 

2是getRecordReader,返回的是RecordReader对象,对每个split分片进行转换为key-value键值对格式传递给map

常用的InputFormat是TextInputFormat,使用的是LineRecordReader对每个分片进行键值对的转换,以行偏移量作为键,行内容作为值

自定义类继承InputFormat接口,重写createRecordReader和isSplitable方法 

在createRecordReader中可以自定义分隔符

kafka工作原理? 

producer向broker发送事件,consumer从broker消费事件。 

事件由topic区分开,每个consumer都会属于一个group。 

相同group中的consumer不能重复消费事件,而同一事件将会发送给每个不同group的consumer。

 

hadoop和spark比较

原文:https://www.cnblogs.com/wangleBlogs/p/9930061.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!