1. MapReduce的局限性
1)繁杂 本身只有map/reduce算子(没有reduce的情况:mapjoin里只有map,没有reduce)
- 开发层面: low-level(低层次的) ; constrained(限制多);
- 测试:需求改动就要重新测试
2)计算效率低
- 进程级别:MapTask ReduceTask都有一堆的进程; JVM复用
- IO:链式(chain)作业, 网络+磁盘IO
- 排序:mapreduce每个阶段都排序,但很多场景不需要排序
- Memory: mapreduce能够基于内存处理,但是有限
不适合迭代处理(一个作业要经过n轮的迭代)
不适合实时流处理
2. Spark概述
官网:http://spark.apache.org/
spark源码:https://github.com/apache/spark
spark是快速的,通用的执行引擎,用来处理大数据。
分布式的计算框架,不负责存储,只管计算(spark无法替代hadoop)
特点:
- 计算速度快:1) spark是基于内存的计算;2) 基于线程模型;3)可以设置是否排序;4)有向无环图,mr里面所有操作立刻执行,spark里面是懒操作(pipeline式的操作);
- 易于使用: 1) 支持多种语言;2) 支持80多种高级别的API(high-level operator):join,group,sum; 3) 提供交互式的命令行
- 通用性:sql,streaming,复杂分析可以综合起来使用
- 可以运行hadoop(yarn),mesos,standalone等运行模式,可以访问各种不同的数据源: hdfs, cassandra, hbase and s3
Spark版本介绍
spark 1.6.0
1:major version : APIs changes 主要版本,会有api的变化
6:minor version : APIs/features add 小版本,会加一些api/feature
0: patch version: only fix bugs 修复的版本
不要选最后一位是0的版本