- 相同点:
都是用于大数据的计算。 - 区别:
框架 | 特点 | 应用场景 |
---|---|---|
MapReduce | 批处理,Hadoop框架之一,依赖HDFS | 1)海量数据的离线分析处理 2)大规模Web信息搜索 3)数据密集型并行计算 |
Spark | 批处理,基于内存的分布式计算 兼容HDFS、Hive | 需要反复操作的次数越多,所需读取的数据量越大, |
Storm | 流处理,分布式实时计算系统 | Twitter的流式处理大数据分析方案 |
当然,现在大数据计算平台已经是一个开源组件大融合(组件生态)。大概的技术框架如下:
其中蓝色部分(HDFS、YARN、MapReduce和Hive)是hadoop自身的模块。YARN是Hadoop2.x版本新增,目的是为了解决功能解耦,使其上可以运行更多的分布式运算程序,如storm程序,spark程序,tez 而不在仅仅限于mapreduce。而Hadoop核心功能就两点:分布式数据存储和分布式计算。
Hadoop生态系统里还在不断的有新组件加入。例如Apache Kudu、Parquet 、beam等,每一个组件有不同的功能。在现实场景中,用户往往需要同时部署很多Hadoop工具来解决同一个问题,这种架构称为混合架构 (hybrid architecture)。比如用户使用HBase对于大量小规模查询计算,而利用HDFS/Parquet + Impala/Hive来对超大的数据集进行查询分析、根据实际业务场景选择spark或者storm之一即可。
上图的大概工作流程为:
1、用户用Flume或Kafka等ETL工具将数据导入HBase,根据需要在HBase上对数据做一些修改。
2、然后每隔一段时间(每天或每周)将数据从Hbase中放在HDFS上。
3、最后使用Impala等计算引擎进行查询,生成最终可用的业务报表。