三、大数据技术
大数据时代的超大数据体量和占相当比例的半结构化和非结构化数据的存在,已经超越了传统数据库的管理能力,大数据技术将是IT领域新一代的技术与架构,它将帮助人们存储管理好大数据并从大体量、高复杂的数据中提取价值,相关的技术、产品将不断涌现,有可能给IT行业开拓一个新的黄金时代。
大数据本质也是数据,其关键的技术依然逃不脱数据存储、管理、检索使用(包括数据挖掘和智能分析)。围绕大数据,一批新兴的数据挖掘、数据存储、数据处理与分析技术将不断涌现,让我们处理海量数据更加容易、便利和迅速,成为企业业务经营的好助手,甚至可以改变许多行业的经营方式。
(一) 对现有技术的挑战
1. 对现有数据库管理技术的挑战
传统的数据库部署不能处理TB级别的数据,也不能很好地支持高级别的数据分析。急速膨胀的数据体量即将超越传统数据库的管理能力。如何构建全球级的分布式数据库(Globally-Distributed Database),可以扩展到数百万台机器、数以百计的数据中心、上万亿的行数据?
2. 对经典数据库技术的挑战
经典数据库技术并没有考虑数据的多类别,SQL(结构化查询语言)在设计之初是没有考虑非结构化数据的。
3. 实时性的技术挑战
传统的数据仓库系统和各类BI应用对处理时间的要求并不高,因此这类应用运行一两天获得结果依然是可行的。但实时处理的要求,是区别大数据应用和传统数据仓库技术、BI技术的关键差别之一。
4. 对网络架构、数据中心、运维的挑战
人们每天创建的数据量正呈爆炸式增长,但就数据保存来说,我们的技术改进不大,而数据丢失的可能性却不断增加。如此庞大的数据量首先在存储上就会是一个非常严重的问题,硬件的更新速度将是大数据发展的基石。
(二) 大数据处理技术
面对大数据时代的到来,技术人员纷纷研发和采用了一批新技术,主要包括分布式缓存、基于MPP的分布式数据库、分布式文件系统、各种NoSQL分布式存储方案等。充分地利用这些技术,加上企业全面的用以分析的数据,可更好地提高分析结果的真实性。大数据分析意味着企业能够从这些新的数据中获取新的洞察力,并将其与已知业务的各个细节相融合。
以下是一些目前应用较为广泛的技术:
1. 分析技术
数据处理:自然语言处理技术;
统计和分析:A/B test,topN排行榜,地域占比,文本情感分析;
数据挖掘:关联规则分析,分类,聚类;
模型预测:预测模型,机器学习,建模仿真。
2. 大数据获取技术
数据采集:ETL工具;
数据存取:关系数据库,NoSQL,SQL,等等;
基础架构支持:云存储,分布式文件系统,等等;
计算结果展现:云计算,标签云,关系图,等等。
3. 数据存储技术
结构化数据:海量数据的查询、统计、更新等,操作效率低;
非结构化数据:图片、视频、word、pdf、ppt等文件存储,不利于检索、查询和存储;
半结构化数据:转换为结构化存储,按照非结构化存储。
4. 解决方案
Hadoop(MapReduce技术);
流计算(Twitter的Storm和Yahoo的S4)。
(三) 大数据与云计算
云计算是由分布式计算、并行处理、网络计算发展而来的,是一种新兴的商业计算模型。通俗地理解,云计算的“云”就是存在于互联网上的服务器集群上的资源,包括硬件资源和软件资源,本地计算机只要通过互联网发送一个需求信息,远端就会有成千上万的计算机提供所需资源,并返回结构到本机计算机。云计算的模式是业务模式,本质是数据处理技术。大数据是资产,“云”为数据资产提供存储、访问和计算。大数据与云计算是相辅相成的,大数据技术与云计算的异同见表1-1。
表1-1 大数据技术与云计算的异同
1. 云计算及其分布式结构
当前云计算更偏重海量存储和计算,以及提供云服务、运行云应用,但是缺乏盘活数据资产的能力。挖掘价值性信息和预测性分析,为国家、企业、个人提供决策和服务,是大数据的核心议题,也是云计算的最终方向。
大数据处理技术正在改变目前计算机的运行模式,正在改变着这个世界:它能处理几乎各种类型的海量数据,无论是微博、电子邮件、文档、音频、视频,还是其他形态的数据;它工作的速度非常快,实际上几乎实时;它具有普及性,所用的都是最普通的低成本硬件,而云计算将计算任务分布在大量计算机构成的资源池上,使用户能够按需获取计算力、存储空间和信息服务。
云计算及其技术给了人们廉价获取巨量计算和存储的能力,云计算分布式架构能够很好地支持大数据存储和处理需求。这样的低成本硬件+低成本软件+低成本运维,更加经济和实用,使得大数据处理和利用成为可能。
2. 云数据库
NoSQL被广泛地称为云数据库,因为其处理数据的模式完全分布于各种低成本服务器和存储磁盘,因此它可以帮助网页和各种交互性应用快速处理过程中的海量数据。它采用的分布式技术结合了一系列技术,可以对海量数据进行实时分析,满足大数据环境下的部分业务需求,但是还无法彻底解决大数据存储管理需求。云计算对关系型数据库的发展将产生巨大的影响,而绝大多数大型业务系统(如银行、证券交易等)、电子商务系统所使用的数据库还是基于关系型的数据库,云计算的大量应用势必对这些系统的构建产生影响,进而影响整个业务系统及电子商务技术的发展和系统的运行模式。基于关系型数据库服务的云数据库产品将是云数据库的主要发展方向。云数据库(CloudDB)具有海量数据的并行处理能力和良好的可伸缩性等特性,同时支持在线分析处理(OLAP)和在线事务处理(OLTP),提供了超强性能的数据库云服务,并成为集群环境和云计算环境的理想平台。它是一个高度可扩展、安全和可容错的软件,客户能通过整合降低IT成本,提高所有应用程序的性能和实时性地做出更好的业务决策服务。
因此,云数据库要能够满足以下要求:(1)海量数据处理。对类似搜索引擎和电信运营商级的经营分析系统这样大型的应用而言,需要能够处理PB级的数据,同时应对百万级的流量。(2)大规模集群管理。分布式应用可以更加简单地部署、应用和管理。(3)低延迟读写速度。快速的响应速度能够极大地提高用户的满意度。(4)建设及运营成本。云计算应用的基本要求是希望在硬件成本、软件成本以及人力成本方面都有大幅度的降低。
所以云数据库必须采用一些支撑云环境的相关技术,比如数据节点动态伸缩与热插拔、对所有数据提供多个副本的故障检测与转移机制和容错机制、SN(Share Nothing)体系结构、中心管理、节点对等处理实现连通任一工作节点就是连入了整个云系统、任务追踪、数据压缩技术以节省磁盘空间。
(四) 大数据与分布式技术
1. 分布式数据库
支付宝公司在国内最早使用Greenplum数据库,将数据仓库从原来的Oracle RAC平台迁移到Greenplum集群。Greenplum强大的计算能力可用来支持支付宝日益发展的业务需求。
Greenplum数据引擎软件专为新一代数据仓库所需的大规模数据和复杂查询功能所设计,基于MPP(海量并行处理)和Shared-Nothing(完全无共享)架构,基于开源软件和x86商用硬件设计(性价比更高),分布式数据库见图1-1。
图1-1 分布式数据库图
2. 分布式文件系统
分布式文件系统中,Google的GFS是基于大量安装有Linux操作系统的普通PC构成的集群系统,整个集群系统由一台Master和若干台Trunk Server构成。GFS中文件备份成固定大小的Trunk分别存储在不同的Trunk Server上,每个Trunk有多份拷贝,也存储在不同的Trunk Server上。Master负责维护GFS中的Metadata,即文件名及其Trunk信息。客户端先从Master上得到文件的Metadata,根据要读取的数据在文件中的位置与相应的Trunk Server通信,获取文件数据。
在Google的论文发表后,Hadoop就诞生了。截至今日,Hadoop被很多中国的大互联网公司所追捧,百度的搜索日志分析,以及腾讯、淘宝和支付宝的数据仓库都可以看到Hadoop的身影。
Hadoop具备低廉的硬件成本、开源的软件体系、较强的灵活性、允许用户自己修改代码等特点,同时能支持海量数据存储和计算任务。
Hive是一个基于Hadoop的数据仓库平台,将转化为相应的Map Reduce程序基于Hadoop执行。通过Hive,开发人员可以方便地进行ETL开发。
Hive和Hadoop的关系如图1-2所示:
图1-2 Hive和Hadoop的关系图
3. HBase
随着数据量增长,越来越多的人关注NoSQL,特别是2010年下半年,Facebook选择HBase来做实时消息存储系统,替换原来开发的Cassandra。这使得很多人开始关注HBase。Facebook选择HBase是基于短期小批量临时数据和长期增长的很少被访问到的数据这两个需求来考虑的。
HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建大规模结构化存储集群。HBase是Big Table的开源实现,使用HDFS作为其文件存储系统。Google运行MapReduce来处理Big Table中的海量数据,HBase同样利用MapReduce来处理HBase中的海量数据;Big Table利用Chubby作为协同服务,HBase则利用Zookeeper作为对应。