(一)大数据介绍
数据是存储在包含信息的介质上的物理符号。数据的存在方式非常多,从古代结绳、小棍到现在的硬盘都是数据存在的方式。数据伴随着人类的增长,人类创造的数据也随着技术的发展而增加,特别是在电子时代,人类产生数据的能力得到了前所未有的提高。数据的增加使得人们不得不面对这些海量的数据,大数据这个概念就是在这种历史条件下提出的。大数据是传统的IT技术和软硬件工具在一个不可容忍的时期内无法感知、获取、管理、处理和服务的一组数据。传统的IT技术和软硬件工具是指传统的计算机计算模式和传统的数据分析算法。因此,大数据分析的实现通常需要从两个方面着手:一是利用聚类方法获得强大的数据分析能力;二是研究新的大数据分析算法。大数据技术是用来传输、存储、分析和应用大数据的软硬件技术。从高性能计算的角度来看大数据系统,可以认为大数据系统是一种面向数据的高性能计算系统。
(二)大数据产生的原因
大数据概念的出现并非无缘无故。生产力决定生产关系的原因在技术领域仍然有效。正是因为技术已经达到了一定的阶段,才不断产生大量的数据。使当前的技术面临重大挑战。大数据出现的原因可以概括如下。
1.数据生产方法的自动化
数据生产经历了从结绳计数到完全自动化的过程,人类的数据生产能力已不再具有可比性。随着物联网技术、智能城市技术和工业控制技术的广泛应用,数据生产是完全自动化的,自动化的数据生产必然会产生大量的数据。即使是今天人们使用的大多数数字设备也可以被认为是一种自动化的数据生产设备。我们的手机将与数据中心保持联系,通话记录、位置记录、成本记录将由服务器记录,使用计算机时我们将访问网页的历史记录,访问习惯将由服务器记录和分析。我们生活在城市和社区,到处都是传感器和摄像机,它们不断地产生数据,保护我们的安全;天空中的卫星、地面上的雷达、空中的飞机不断自动生成数据。
2.数据生产被整合到每个人的日常生活中
在计算机的早期,数据的制作往往只由专业人员完成。随着计算机技术的飞速发展,计算机得到了迅速的普及。特别是手机和移动互联网的出现,将数据的产生与每个人的日常生活结合起来,每个人都成为数据的生产者。发送微博、拍照、使用公交卡和银行卡、QQ上聊天、玩游戏,数据的产生已经完全融入我们的生活。个人数据的产生呈现出随时随地、移动化的趋势,我们的生活已经是数字化的生活了。
3.越来越多的图像、视频和音频数据
几千年来,人们主要依靠文本来记录信息。随着科技的发展,越来越多的人使用视频、图像和音频来记录和传播信息。过去,我们只通过文本在互联网上聊天,现在我们可以使用视频。人们越来越习惯使用多媒体进行通信。城市的摄像机每天都会产生大量的视频数据,由于技术的进步,图像和视频的分辨率越来越高,数据量也越来越大。
4.网络技术的发展为数据生产提供了极大的便利
在前面提到的大数据的原因中,仍然缺乏一个重要的介绍内容:互联网。网络技术的迅速发展是大数据的重要催化剂。没有网络的发展,就没有移动互联网,我们就不可能随时随地实现数据生产。没有网络的发展,就不可能实现大数据视频数据的传输和存储;没有网络的发展,就不会有大量数据的自动生成和传输。网络的发展催生了云计算等网络应用的出现,将数据产生的触角延伸到网络的各个终端,使任何终端产生的数据能够快速有效地传输和存储。很难想象大数据会出现在一个非常恶劣的网络环境中,因此我们可以认为大数据的出现取决于集成电路技术和网络技术的发展。集成电路为大数据的产生和处理提供了计算能力的基础,网络技术为大数据的传输提供了可能。
5.云计算概念的出现进一步推动了大数据的发展。
云计算的概念在2008年左右进入我国。1960年,人工智能之父麦卡锡预言,“未来计算机作为公共设施向公众开放”。2012年3月,在国务院工作报告中,云计算作为附录给出了政府官方的解释,表达了政府对云计算产业的重视。云计算在政府工作报告中被定义为“云计算:一种用于增加、使用和提供基于互联网的服务的模型,通常涉及在互联网上提供动态可伸缩和经常虚拟化的资源。”它是传统计算机和网络技术融合的产物,这意味着计算能力也可以作为一种商品在互联网上流通。随着云计算的出现,计算和服务可以通过网络提供给用户,用户的数据也可以很容易地通过网络传输。云计算在未来扮演着重要的角色。数据的生产、处理和传输可以通过网络快速进行,改变了传统的数据生产模式。这一变化大大加快了数据生产的速度,对大数据的产生起到了至关重要的作用。
(三)数据计量单位
大数据出现后,计量单位的数据也逐渐变化。常用的MB和GB不能有效地描述大数据。当大数据研究和应用时,我们经常会接触到数据存储的测量单位。数据存储的测量单位描述如下。
在计算机科学中,我们通常使用二进制数,如0和1来表示数据信息。最小的信息单位是位,0或1是位。8位是字节(字节),例如10010111是字节。人们习惯于用大写字母B来表示拜特。在单个系统中,信息通常以2为单位,例如1024 Byte=1KB(Kilo-Byte,千字节)。
目前,主流市场的硬盘容量大多为TB,典型的大数据将普遍采用PB、EB和ZB这三个单元。
(四)大数据是人类认识世界的一种新手段
由于好奇的天性,人类不断地认识他们所生活的世界。古人通过观察了解世界,发现火可以煮食物,石头可以凿坚果,发现月亮有圆缺。随着知识的不断积累,人类开始把通过观察和实验获得的感性知识作为理论加以总结。伽利略在比萨斜塔的实验中,两个大小不同的铁球同时落地,这是人类认知从感性经验上升到理性理论的一个重要实验。有了理论,人类就可以用理论来分析和预测世界。我们有日历,可以预测一年中的季节,指导春天和秋天的栽培。随着理论的逐步完善,人类只有通过计算和模拟才能发现和理解新的规律。目前,大量材料在材料科学研究中的特点是通过“第一原理”和软件模拟来完成的。在全面禁止核爆炸的情况下,原子弹的研究也完全依赖于模拟核爆炸的计算。人类认识世界的方式经历了实验、理论和计算三个阶段。随着网络技术和计算机技术的发展,人类最近获得了一种新的认识世界的方式,即用大量的数据来发现新的规律。这种认识世界的方法被称为“第四范式”。这是由美国著名科学家吉姆·格雷(Jim Gray)在2007年提出的。这标志着正式采用数据作为了解世界的公认方式。大数据出现后,人类认识世界的途径有四种:实验、理论、计算和数据。现在我们一年可能比过去几千年产生更多的数据,甚至O(n)数据处理方法面对一个庞大的n的复杂性似乎也是无法做到的。人类逐渐进入大数据时代。第四种范式表明,利用海量数据和高速计算可以发现新的知识。在大数据时代,计算和数据之间的关系变得非常密切。
(五)几种高性能计算系统的比较分析
大数据系统(Big Data System)也是一种高性能计算系统,为了完成传统技术无法及时完成的、能够接受和满足应用需求的大量数据计算任务,通常采用集群方式实现。从传统的计算机科学出发,高性能计算系统主要应用于材料科学计算、天气预报、科学模拟等科学计算领域。这些领域的计算工作以大量的数值计算为基础,是一个典型的计算密集型高性能计算应用。在人们的心目中,高性能计算主要是由一些科学家使用的,而且离人们的日常生活还有很远的距离。随着越来越多的数据被人们所掌握,高性能的计算系统不可避免地需要应对海量数据带来的挑战。高性能数据计算系统使得高性能计算领域得到了扩展。随着大数据应用的普及,高性能计算逐渐进入人们的日常生活。从高性能计算的角度来看,大数据系统是一种面向数据的高性能计算系统,其基本结构通常是基于集群技术的。
大数据系统继承了传统高性能计算的基本框架,优化了海量数据的处理,使高性能的计算能力更容易有效地应用于海量数据的分析计算中。在大数据系统条件下,在高性能计算中必须认真考虑系统中的数据存储和移动问题。该系统的体系结构复杂度高于面向计算的高性能计算系统。大数据系统往往屏蔽了用户内部管理和调度的复杂性,实现了数据的自动化并行处理,降低了编程的复杂度。在面向计算的高性能计算系统中,通常要求程序员对计算问题进行分段处理,并对每个计算节点进行管理。由于大数据系统对系统的高可用性和可扩展性做了大量的工作,使得大数据系统的计算节点易于扩展,对单个节点的失效不敏感。因此,一些大数据系统,如谷歌,可以拥有超过100万个节点。然而,面向计算的高性能计算系统通常不会自动处理节点故障,当节点数量大时,人工调度计算资源将面临很大的技术困难。因此,它只能应用于专业领域。
(六)主要的大数据处理系统
大数据处理各种数据源,如结构化数据、半结构化数据、非结构化数据。对数据处理的需求是不同的。在某些情况下,大量的现有数据需要分批处理;在另一些情况下,大量的实时数据需要实时处理。在某些情况下,数据分析需要迭代计算,在某些情况下,需要对图形数据进行分析和计算。目前,主要的大型数据处理系统包括数据查询分析计算系统、批处理系统、流程计算系统、迭代计算系统、图形计算系统和内存计算系统。
1.数据查询分析计算系统
在大数据时代,数据查询分析计算系统需要具有实时或准实时查询大规模数据的能力。数据规模的增长已经超过了传统关系数据库的承载能力和处理能力。目前,主要的数据查询分析计算系统包括HBASE、Hive、Cassandra、Impala、Shark、Hana等。
HBASE:是一个开源的、分布式的、面向列的、非关系数据库模型,是Apache Hadoop项目的一个子项目。它源自Google论文“Big Table:结构化数据的分布式存储系统”,它实现了压缩算法、内存操作和Bloom过滤器。HBASE的编程语言是Java。HBASE的表可以用作Map Reduce任务的输入和输出,并且可以通过Java API访问。
Hive:是一个基于Hadoop的数据仓库工具,用于查询和管理分布式存储中的大数据集。它提供了完整的SQL查询功能,可以将结构化数据文件映射到数据表中。Hive提供了一种SQL语言(Hive QL),它将SQL语句转换为要运行的Map Reduce任务。
Cassandra:开源No SQL数据库系统最初是由Facebook开发的,2008年是开源的。由于其良好的可扩展性,Cassandra被Facebook、Twitter、Rack space、Cisco等使用。它的数据模型借鉴了亚马逊的Dynamo和Google Big Table,这是一种流行的分布式结构化数据存储方案。
Impala:由Cloudera开发,是一个开源的大型并行SQL查询引擎,运行在Hadoop平台上。用户可以使用标准的SQL接口工具查询存储在Hadoop的HDFS和HBASE中的PB大数据。
Shark上的数据仓库实现:星星之火,即SPark上的SQL,与Hive兼容,但处理Hive QL的速度是Hive的100倍。
Hana:是SAP公司开发的一个数据独立、基于硬件和基于内存的平台。
2.批处理系统
Map Reduce是一种广泛使用的批处理计算模型。Map Reduce对大数据采用“分而治之”并行处理的思想,数据关系简单,易于划分。数据记录的处理分为两种简单的抽象操作,即Map和Reduce,并提供了统一的并行计算框架。批处理系统封装了并行计算的实现,大大降低了开发人员并行编程的难度。Hadoop和SPark是典型的批处理系统。Map Reduce的批处理模式不支持迭代计算。
Hadoop:目前大数据是最主流的平台,是Apache Foundation的开源软件项目,使用Java语言开发和实现。Hadoop平台使开发人员能够在不了解底层分布式细节的情况下开发分布式程序,并在集群中存储和分析大数据。(www.xing528.com)
SPark(火花):是由加州大学伯克利分校的AMP实验室开发的。它适用于机器学习、数据挖掘等计算任务。SPark(火花)引入了内存计算的概念。在运行SPark时,服务器可以将中间数据存储在RAM内存中,大大加快了数据分析结果的返回速度,可用于交互式分析场景中。
3.流量计算系统
流计算具有很强的实时性,需要不断生成数据的实时处理,使数据不积压,不丢失,经常用于处理电信、电力等行业以及互联网行业的访问日志等。Facebook的抄写员、Apache的Flume、Twitter的Storm、Yahoo的S4和UCBerkeley的SPark流是常见的流计算系统。
Scrabe是Facebook开发的一个开源系统,用于实时收集海量服务器的日志信息,对日志信息进行实时分析和处理,并应用于Facebook。
水槽:水槽由Cloudera公司开发,功能与Scribe相似。它主要用于实时采集海量节点上生成的日志信息,存储在类似HDFS的网络文件系统中,并根据用户的需要对相应的数据进行分析。
Storm:基于拓扑的分布式流数据实时计算系统,由Back Type公司(后来被Twitter收购)开发,已被开源,并已应用于淘宝、百度、支付宝、Groupon、Facebook等平台。是主流数据计算平台之一。
S4:S4的全称是简单的可扩展流媒体系统,是雅虎开发的通用、分布式、可扩展、部分容错、可插拔的平台。其设计目的是根据用户的搜索内容得到相应的推荐广告。现在它是开源的,是一个重要的大数据计算平台。
火花流:是建立在火花基础上的。流量计算被分解为一系列短批任务,网站流量统计是一种典型的星火流使用场景。这种应用不仅需要实时的,而且还需要聚合、重叠、连接等统计计算操作。如果使用Hadoop Map Reduce框架,您可以很容易地达到统计要求,但不能保证实时性。如果我们使用Storm,我们可以保证实时性能,但很难实现。火花流可以很容易地以准实时的方式实现复杂的统计要求。
4.迭代计算系统
由于Map Reduce不支持迭代计算,所以人们对Hadoop的Map Reduce进行了改进。Haloop、Map Reduce、Twister和SPark是典型的迭代计算系统。
Haloop:Haloop是Hadoop Map Reduce框架的一个修改版本,用于支持迭代的递归类型的数据分析任务,如PageRank、K-Means等。
Map Reduce:一个基于Map Reduce的迭代模型,实现了Map Reduce的异步迭代。
Twister:基于Java的迭代Map Reduce模型,并将上一轮约简的结果直接传输到下一轮Map。
星星之火:是一个基于内存计算的开源集群计算系统。
5.图计算系统
社交网络、网络链接等包含着复杂关系的图形数据,这些图形数据规模,可以包含数十亿个顶点和数百亿个边,图形数据需要由一个特殊的系统来存储和计算。常用的图形计算系统包括Google的Pregel、Pregel Gi相术的开源版本、Microsoft的Trity、伯克利AMPLab的GraphX和高速图形数据处理系统的Power Graph。
Pregel开发的分布式图形数据计算编程框架:Google采用迭代计算模型。Google大约80%的数据计算任务是在Map Reduce模式下处理的,比如Web内容索引。图数据的计算任务约为20%,由Pregel进行处理。
Gi相图:这是一个迭代的图形计算系统,最初是由Yahoo开发的,以供Pregel参考,并捐赠给Apache软件基金会,使其成为一个开放源码的图形计算系统。Gi相图基于Hadoop,Facebook在其搜索服务中大量使用Gi相图。
微软开发了一个图形数据库系统,这个系统是一个基于内存的数据存储和操作系统,源代码是不开放的。
Graphx:是AMPLab开发的图形数据计算系统,运行在数据并行的SPark平台上。
PowerGraphs:一种高速图形处理系统,常用于广告推荐计算和自然语言处理内存计算系统。
随着内存价格的降低和服务器可配置内存容量的增加,利用内存计算完成高速大数据处理已成为大数据处理的一个重要发展方向。目前,常用的内存计算系统有分布式内存计算系统(SPark)、全内存分布式数据库系统(Hana)和Google的可扩展交互式查询系统(Dremel)。
Hana:SAP的基于内存的、面向企业的分析产品。
Dremel:Google的交互式数据分析系统可以在数千台服务器上启动计算,在PB级对数据进行处理,它是Google Map Reduce的补充,大大缩短了数据的处理时间,并成功地应用于Google的BigQuery中。
(七)处理大数据的基本程序
大数据的处理流程可以定义为利用合适的工具提取和集成各种异构数据源,按照一定的标准统一存储,并利用适当的数据分析技术对存储的数据进行分析。从中提取有用的知识,并以适当的方式将结果呈现给最终用户。
1.数据提取与集成
由于大数据处理的数据源类型丰富,所以大数据处理第一个数据源。该步骤是提取和集成数据,从数据中提取关系和实体,并通过关联和聚合操作,按照统一的定义格式存储数据。数据抽取和集成有三种方法:基于物化或数据仓库的引擎、基于联邦数据库或中间件的引擎和基于数据流的引擎。
2.数据分析
数据分析是大数据处理过程中的核心环节。通过数据的提取和集成,从异构数据源中获取用于大数据处理的原始数据。用户可以根据自己的需要对这些数据进行分析和处理,如数据挖掘、机器学习、数据统计等。数据分析可用于决策支持、商业智能、推荐系统、预测系统等。
3.数据解释
大数据处理过程中的用户最关心的是数据处理的结果,正确的数据处理结果只有通过适当的表示才能被最终用户正确理解,所以数据处理结果的显示是非常重要的。可视化和人机交互是数据解释的主要技术。
在开发调试程序时,经常会通过打印语句来显示结果,这些语句非常灵活和方便,但只有熟悉该程序的人才能很好地理解打印的结果。
利用可视化技术,可以通过图形的方式将处理后的结果可视化地呈现给用户。标签云、历史流、空间信息流等是常用的可视化技术。用户可以根据自己的需要灵活地使用这些可视化技术。人机交互技术可以引导用户逐步分析数据,使用户参与数据分析的过程,深入了解数据分析的结果。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。