(原文地址:http://blog.csdn.net/codemosi/article/category/2777045,转载麻烦带上原文地址。hadoop hive hbase mahout storm spark kafka flume,等连载中,做个爱分享的人)
hadoop已经成为大数据的事实标准,基于mapreduce的hive数据仓库和hadoop上的hbase分布式数据库等,只能完成离线,和半离线的需求。不能满足实时运算的需求。这样的大环境下,apache spark诞生了。基于spark来做。可以实现一种软件套,实现 1:批处理(spark对应mapreduce) 2:实时流计算(spark streaming对应storm) 3:基于SQL语义的数据仓库(shark对应hive), 三种大数据的场景。
上面的图是apache spark生态系统的简介。
1 spark是一种(RDD)分布式内存计算框架,用来替代,hadoop原始的mapreduce的方案。mapreduce对迭代计算很慢(上一步输出,作为下一步的输入的算法)。相反spark擅长迭代计算。scala语言编写的。提供scala,python,java的api接口。对scala语言的支持较好。可以讲计算分析结果导出到hdfs中,供报表,日志分析等需求使用。
2 spark streaming流式计算框架,处理不断产生的流式类型的,业务数据,放到spark中做内存运算,并将分析结果导出,是主流实时计算框架的storm的spark实现,现在大多数的公司的实时计算,基本上是storm来做。但是,使用storm来做实时计算框架,在hadoop集群上还要维护一套storm集群。维护成本高。