十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
大数据技术发展史:大数据的前世今生
创新互联网站建设公司提供网站设计和自适应建站服务。团队由有经验的网页设计师、程序员和市场专家组成,能够提供从H5建站,网站制作,一元广告,模板建站到成都小程序开发等全方位服务。 以客户为中心,致力于为客户提供创新、高效的解决方案,帮助您打造成功的企业网站。
今天我们常说的大数据技术,其实起源于Google在2004年前后发表的三篇论文,也就是我们经常听到的“三驾马车”,分别是分布式文件系统GFS、大数据分布式计算框架MapReduce和NoSQL数据库系统BigTable。
你知道,搜索引擎主要就做两件事情,一个是网页抓取,一个是索引构建,而在这个过程中,有大量的数据需要存储和计算。这“三驾马车”其实就是用来解决这个问题的,你从介绍中也能看出来,一个文件系统、一个计算框架、一个数据库系统。
现在你听到分布式、大数据之类的词,肯定一点儿也不陌生。但你要知道,在2004年那会儿,整个互联网还处于懵懂时代,Google发布的论文实在是让业界为之一振,大家恍然大悟,原来还可以这么玩。
因为那个时间段,大多数公司的关注点其实还是聚焦在单机上,在思考如何提升单机的性能,寻找更贵更好的服务器。而Google的思路是部署一个大规模的服务器集群,通过分布式的方式将海量数据存储在这个集群上,然后利用集群上的所有机器进行数据计算。 这样,Google其实不需要买很多很贵的服务器,它只要把这些普通的机器组织到一起,就非常厉害了。
当时的天才程序员,也是Lucene开源项目的创始人Doug Cutting正在开发开源搜索引擎Nutch,阅读了Google的论文后,他非常兴奋,紧接着就根据论文原理初步实现了类似GFS和MapReduce的功能。
两年后的2006年,Doug Cutting将这些大数据相关的功能从Nutch中分离了出来,然后启动了一个独立的项目专门开发维护大数据技术,这就是后来赫赫有名的Hadoop,主要包括Hadoop分布式文件系统HDFS和大数据计算引擎MapReduce。
当我们回顾软件开发的历史,包括我们自己开发的软件,你会发现,有的软件在开发出来以后无人问津或者寥寥数人使用,这样的软件其实在所有开发出来的软件中占大多数。而有的软件则可能会开创一个行业,每年创造数百亿美元的价值,创造百万计的就业岗位,这些软件曾经是Windows、Linux、Java,而现在这个名单要加上Hadoop的名字。
如果有时间,你可以简单浏览下Hadoop的代码,这个纯用Java编写的软件其实并没有什么高深的技术难点,使用的也都是一些最基础的编程技巧,也没有什么出奇之处,但是它却给社会带来巨大的影响,甚至带动一场深刻的科技革命,推动了人工智能的发展与进步。
我觉得,我们在做软件开发的时候,也可以多思考一下,我们所开发软件的价值点在哪里?真正需要使用软件实现价值的地方在哪里?你应该关注业务、理解业务,有价值导向,用自己的技术为公司创造真正的价值,进而实现自己的人生价值。而不是整天埋头在需求说明文档里,做一个没有思考的代码机器人。
Hadoop发布之后,Yahoo很快就用了起来。大概又过了一年到了2007年,百度和阿里巴巴也开始使用Hadoop进行大数据存储与计算。
2008年,Hadoop正式成为Apache的顶级项目,后来Doug Cutting本人也成为了Apache基金会的主席。自此,Hadoop作为软件开发领域的一颗明星冉冉升起。
同年,专门运营Hadoop的商业公司Cloudera成立,Hadoop得到进一步的商业支持。
这个时候,Yahoo的一些人觉得用MapReduce进行大数据编程太麻烦了,于是便开发了Pig。Pig是一种脚本语言,使用类SQL的语法,开发者可以用Pig脚本描述要对大数据集上进行的操作,Pig经过编译后会生成MapReduce程序,然后在Hadoop上运行。
编写Pig脚本虽然比直接MapReduce编程容易,但是依然需要学习新的脚本语法。于是Facebook又发布了Hive。Hive支持使用SQL语法来进行大数据计算,比如说你可以写个Select语句进行数据查询,然后Hive会把SQL语句转化成MapReduce的计算程序。
这样,熟悉数据库的数据分析师和工程师便可以无门槛地使用大数据进行数据分析和处理了。Hive出现后极大程度地降低了Hadoop的使用难度,迅速得到开发者和企业的追捧。据说,2011年的时候,Facebook大数据平台上运行的作业90%都来源于Hive。
随后,众多Hadoop周边产品开始出现,大数据生态体系逐渐形成,其中包括:专门将关系数据库中的数据导入导出到Hadoop平台的Sqoop;针对大规模日志进行分布式收集、聚合和传输的Flume;MapReduce工作流调度引擎Oozie等。
在Hadoop早期,MapReduce既是一个执行引擎,又是一个资源调度框架,服务器集群的资源调度管理由MapReduce自己完成。但是这样不利于资源复用,也使得MapReduce非常臃肿。于是一个新项目启动了,将MapReduce执行引擎和资源调度分离开来,这就是Yarn。2012年,Yarn成为一个独立的项目开始运营,随后被各类大数据产品支持,成为大数据平台上最主流的资源调度系统。
同样是在2012年,UC伯克利AMP实验室(Algorithms、Machine和People的缩写)开发的Spark开始崭露头角。当时AMP实验室的马铁博士发现使用MapReduce进行机器学习计算的时候性能非常差,因为机器学习算法通常需要进行很多次的迭代计算,而MapReduce每执行一次Map和Reduce计算都需要重新启动一次作业,带来大量的无谓消耗。还有一点就是MapReduce主要使用磁盘作为存储介质,而2012年的时候,内存已经突破容量和成本限制,成为数据运行过程中主要的存储介质。Spark一经推出,立即受到业界的追捧,并逐步替代MapReduce在企业应用中的地位。
一般说来,像MapReduce、Spark这类计算框架处理的业务场景都被称作批处理计算,因为它们通常针对以“天”为单位产生的数据进行一次计算,然后得到需要的结果,这中间计算需要花费的时间大概是几十分钟甚至更长的时间。因为计算的数据是非在线得到的实时数据,而是历史数据,所以这类计算也被称为大数据离线计算。
而在大数据领域,还有另外一类应用场景,它们需要对实时产生的大量数据进行即时计算,比如对于遍布城市的监控摄像头进行人脸识别和嫌犯追踪。这类计算称为大数据流计算,相应地,有Storm、Flink、Spark Streaming等流计算框架来满足此类大数据应用的场景。 流式计算要处理的数据是实时在线产生的数据,所以这类计算也被称为大数据实时计算。
在典型的大数据的业务场景下,数据业务最通用的做法是,采用批处理的技术处理历史全量数据,采用流式计算处理实时新增数据。而像Flink这样的计算引擎,可以同时支持流式计算和批处理计算。
除了大数据批处理和流处理,NoSQL系统处理的主要也是大规模海量数据的存储与访问,所以也被归为大数据技术。 NoSQL曾经在2011年左右非常火爆,涌现出HBase、Cassandra等许多优秀的产品,其中HBase是从Hadoop中分离出来的、基于HDFS的NoSQL系统。
我们回顾软件发展的历史会发现,差不多类似功能的软件,它们出现的时间都非常接近,比如Linux和Windows都是在90年代初出现,Java开发中的各类MVC框架也基本都是同期出现,Android和iOS也是前脚后脚问世。2011年前后,各种NoSQL数据库也是层出不群,我也是在那个时候参与开发了阿里巴巴自己的NoSQL系统。
事物发展有自己的潮流和规律,当你身处潮流之中的时候,要紧紧抓住潮流的机会,想办法脱颖而出,即使没有成功,也会更加洞悉时代的脉搏,收获珍贵的知识和经验。而如果潮流已经退去,这个时候再去往这个方向上努力,只会收获迷茫与压抑,对时代、对自己都没有什么帮助。
但是时代的浪潮犹如海滩上的浪花,总是一浪接着一浪,只要你站在海边,身处这个行业之中,下一个浪潮很快又会到来。你需要敏感而又深刻地去观察,略去那些浮躁的泡沫,抓住真正潮流的机会,奋力一搏,不管成败,都不会遗憾。
正所谓在历史前进的逻辑中前进,在时代发展的潮流中发展。通俗的说,就是要在风口中飞翔。
上面我讲的这些基本上都可以归类为大数据引擎或者大数据框架。而大数据处理的主要应用场景包括数据分析、数据挖掘与机器学习。数据分析主要使用Hive、Spark SQL等SQL引擎完成;数据挖掘与机器学习则有专门的机器学习框架TensorFlow、Mahout以及MLlib等,内置了主要的机器学习和数据挖掘算法。
此外,大数据要存入分布式文件系统(HDFS),要有序调度MapReduce和Spark作业执行,并能把执行结果写入到各个应用系统的数据库中,还需要有一个大数据平台整合所有这些大数据组件和企业应用系统。
图中的所有这些框架、平台以及相关的算法共同构成了大数据的技术体系,我将会在专栏后面逐个分析,帮你能够对大数据技术原理和应用算法构建起完整的知识体系,进可以专职从事大数据开发,退可以在自己的应用开发中更好地和大数据集成,掌控自己的项目。
希望对您有所帮助!~
大数据技术的体系庞大且复杂,基础的技术包含数据的采集、数据预处理、分布式存储、数据库、数据仓库、机器学习、并行计算、可视化等。
1、数据采集与预处理:FlumeNG实时日志收集系统,支持在日志系统中定制各类数据发送方,用于收集数据;Zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,提供数据同步服务。
2、数据存储:Hadoop作为一个开源的框架,专为离线和大规模数据分析而设计,HDFS作为其核心的存储引擎,已被广泛用于数据存储。HBase,是一个分布式的、面向列的开源数据库,可以认为是hdfs的封装,本质是数据存储、NoSQL数据库。
3、数据清洗:MapReduce作为Hadoop的查询引擎,用于大规模数据集的并行计算。
4、数据查询分析:Hive的核心工作就是把SQL语句翻译成MR程序,可以将结构化的数据映射为一张数据库表,并提供HQL(HiveSQL)查询功能。Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
5、数据可视化:对接一些BI平台,将分析得到的数据进行可视化,用于指导决策服务。
未至科技魔方是一款大数据模型平台,是一款基于服务总线与分布式云计算两大技术架构的一款数据分析、挖掘的工具平台,其采用分布式文件系统对数据进行存储,支持海量数据的处理。采用多种的数据采集技术,支持结构化数据及非结构化数据的采集。通过图形化的模型搭建工具,支持流程化的模型配置。通过第三方插件技术,很容易将其他工具及服务集成到平台中去。数据分析研判平台就是海量信息的采集,数据模型的搭建,数据的挖掘、分析最后形成知识服务于实战、服务于决策的过程,平台主要包括数据采集部分,模型配置部分,模型执行部分及成果展示部分等。
未至科技小蜜蜂网络信息雷达是一款网络信息定向采集产品,它能够对用户设置的网站进行数据采集和更新,实现灵活的网络数据采集目标,为互联网数据分析提供基础。
未至科技泵站是一款大数据平台数据抽取工具,实现db到hdfs数据导入功能,借助Hadoop提供高效的集群分布式并行处理能力,可以采用数据库分区、按字段分区、分页方式并行批处理抽取db数据到hdfs文件系统中,能有效解决大数据传统抽取导致的作业负载过大抽取时间过长的问题,为大数据仓库提供传输管道。
未至科技云计算数据中心以先进的中文数据处理和海量数据支撑为技术基础,并在各个环节辅以人工服务,使得数据中心能够安全、高效运行。根据云计算数据中心的不同环节,我们专门配备了系统管理和维护人员、数据加工和编撰人员、数据采集维护人员、平台系统管理员、机构管理员、舆情监测和分析人员等,满足各个环节的需要。面向用户我们提供面向政府和面向企业的解决方案。
未至科技显微镜是一款大数据文本挖掘工具,是指从文本数据中抽取有价值的信息和知识的计算机处理技术,
包括文本分类、文本聚类、信息抽取、实体识别、关键词标引、摘要等。基于Hadoop
MapReduce的文本挖掘软件能够实现海量文本的挖掘分析。CKM的一个重要应用领域为智能比对,
在专利新颖性评价、科技查新、文档查重、版权保护、稿件溯源等领域都有着广泛的应用。
未至科技数据立方是一款大数据可视化关系挖掘工具,展现方式包括关系图、时间轴、分析图表、列表等多种表达方式,为使用者提供全方位的信息展现方式。
大数据技术层面主要分为这几层
1. 预测分析技术
这也是大数据的主要功能之一。预测分析允许公司通过分析大数据源来发现、评估、优化和部署预测模型,从而提高业务性能或降低风险。同时,大数据的预测分析也与我们的生活息息相关。淘宝会预测你每次购物可能还想买什么,爱奇艺正在预测你可能想看什么,百合网和其他约会网站甚至试图预测你会爱上谁……
2. NoSQL数据库
NoSQL,Not Only SQL,意思是“不仅仅是SQL”,泛指非关系型数据库。NoSQL数据库提供了比关系数据库更灵活、可伸缩和更便宜的替代方案,打破了传统数据库市场一统江山的格局。并且,NoSQL数据库能够更好地处理大数据应用的需求。常见的NoSQL数据库有HBase、Redis、MongoDB、Couchbase、LevelDB等。
3. 搜索和知识发现
支持来自于多种数据源(如文件系统、数据库、流、api和其他平台和应用程序)中的大型非结构化和结构化数据存储库中自助提取信息的工具和技术。如,数据挖掘技术和各种大数据平台。
4. 大数据流计算引擎
能够过滤、聚合、丰富和分析来自多个完全不同的活动数据源的数据的高吞吐量的框架,可以采用任何数据格式。现今流行的流式计算引擎有Spark Streaming和Flink。
5. 内存数据结构
通过在分布式计算机系统中动态随机访问内存(DRAM)、闪存或SSD上分布数据,提供低延迟的访问和处理大量数据。
6. 分布式文件存储
为了保证文件的可靠性和存取性能,数据通常以副本的方式存储在多个节点上的计算机网络。常见的分布式文件系统有GFS、HDFS、Lustre 、Ceph等。
7. 数据虚拟化
数据虚拟化是一种数据管理方法,它允许应用程序检索和操作数据,而不需要关心有关数据的技术细节,比如数据在源文件中是何种格式,或者数据存储的物理位置,并且可以提供单个客户用户视图。
8. 数据集成
用于跨解决方案进行数据编排的工具,如Amazon Elastic MapReduce (EMR)、Apache Hive、Apache Pig、Apache Spark、MapReduce、Couchbase、Hadoop和MongoDB等。
9. 数据准备
减轻采购、成形、清理和共享各种杂乱数据集的负担的软件,以加速数据对分析的有用性。
10. 数据质量
使用分布式数据存储和数据库上的并行操作,对大型高速数据集进行数据清理和充实的产品。
随着大数据分析市场迅速扩展,哪些技术是最有需求和最有增长潜力的呢?在Forrester Research的一份最新研究报告中,评估了22种技术在整个数据生命周期中的成熟度和轨迹。这些技术都对大数据的实时、预测和综合洞察有着巨大的贡献。
1. 预测分析技术
这也是大数据的主要功能之一。预测分析允许公司通过分析大数据源来发现、评估、优化和部署预测模型,从而提高业务性能或降低风险。同时,大数据的预测分析也与我们的生活息息相关。淘宝会预测你每次购物可能还想买什么,爱奇艺正在预测你可能想看什么,百合网和其他约会网站甚至试图预测你会爱上谁……
2. NoSQL数据库
NoSQL,Not Only SQL,意思是“不仅仅是SQL”,泛指非关系型数据库。NoSQL数据库提供了比关系数据库更灵活、可伸缩和更便宜的替代方案,打破了传统数据库市场一统江山的格局。并且,NoSQL数据库能够更好地处理大数据应用的需求。常见的NoSQL数据库有HBase、Redis、MongoDB、Couchbase、LevelDB等。
3. 搜索和知识发现
支持来自于多种数据源(如文件系统、数据库、流、api和其他平台和应用程序)中的大型非结构化和结构化数据存储库中自助提取信息的工具和技术。如,数据挖掘技术和各种大数据平台。
4. 大数据流计算引擎
能够过滤、聚合、丰富和分析来自多个完全不同的活动数据源的数据的高吞吐量的框架,可以采用任何数据格式。现今流行的流式计算引擎有Spark Streaming和Flink。
5. 内存数据结构
通过在分布式计算机系统中动态随机访问内存(DRAM)、闪存或SSD上分布数据,提供低延迟的访问和处理大量数据。
6. 分布式文件存储
为了保证文件的可靠性和存取性能,数据通常以副本的方式存储在多个节点上的计算机网络。常见的分布式文件系统有GFS、HDFS、Lustre 、Ceph等。
7. 数据虚拟化
数据虚拟化是一种数据管理方法,它允许应用程序检索和操作数据,而不需要关心有关数据的技术细节,比如数据在源文件中是何种格式,或者数据存储的物理位置,并且可以提供单个客户用户视图。
8. 数据集成
用于跨解决方案进行数据编排的工具,如Amazon Elastic MapReduce (EMR)、Apache Hive、Apache Pig、Apache Spark、MapReduce、Couchbase、Hadoop和MongoDB等。
9. 数据准备
减轻采购、成形、清理和共享各种杂乱数据集的负担的软件,以加速数据对分析的有用性。
10. 数据质量
使用分布式数据存储和数据库上的并行操作,对大型高速数据集进行数据清理和充实的产品。
数据库可以按照内容类型分类:书目、全文、数字和图像。在计算中,数据库有时根据其组织方法进行分类。有许多不同类型的数据库,从最流行的方法关系数据库到分布式数据库、云数据库或NoSQL数据库。
常用数据库:
1、关系型数据库
关系型数据库是由IBM的E.F. Codd于1970年发明的,它是一个表格数据库,其中定义了数据,因此可以以多种不同的方式对其进行重组和访问。
关系数据库由一组表组成,其中的数据属于预定义的类别。每个表在一个列中至少有一个数据类别,并且每一行对于列中定义的类别都有一个特定的数据实例。
结构化查询语言(SQL)是关系数据库的标准用户和应用程序接口。关系数据库易于扩展,并且可以在原始数据库创建之后添加新的数据类别,而不需要修改所有现有应用程序。
2、分布式数据库
分布式数据库是一种数据库,其中部分数据库存储在多个物理位置,处理在网络中的不同点之间分散或复制。
分布式数据库可以是同构的,也可以是异构的。同构分布式数据库系统中的所有物理位置都具有相同的底层硬件,并运行相同的操作系统和数据库应用程序。异构分布式数据库中的硬件、操作系统或数据库应用程序在每个位置上可能是不同的。
3、云数据库
云数据库是针对虚拟化环境(混合云、公共云或私有云)优化或构建的数据库。云数据库提供了一些好处,比如可以按每次使用支付存储容量和带宽的费用,还可以根据需要提供可伸缩性和高可用性。
云数据库还为企业提供了在软件即服务部署中支持业务应用程序的机会。
4、NoSQL数据库
NoSQL数据库对于大型分布式数据集非常有用。
NoSQL数据库对于关系数据库无法解决的大数据性能问题非常有效。当组织必须分析大量非结构化数据或存储在云中多个虚拟服务器上的数据时,它们是最有效的。
5、面向对象的数据库
使用面向对象编程语言创建的项通常存储在关系数据库中,但是面向对象数据库非常适合于这些项。
面向对象的数据库是围绕对象(而不是操作)和数据(而不是逻辑)组织的。例如,关系数据库中的多媒体记录可以是可定义的数据对象,而不是字母数字值。
6、图形数据库
面向图形的数据库是一种NoSQL数据库,它使用图形理论存储、映射和查询关系。图数据库基本上是节点和边的集合,其中每个节点表示一个实体,每个边表示节点之间的连接。
图形数据库在分析互连方面越来越受欢迎。例如,公司可以使用图形数据库从社交媒体中挖掘关于客户的数据。