一. spark和hadoop
MapReduce | Spark |
数据存储结构:磁盘HDFS文件系统的split | 使用内存构建弹性分布式数据集RDDs对数据进行运算和cache |
编程范式:Map + Reduce | DAG: Transformation + Action |
计算中间结果落到磁盘IO及序列化、反序列化代价大 | 计算中间结果在内存中维护存取速度比磁盘高几个数量级 |
Task以进程的方式维护,需要数秒时间才能启动任务 | Task以线程的方式维护对于小数据集读取能够达到亚秒级的延迟 |
hadoop缺点: 1.表达能力有限(MapReduce) 2.磁盘IO开销大(shuffle) 3.延迟高 spark: 1.Spark的计算模式属于MapReduce,在借鉴Hadoop MapReduce优点的同时很好地解决了MapReduce所面临的问题 2.不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活 3.Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高 4.Spark基于DAG的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制(函数调用) 使用Hadoop进行迭代计算非常耗资源; Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据