Spark包括SparkCore、SparkSQL、SparkStreaming、SparkML、GraphX组件
Hadoop包括MapReduce、Hive、HBase、Storm、Kafka、Yarn等
编程模型:SparkCore
vs MapReduce
- 基于内存 和 基于磁盘,MR耗时都花在shuffle上了
- 编程模型死板, 必须填进去M R中, spark一段就ok,mr要写几段
- 一个是迭代式运算,MR两个阶段完了就是忘了
搜索引擎:SparkSQL
vsHive
Hive是数据仓库,SparkSQL替代的并非Hive,而是Hive中搜索引擎部分
- Hive搜索引擎是基于MR shuffle,所以是非常耗时;而Spark是基于内存
流处理:SparkStreaming
vs Storm
- SparkStreaming并非真正意义的实时流处理,只能说是准实时。因为它使用了缓存(linux内核中LRU链表中提到过,如果每条记录都实时处理,中间设计加锁解锁等处理很耗时),每个一段时间处理一次。
- 所以说对对于银行这种要求准实时最好使用storm,对于处理时间段不变化且不要求精确实时的使用sparkStreaming
总之,现在更多是采用Hadoop Spark结合使用的状态,Spark组件只是能替代Hadoop生态中的部分组件。