BigData | 大数据处理技术谁领风骚?

来自:SAMshare,作者:Samshare

Index

  • 常见大数据处理技术初识

  • 优秀的大数据处理框架必备

  • 大规模数据处理初体验


常见大数据处理技术初识

从蔡元楠老师的《大规模数据处理实战》课程中,进一步了解了较为全面的大数据处理技术,这里结合蔡老师的知识点以及自己的一些知识搜集,整理出这篇文章,方便各位一起学习以及日后复习。

Pic01:超大规模数据处理技术的产生年代(蔡元楠-大规模数据处理)


  • MapReduce:一个软件框架,用以轻松编写处理海量(TB级)数据的并行应用程序,以可靠和容错的方式连接大型集群中上万个节点(商用硬件),MapReduce是hadoop的核心组件之一,是一种编程模型,是一种编程方法,抽象理论。

Pic02:MapReduce框架的体系结构(网络)


  • Hadoop:Hadoop就是一个实现了Google云计算系统的开源系统,包括并行计算模型Map/Reduce,分布式文件系统HDFS,以及分布式数据库Hbase。

  • FlumeJava:flume java底层也是通过Map Reduce的方式执行任务,本质是一个面向数据的计算框架。该框架易用,采用优化策略使得实际的mr任务数缩减到1/5,从而执行效率也得到提升。

  • storm: 一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。

Pic03:Storm数据交互图(网络)


  • Spark: 是专为大规模数据处理而设计的快速通用的计算引擎,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

Pic04: Spark的应用范围(网络)


  • Kafka: 由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

Pic05:Kafka的数据流(网络)


  • Cloud Dataflow: 是一个完全托管的服务,它能够自动优化、部署、管理和扩展。它能够让开发者很容易地使用统一的编程为批处理和流服务创建复杂的管道。对于在现代运行环境中可组合的微服务程序来说,spring cloud data flow是一个原生云可编配的服务。

  • Flink: 由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行。

  • Beam: Beam项目主要是对数据处理(有限的数据集,无限的数据流)的编程范式和接口进行了统一定义(Beam Model) 这样,基于Beam开发的数据处理程序可以执行在任意的分布式计算引擎上。

Pic06: Beam 架构(网络)


优秀的大数据处理框架必备

从蔡老师的讲解中,我们可以知道,MapReduce现在越来越不受硅谷顶尖公司的"喜爱",主要的问题集中在下面三点:

  • 维护成本过高:因为使用MapReduce,需要严格遵循分布的Map和Reduce操作,当架构越来越复杂的时候,则需协调多个Map和Reduce任务。在每一个应用过程中,都有可能会出错,需要重试以及异常处理机制。

  • 时间性能达不到"预期":即便MapReduce是一个精巧的系统,但是没有合适的性能优化配置是达不到期望的性能的,比如缓冲大小(buffer size)、分片多少(number of shards)、预抓取策略(prefetch)、缓存大小(cache size)等。

  • 流处理不太"得心应手":MapReduce是为了批处理而诞生的,应对流处理当然不太得心应手,但实际的系统总是需要两者混合使用的。

基于以上内容,蔡老师总结出了几点优秀大数据处理框架必备的关键,再加上我在网络上看的资料总结出以下几点:

  • 能够自动进行性能优化,无需人为配置;

  • 数据处理与背后运行引擎分离开来;

  • 统一批处理和流处理的编程模型;

  • 架构层面可以提供异常处理和数据监控的能力;

  • 快、容错、可靠、可伸缩。


大规模数据处理初体验

以上对大数据有一定的认识了,接下来看几个实例来加深对大数据处理的概念:

这里是蔡老师的例子,如何得到大型电商平台消费量Top10的产品呢?

聪明的你很快就知道,以往的处理方式不再适用,你无法直接groupby了,肯定会报OOM错误,必须得用其他办法,以下是大数据分布式解决方案:

1)将数据分成1000份,分配给1000部机器;

2)1000部机器按照传统的分组办法,统计出Top10的商品及其数量;

3)汇总1000部机器的统计结果,再次进行统计,得出最后答案。

Pic07: 分布式处理(蔡元楠-大规模数据处理)


References

  • 百度百科

  • 蔡元楠-01 | 为什么MapReduce会被硅谷一线公司淘汰? -极客时间

  • 蔡元楠-02 | MapReduce后谁主沉浮:怎样设计下一代数据处理技术? -极客时间

  • 蔡元楠-03 | 大规模数据处理初体验:怎样实现大型电商热销榜? -极客时间

  • 大数据入门:各种大数据技术介绍 - http://www.aboutyun.com/thread-7569-1-1.html

  • FlumeJava: Easy, Efficient Data-Parallel Pipelines Abastrct - https://blog.csdn.net/junerli/article/details/78402868

  • flume java介绍 -https://blog.csdn.net/a331685690/article/details/82357084

  • 震惊了!原来这才是kafka!-123archu https://www.jianshu.com/p/d3e963ff8b70

  • 分布式计算框架:Google Cloud Dataflow -白乔 https://blog.csdn.net/bluejoe2000/article/details/56843099

  • Apache Beam指南 -vinfly_li https://blog.csdn.net/vinfly_li/article/details/79396948

推荐↓↓↓
人工智能与大数据
上一篇:从龙套到 C 位,AI 就这样成为谷歌 I/O 的台柱子 下一篇:蚂蚁金服开源机器学习工具SQLFlow,机器学习比SQL还简单