什么是大数据
维基百科将大数据描述为:
大数据是现有数据库管理工具和传统数据处理应用很难处理的大型、复杂的数据集,大数据的挑战包括采集、存储、搜索、共享、传输、分析和可视化等。
大数据的“大”是一个动态的概念
以前10GB的数据是个天文数字;而现在,在地球、物理、基因、空间科学等领域,TB级的数据集已经很普遍。大数据系统需要满足以下三个特性。(1)规模性(Volume):需要采集、处理、传输的数据容量大;(2)多样性(Variety):数据的种类多、复杂性高;(3)高速性(Velocity):数据需要频繁地采集、处理并输出。
数据的来源
大数据的数据来源很多,主要有信息管理系统、网络信息系统、物联网系统、科学实验系统等;
其数据类型包括结构化数据、半结构化数据和非结构化数据。
·管理信息系统:企业内部使用的信息系统,包括办公自动化系统、业务管理系统等,是常见的数据产生方式。管理信息系统主要通过用户输入和系统的二次加工的方式生成数据,其产生的数据大多为结构化数据,存储在数据库中。
·网络信息系统:基于网络运行的信息系统是大数据产生的重要方式,电子商务系统、社交网络、社会媒体、搜索引擎等都是常见的网络信息系统,网络信息系统产生的大数据多为半结构化或无结构化的数据,网络信息系统与管理信息系统的区别在于管理信息系统是内部使用的,不接入外部的公共网络。
·物联网系统:通过传感器获取外界的物理、化学、生物等数据信息。
·科学实验系统:主要用于学术科学研究,其环境是预先设定的,数据既可以是由真实实验产生也可以是通过模拟方式获取仿真的。
生产数据的三个阶段
被动式生成数据:
数据库技术使得数据的保存和管理变得简单,业务系统在运行时产生的数据直接保存数据库中,这个时候数据的产生是被动的,数据是随着业务系统的运行产生的。
主动式生成数据:
互联网的诞生尤其是Web 2.0、移动互联网的发展大大加速了数据的产生,人们可以随时随地通过手机等移动终端随时随地地生成数据,人们开始主动地生成数据。
感知式生成数据:
感知技术尤其是物联网的发展促进了数据生成方式发生了根本性的变化,遍布在城市各个角落的摄像头等数据采集设备源源不断地自动采集、生成数据。
大数据特点
(1)数据产生方式:
·在大数据时代,数据的产生方式发生了巨大的变化,数据的采集方式由以往的被动采集数据转变为主动生成数据。
(2)数据采集密度:
·以往我们进行数据采集时的采样密度较低,获得的采样数据有限;
·在大数据时代,有了大数据处理平台的支撑,我们可以对需要分析的事件的数据进行更加密集地采样,从而精确地获取事件的全局数据。
(3)数据源:
·以往我们多从各个单一的数据源获取数据,获取的数据较为孤立,不同数据源之间的数据整合难度较大;
·在大数据时代,我们可以通过分布式计算、分布式文件系统、分布式数据库等技术对多个数据源获取的数据进行整合处理。
(4)数据处理方式:
·以往我们对数据的处理大多采用离线处理的方式,对已经生成的数据集中进行分析处理,不对实时产生的数据进行分析;
·在大数据时代,我们可以根据应用的实际需求对数据采取灵活的处理方式,对于较大的数据源、响应时间要求低的应用可以采取批处理的方式进行集中计算,而对于响应时间要求高的实时数据处理则采用流处理的方式进行实时计算,并且可以通过对历史数据的分析进行预测分析;
·大数据需要处理的数据大小通常达到PB(1024 TB)或EB(1024 PB)级; 数据的类型多种多样,包括结构化数据、半结构化数据和非结构化数据;
·巨大的数据量和种类繁多的数据类型给大数据系统的存储和计算带来很大挑战,单节点的存储容量和计算能力成为瓶颈;
·分布式系统是对大数据进行处理的基本方法,分布式系统将数据切分后存储到多个节点上,并在多个节点上发起计算,解决单节点的存储和计算瓶颈。常见的数据切分的方法有随机方法、哈希方法和区间方法:
·随机方法将数据随机分布到不同的节点;
·哈希方法根据数据的某一行或者某一列的哈希值将数据分布到不同的节点;
·区间方法将不同的数据按照不同区间分布到不同节点。
(5)大数据的应用领域
·大数据在社会生活的各个领域得到广泛的应用,不同领域的大数据应用具有不同的特点,其对响应时间、系统稳定性、计算精确性的要求各不相同。
主要的大数据处理系统
大数据处理的数据源类型多种多样,如结构化数据、半结构化数据、非结构化数据,数据处理的需求各不相同:
对海量已有数据进行批量处理,对大量的实时生成的数据进行实时处理,在进行数据分析时进行反复迭代计算,对图数据进行分析计算。对大数据以及人工智能概念都是模糊不清的,该按照什么线路去学习,学完往哪方面发展,想深入了解,想学习的同学欢迎加入大数据学习qq群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系 。从java和linux入手,其后逐步的深入到HADOOP-hive-oozie-web-flume-python-hbase-kafka-scala-SPARK等相关知识一一分享!
目前主要的大数据处理系统有:
数据查询分析计算系统、批处理系统、流式计算系统、迭代计算系统、图计算系统和内存计算系统。
1.数据查询分析计算系统
大数据时代,数据查询分析计算系统需要具备对大规模数据进行实时或准实时查询的能力,数据规模的增长已经超出了传统关系型数据库的承载和处理能力。
目前主要的数据查询分析计算系统包括HBase、Hive、Cassandra、Dremel、Shark、Hana等。
HBase:
·开源、分布式、面向列的非关系型数据库模型,是Apache的Hadoop项目的子项目;
·源于Google论文《Bigtable:一个结构化数据的分布式存储系统》,实现了其中的压缩算法、内存操作和布隆过滤器;
·HBase的编程语言为Java。HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据。
Hive:
·基于Hadoop的数据仓库工具,用于查询、管理分布式存储中的大数据集,提供完整的SQL查询功能,可以将结构化的数据文件映射为一张数据表。
·Hive提供了一种类SQL语言(HiveQL)可以将SQL语句转换为MapReduce任务运行。
Cassandra:
·开源NoSQL数据库系统,最早由Facebook开发,并于2008年开源;
·由于其良好的可扩展性,Cassandra被 Facebook、Twitter、Backspace、Cisco等公司使用;
·其数据模型借鉴了 Amazon的 Dynamo和 Google BigTable,是一种流行的分布式结构化数据存储方案。
Impala:
·由Cloudera公司主导开发,是运行在Hadoop平台上的开源的大规模并行SQL查询引擎。
·用户可以使用标准的SQL接口的工具查询存储在Hadoop的HDFS和HBase中的PB级大数据。
Shark:
·Spark上的数据仓库实现,即SQL on Spark;
·与Hive相兼容,但处理Hive QL 的性能比Hive 快100 倍。
Hana:
·由SAP公司开发的与数据源无关、软硬件结合、基于内存计算的平台。
2.批处理系统
MapReduce是被广泛使用的批处理计算模式。
MapReduce对具有简单数据关系、易于划分的大数据采用“分而治之”的并行处理思想,将数据记录的处理分为Map和Reduce两个简单的抽象操作,提供了一个统一的并行计算框架。
批处理系统将复杂的并行计算的实现进行封装,大大降低开发人员的并行程序设计难度。
Hadoop和Spark是典型的批处理系统。MapReduce的批处理模式不支持迭代计算。
Hadoop:
·目前大数据处理最主流的平台,是Apache基金会的开源软件项目,使用Java语言开发实现。
·Hadoop平台使开发人员无需了解底层的分布式细节,即可开发出分布式程序,在集群中对大数据进行存储、分析。
Spark:
·由加州伯克利大学AMP实验室开发,适合用于机器学习、数据挖掘等迭代运算较多的计算任务。
·Spark引入了内存计算的概念,运行Spark时服务器可以将中间数据存储在RAM内存中,大大加速数据分析结果的返回速度,可用于需要互动分析的场景。
3.流式计算系统
流式计算具有很强的实时性,需要对应用源源不断产生的数据实时进行处理,使数据不积压、不丢失,常用于处理电信、电力等行业应用以及互联网行业的访问日志等。
Facebook 的 Scribe、 Apache的 Flume、 Twitter的 Storm、 Yahoo的S4、UCBerkeley的Spark Streaming是常用的流式计算系统。
Scribe:
·Scribe 由 Facebook 开发开源系统,用于从海量服务器实时收集日志信息, 对日志信息进行实时的统计分析处理,应用在Facebook内部。
Flume:
· Flume由 Cloudera 公司开发,其功能与Scribe相似,主要用于实时收集在海量节点上产生的日志信息,存储到类似于HDFS的网络文件系统中,并根据用户的需求进行相应的数据分析。
Storm:
·基于拓扑的分布式流数据实时计算系统,由BackType公司(后被Twitter收购)开发,现已经开放源代码,并应用于淘宝、百度、支付宝、Groupon、Facebook等平台,是主要的流数据计算平台之一。
S4:
·S4的全称是Simple Scalable Streaming System,是由Yahoo开发的通用、分布式、可扩展、部分容错、具备可插拔功能的平台;
·其设计目的是根据用户的搜索内容计算得到相应的推荐广告,现已经开源,是重要的大数据计算平台。
Spark Streaming:
·构建在Spark上的流数据处理框架,将流式计算分解成一系列短小的批处理任务进行处理。
·网站流量统计是Spark Streaming的一种典型的使用场景,这种应用既需要具有实时性,还需要进行聚合、去重、连接等统计计算操作;
如果使用Hadoop MapReduce框架,则可以很容易地实现统计需求,但无法保证实时性;如果使用Storm这种流式框架则可以保证实时性,但实现难度较大;Spark Streaming可以以准实时的方式方便地实现复杂的统计需求。
4.迭代计算系统
针对MapReduce不支持迭代计算的缺陷,人们对Hadoop的MapReduce进行了大量改进,Haloop、iMapReduce、Twister、Spark是典型的迭代计算系统。
·HaLoop:Haloop是Hadoop MapReduce框架的修改版本,用于支持迭代、递归类型的数据分析任务,如PageRank、K-means等。
·iMapReduce:一种基于MapReduce 的迭代模型,实现了MapReduce 的异步迭代。
·Twister:基于Java的迭代MapReduce模型,上一轮Reduce的结果会直接传送到下一轮的Map。
·Spark:基于内存计算的开源集群计算框架。
5.图计算系统
社交网络、网页链接等包含具有复杂关系的图数据,这些图数据的规模巨大,可包含数十亿顶点和上百亿条边,图数据需要由专门的系统进行存储和计算。
常用的图计算系统有Google公司的Pregel、Pregel的开源版本Giraph、微软的Trinity、Berkeley AMPLab的GraphX以及高速图数据处理系统PowerGraph。
Pregel:
Google公司开发的一种面向图数据计算的分布式编程框架,采用迭代的计算模型。Google的数据计算任务中,大约80%的任务处理采用MapReduce模式,如网页内容索引;图数据的计算任务约占20%,采用Pregel进行处理。
Giraph:
一个迭代的图计算系统,最早由雅虎公司借鉴Pregel系统开发,后捐赠给Apache软件基金会,成为开源的图计算系统。Giraph是基于Hadoop建立的,Facebook在其脸谱搜索服务中大量使用了Giraph。
Trinity:
微软公司开发的图数据库系统,该系统是基于内存的数据存储与运算系统,源代码不公开。
GraphX:
由AMPLab开发的运行在数据并行的Spark平台上的图数据计算系统。
PowerGraph:
高速图处理系统,常用于广告推荐计算和自然语言处理。
6.内存计算系统
随着内存价格的不断下降、服务器可配置内存容量的不断增长,使用内存计算完成高速的大数据处理已成为大数据处理的重要发展方向。
目前常用的内存计算系统有分布式内存计算系统Spark、全内存式分布式数据库系统 HANA、 Google的可扩展交互式查询系统Dremel。
Dremel:
·Google的交互式数据分析系统,可以在数以千计的服务器组成的集群上发起计算,处理PB级的数据。Dremel是Google MapReduce的补充,大大缩短了数据的处理时间,成功地应用在Google的bigquery中。
HANA:
·SAP公司开发的基于内存技术、面向企业分析性的产品。
Spark:
·基于内存计算的开源集群计算系统
七、大数据处理的基本流程
大数据的处理流程可以定义为在适合工具的辅助下,对广泛异构的数据源进行抽取和集成,结果按照一定的标准统一存储,利用合适的数据分析技术对存储的数据进行分析,从中提取有益的知识并利用恰当的方式将结果展示给终端用户。
1.数据抽取与集成
由于大数据处理的数据来源类型丰富,大数据处理的第一步是对数据进行抽取和集成,从中提取出关系和实体,经过关联和聚合等操作,按照统一定义的格式对数据进行存储。
现有的数据抽取和集成方法有三种:
基于物化或ETL方法的引擎(Materialization or ETL Engine)、基于联邦数据库或中间件方法的引擎(Federation Engine or Mediator)、基于数据流方法的引擎(Stream Engine)。
2.数据分析
数据分析是大数据处理流程的核心步骤,通过数据抽取和集成环节,我们已经从异构的数据源中获得了用于大数据处理的原始数据,用户可以根据自己的需求对这些数据进行分析处理,比如数据挖掘、机器学习、数据统计等,数据分析可以用于决策支持、商业智能、推荐系统、预测系统等。
3.数据解释
大数据处理流程中用户最关心的是数据处理的结果,正确的数据处理结果只有通过合适的展示方式才能被终端用户正确理解,因此数据处理结果的展示非常重要,可视化和人机交互是数据解释的主要技术。
我们在开发调试程序的时候经常通过打印语句的方式来呈现结果,这种方式非常灵活、方便,但只有熟悉程序的人才能很好地理解打印结果。
使用可视化技术,可以将处理的结果通过图形的方式直观地呈现给用户,标签云(Tag Cloud)、历史流(History Flow)、空间信息流(Spatial Information Flow)等是常用的可视化技术,用户可以根据自己的需求灵活地使用这些可视化技术;
人机交互技术可以引导用户对数据进行逐步的分析,使用户参与到数据分析的过程中,使用户可以深刻地理解数据分析结果。
为云计算与大数据发展做出贡献的科学家
超级计算机之父—西摩·克雷(Seymour Cray)在人类解决计算和存储问题的历程中,西摩·克雷成为了一座丰碑,被称为超级计算机之父。
西摩·克雷,生于1925年9月28日,美国人,1958年设计建造了世界上第一台基于晶体管的超级计算机,成为计算机发展史上的重要里程碑。同时也对精简指令(RISC)高端微处理器的产生 有重大的贡献。1972年,他创办了克雷研究公司,公司的宗旨是只生产超级计算机。此后的十余年中,克雷先后创造了Cray-1、Cray-2等机型。
作为高性能计算机领域中最重要的人物之一,他亲手设计了Cray全部的硬件与操作系统。Cray机成为了从事高性能计算学者中永远的记忆,到1986年1月为止,世界上有130台超级计算机投入使用,其中大约90台是由克雷的上市公司—克雷研究所研制的。
美国的《商业周刊》在1990年的一篇文章中曾这样写道:“西摩·克雷的天赋和非凡的干劲已经给本世纪的技术留下了不可磨灭的印记”。2013年11月高性能计算Top500排行中第2名和第6名均为Cray机。
云计算之父—约翰·麦卡锡(John McCarthy )
约翰·麦卡锡1927年生于美国,1951年获得普林斯顿大学数学博士学位。他因在人工智能领域的贡献而在1971年获得图灵奖;
麦卡锡真正广为人知的称呼是“人工智能之父”,因为他在1955年的达特矛斯会议上提出了“人工智能”这个概念,使人工智能成为了一门新的学科。
1958年发明了LISP语言,而LISP语言中的MapReduce在几十年后成为了Google云计算和大数据系统中最为核心的技术。
麦卡锡更为富有远见的预言是他在1960年提出的“今后计算机将会作为公共设施提供给公众”这一观点与现在的云计算的理念竟然丝毫不差。正是由于他提前半个多世纪就预言了云计算这种新的模式,因此我们将他称为“云计算之父”。
大数据之父—吉姆·格雷(Jim Gray)
吉姆·格雷生于1944年,在著名的加州大学伯克利分校计算机科学系获得博士学位,是声誉卓著的数据库专家,1998年度的图灵奖获得者;
2007年1月11日在美国国家研究理事会计算机科学与通信分会上吉姆·格雷明确地阐述了科学研究第四范式,认为依靠对数据分析挖掘也能发现新的知识,这一认识吹响了大数据前进的号角,计算应用于数据的观点在当前的云计算大数据系统中得到了大量的体现。