企业级大数据处理方案有三种业务场景:
1.离线处理;(mapreduce(第一代)、sparksql(第二代))
2.实时处理;(数据库操作、storm)
3.准实时处理。(spark Streaming)
mapreduce与spark对比
mr与spark优缺点对比:(一)
a.mapreduce频繁的数据读写,使数据处理速度滞后
b.spark所有计算在内存中消除了,磁盘读写此快其一
mr与spark优缺点对比:(二)
a.mapreduce每一个计算过程与上一个计算过程无血统继承
b.spark步步操作均有血统继承关系,ageline机制,可以追溯到数据来源或者checkpoint(lazy级别)容错性与框架的自动优化
mr与spark优缺点对比:(三)
程序运行的可视化,spark有DAG图
streaming和storm对比
streaming和storm优缺点对比:(一)
a.storm计算相当于电流,这边进那边就要出
b.streaming为了提高吞吐量,引进了批处理,牺牲了实时性,增加了吞吐量
streaming和storm优缺点对比:(二)
a.storm拓扑计算模式(有向无环图)
b.streamingDAG图,流式计算,中间数据交换可以调用丰富的计算框架,sql和ml和graphX
传统数据库实时操作与大数据技术对比:
a.虽然实时,但是数据量大时,无法解决,速度就降了下来
b.大数据技术,解决了大数据,牺牲了实时
综上所述:任何技术都不是完美的,为了一方面就必然牺牲另一方面,人无完人。吞吐量与实时的取舍,内存与速度的取舍。--当实时处理的数据量的能力提高,离线处理还有存在的必要吗?如果数据处理不能实时性,必然影响数据的价值。大数据的核心价值:数据挖掘和数据分析最终为数据消费者的行为和决策力服务。
继续反思:既然每种大数据处理技术都有缺陷,那怎样才能达到我们心中的完美效果呢?
三国曹操选用人才的方略-物尽其才,只要你有才,是不会让你埋没的。
所以大数据处理方案不是单纯的某种技术的天下,而是各分块的紧密结合,优势互补,进而达到理想的效果。所以,必须了解技术的优势和使用场景,才能在实际的业务场景中,挑选合适的技术。就现在而言:
1.Hadoop只能用作存储和资源管理
2.spark只能作为计算,(只计算)
3.storm只计算
4.kafka数据缓存层(平衡流式数据量的过大过小)
5.flume采集
7.Tachyon分布式内存文件系统(alluxio)
8.redis、mongoDB分布式内存数据库
9.实时搜索引擎solr和lucene
基本上数据处理的主流技术都在这了,上文虽然都是一种,但是每类技术都有多种,用途都是一样,只是场景和处理逻辑不同。那如何构建企业级大数据处理,且看下回。