Why Hive ?
- 相对于使用MapReduce,为什么使用Hive ?
- MapReduce实现复杂业务逻辑开发难度大
- Hive提供类SQL语法,避免写MapReduce程序,开发相对快速
- 扩展功能方便,支持自定义函数
- 适合于做数据仓库工具,如ETL处理,数据分析等
Why Spark ?
1. Spark
- 集流批处理、交互式查询、机器学习及图计算等于一体
- 多线程模型,每个worker节点运行一个或多个executor服务,每个task作为线程运行在executor中,task间可共享资源
- 基于内存迭代式计算,适合低延迟、迭代运算类型作业
- 可以通过缓存共享rdd、DataFrame,提升效率中间结果支持checkpoint,遇错可快速恢复
- map之间以pipeline方式运行,无需刷磁盘
- Spark编程模型更灵活,支持多种语言并支持丰富的transformation和action的算子
2. MapReduce
- 适合离线数据处理
- 多进程模型,任务调度(频繁申请、释放资源)和启动开销大,不适合低延迟类型作业中间结果需要落地,需要大量的磁盘IO和网络IO影响性能
- 不适合迭代计算、交互式处理、流式处理
- MR编程不够灵活,仅支持map和reduce两种操作。当一个计算逻辑复杂的时候,需要写多个MR job运行