大数据技术的前世今生

一、谷歌

搜索引擎主要的作用有:1. 网页抓取 2. 索引构建。

在这个过程中,涉及到大量的数据存储运算。为了优化这个问题,谷歌在2004年左右先后发表了三篇论文,分别是分布式文件系统GFS、 大数据分布式计算框架MapReduceNoSQL数据库系统BigTable。通过这种方案,可以使用多个性能普通的计算机联合计算,来代替一台性能优秀但是造价昂贵的计算机,一方面提高效率,另一方面也可以降低成本。

二、天才

世界的发展方向是天才们的灵光乍现。

在谷歌发表上节所述论文后,当时的天才程序员Doug Cutting等人,利用两年的业余时间,开发出一套大数据技术框架,这就是如今赫赫有名的Hadoop,Doug Cutting也因此成为apache基金会的主席。Hadoop的icon大象,设计灵感正来源于Doug Cutting儿子的一个塑料玩具。

Hadoop的主要组成包括:

  1. 分布式文件存储系统HDFS
  2. 大数据计算引擎MapReduce
  3. 资源调度系统Yarn

此时此刻这个世界上有无数行代码被敲下,一个又一个软件被实现,这些软件中只有极小部分能成为各自领域的主流,大多数则沦为历史车轮下的细小尘埃。我觉得,我们在做软件开发的时候,也可以多思考一下,我们所开发软件的价值点在哪里?真正需要使用软件实现价值的地方在哪里?你应该关注业务、理解业务,有价值导向,用自己的技术为公司创造真正的价值,进而实现自己的人生价值。而不是整天埋头在需求说明文档里,做一个没有思考的代码机器人。

三、生态

Hadoop的突然问世,吸引了大量的目光。

雅虎认为使用MapReduce框架编写程序太过于麻烦,提出一种脚本语言Pig。Pig可以使用类SQL的方式,对数据进行计算处理,经过编译后就可以生成对应的MapReduce程序,在Hadoop上运行。

Facebook认为使用Pig会增加工程师的学习负担,提出Hive。Hive可以使用SQL脚本直接处理分布式数据,即Hive可以将SQL语句转换为MapReduce计算程序。

随后,众多 Hadoop 周边产品开始出现,大数据生态体系逐渐形成,其中包括:专门将关系数据库中的数据导入导出到 Hadoop 平台的 Sqoop;针对大规模日志进行分布式收集、聚合和传输的 Flume;MapReduce 工作流调度引擎 Oozie 等。

随着Hadoop的应用渐广,一些弊端也随之显现。例如,MapReduce在机器学习计算时性能较差,一方面因为机器学习期间要进行大量的迭代计算,每一次计算都要重新执行一轮Map和Reduce任务,带来大量的无谓消耗;另一方面,MapReduce完全使用磁盘作为存储介质,限定了计算速度。针对此种缺陷,UC伯克利提出Spark。

一般说来,像 MapReduce、Spark 这类计算框架处理的业务场景都被称作批处理计算,因为它们通常针对以“天”为单位产生的数据进行一次计算,然后得到需要的结果,这中间计算需要花费的时间大概是几十分钟甚至更长的时间。因为计算的数据是非在线得到的实时数据,而是历史数据,所以这类计算也被称为大数据离线计算。

而在大数据领域,还有另外一类应用场景,它们需要对实时产生的大量数据进行即时计算,比如对于遍布城市的监控摄像头进行人脸识别和嫌犯追踪。这类计算称为大数据流计算,相应地,有 Storm、Flink、Spark Streaming 等流计算框架来满足此类大数据应用的场景。 流式计算要处理的数据是实时在线产生的数据,所以这类计算也被称为大数据实时计算。

在典型的大数据的业务场景下,数据业务最通用的做法是,采用批处理的技术处理历史全量数据,采用流式计算处理实时新增数据。而像 Flink 这样的计算引擎,可以同时支持流式计算和批处理计算。

除了大数据批处理和流处理,NoSQL 系统处理的主要也是大规模海量数据的存储与访问,所以也被归为大数据技术。 NoSQL 曾经在 2011 年左右非常火爆,涌现出 HBase、Cassandra 等许多优秀的产品,其中 HBase 是从 Hadoop 中分离出来的、基于 HDFS 的 NoSQL 系统。

大数据技术生态体系.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容