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图可以实现良好的容错
为什么要⽤flume导⼊hdfs,hdfs的构架是怎样的
解析:
flume可以实时的导⼊数据到hdfs中,当hdfs上的⽂件达到⼀个指定⼤⼩的时候会形成⼀个⽂件,或者超过指定时间的话也形成⼀个⽂件
⽂件都是存储在datanode上⾯的,namenode记录着datanode的元数据信息,⽽namenode的元数据信息是存在内存中的,所以当⽂件切⽚很⼩或者很多的时候会卡死
map-reduce程序运⾏的时候会有什么⽐较常⻅的问题
解析:
⽐如说作业中⼤部分都完成了,但是总有⼏个reduce⼀直在运⾏
这是因为这⼏个reduce中的处理的数据要远远⼤于其他的reduce,可能是因为对键值对任务划分的不均匀造成的数据倾斜
www.aboutyun.com/thread-24246-1-1.html 34/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发
解决的⽅法可以在分区的时候重新定义分区规则对于value数据很多的key可以进⾏拆分、均匀打散等处理,或者是在map端的combiner中进⾏数据预处理的操作
简单说⼀下hadoop和spark的shuffle过程
解析:
hadoop:map端保存分⽚数据,通过⽹络收集到reduce端
spark:spark的shuffle是在DAGSchedular划分Stage的时候产⽣的,TaskSchedule要分发Stage到各个worker的executor,减少shuffle可以提⾼性能
解析:
表(数据+元数据)。 存的是和hdfs的映射关系,hive是逻辑上的数据仓库,实际操作的都是hdfs上的⽂件,HQL就是⽤sql语法来写的mr程序。