1.4 大数据的技术架构和常用工具
大数据的应用价值和应用前景不言而喻,而各种各样的大数据应用需要对应的工具和技术来实现。新的工具、流程和方法支撑起了新的技术架构,使企业能够建立、操作和管理这些超大规模的数据集和数据存储环境。以下就大数据的技术架构和常用工具做一简单回顾。
1.4.1 大数据的技术架构
根据大数据的特征,大数据的技术架构必须考虑数据速度和数据量的特点,才能为企业提供一种灵活的选择,以实现大数据分析所需的效率、可扩展性、数据便携性和经济性,但仅仅存储和提供数据还不够,必须以新方式合成、分析和关联数据,才能提供商业价值。部分大数据方法要求处理未经建模的数据,因此,可以用毫不相干的数据源比较不同类型的数据进行模式匹配,从而使大数据的分析能以新视角挖掘企业传统数据,并带来传统上未曾分析过的数据洞察力。基于上述考虑,一般可以构建出适合大数据的四层堆栈式技术架构,如图1-7所示。
图1.7 四层堆栈式大数据技术架构
1.基础层
第一层作为整个大数据技术架构基础的最底层,也是基础层。要实现大数据规模的应用,企业需要一个高度自动化的、可横向拓展的存储和计算平台。这个基础设施需要从以前的存储孤岛发展为具有共享能力的高容量存储池。容量、性能和吞吐量必须可以线性扩展。
云模型鼓励访问数据并通过提供弹性资源池来应对大规模问题,解决如何存储大量数据及如何积聚所需的计算资源来操作数据的问题。在云中,数据跨多个结点调配和分布,使数据更接近需要它的用户,从而缩短响应时间,提高效率。
2.管理层
大数据要支持在多源数据上做深层次的分析,在技术架构中需要一个管理平台,即管理层使结构化和非结构化数据管理为一体,具备实时传送和查询、计算功能。
本层既包括数据的存储和管理,也涉及数据的计算。并行化和分布式是大数据管理平台所必须考虑的要素。
3.分析层
大数据应用需要大数据分析。分析层提供基于统计学的数据挖掘和机器学习算法,用于分析和解释数据集,帮助企业获得深入的数据价值领悟。可扩展性强、使用灵活的大数据分析平台更可能成为数据科学家的利器,起到事半功倍的效果。
4.应用层
大数据的价值体现在帮助企业进行决策和为终端用户提供服务的应用上。不同的新型商业需求驱动了大数据的应用。反之,大数据应用为企业提供的竞争优势使企业更加重视大数据的价值。新型大数据应用不断对大数据技术提出新的要求,大数据技术也因此在不断的发展变化中日趋成熟。
1.4.2 大数据的技术内容
大数据需要特殊的技术,以有效地处理在允许时间范围内的大量数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘电网、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
大数据技术分为整体技术和关键技术两个方面。
1.整体技术
大数据的整体技术一般包括数据采集、数据存取、基础架构、数据处理、统计分析、数据挖掘、模型预测和结果呈现等。
(1)数据采集:ETL工具负责将分布的、异构数据源中的数据,如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
(2)数据存取:包括关系数据库、NoSQL、SQL等。
(3)基础架构:包括云存储分布式文件存储等。
(4)数据处理:指导处理自然语言。自然语言处理(Natural Language Processing,NLP)是研究人与计算机交互的语言问题的一门学科。处理自然语言的关键是要让计算机“理解”自然语言,所以自然语言处理又称为自然语言理解(Natural Language Understanding,NLU),也称计算语言学。
(5)统计分析:包括假设检验、显著性检验、差异分析、相关分析、T检验、方差分析、卡方分析、偏相关分析、距离分析、回归分析、简单回归分析、多元回归分析、逐步回归、回归预测与残差分析、岭回归、Logistic回归分析、曲线估计、因子分析、聚类分析、主成分分析、因子分析、快速分类法与聚类法、判别分析、对应分析、多元对应分析(最优尺度分析)、Bootstrap技术等。
(6)数据挖掘:包括分类、估计、预测、相关性分组或关联规则、聚类、描述和可视化、复杂数据类型挖掘(Text、Web图形图像、视频、音频等)。
(7)模型预测:包括预测模型、机器学习、建模仿真。
(8)结果呈现:包括数据可视化,如标签云、关系图等。
2.关键技术
大数据处理关键技术一般包括大数据采集技术、大数据预处理技术、大数据存储及管理技术、开发大数据安全技术、大数据分析及挖掘技术、大数据展现与应用技术(大数据检索、大数据可视化、大数据应用、大数据安全等)。
(1)大数据采集技术:数据是指通过RFID射频、传感器、社交网络交互及移动互联网等方式获得的各种类型的结构化、半结构化(或称为弱结构化)及非结构化的海量数据,是大数据知识服务模型的根本。大数据采集技术重点要突破分布式高速高可靠性数据采集、高速数据全映像等大数据收集技术,高速数据解析、转换与装载等大数据整合技术,设计质量评估模型,开发数据质量技术。
大数据采集一般分为智能感知层和基础支撑层。智能感知层主要包括数据传感体系、网络通信体系、传感适配体系、智能识别体系及软硬件资源接入系统,实现对结构化、半结构化、非结构化的海量数据的智能化识别、定位、跟踪、接入、传输、信号转换、监控、初步处理和管理等,必须着重掌握针对大数据源的智能识别、感知、适配、传输、接入等技术。基础支撑层提供大数据服务平台所需的虚拟服务器,结构化、半结构化及非结构化数据的数据库,以及物联网资源等基础支撑环境,重点攻克分布式虚拟存储技术,大数据获取、存储、组织、分析和决策操作的可视化接口技术,大数据的网络传输与压缩技术,大数据隐私保护技术等。
(2)大数据预处理技术:主要完成对已接收数据的辨析、抽取、清洗等操作。
① 辨析:大数据的采集范围往往非常广,来源也非常复杂。因此,我们要对数据的来源进行仔细地辨别,结合分析的目标,合理地取舍。
② 抽取:因获取的数据可能具有多种结构和类型,数据抽取过程可以帮助我们将复杂的数据转化为单一的或者便于处理的结构和类型,以达到快速分析处理的目的。
③ 清洗:由于在海量数据中,数据并不全是有价值的,有些数据并不是我们所关心的内容,而有些数据则是完全错误的干扰项,因此要对数据进行过滤“去噪”从而提取出有效数据。
(3)大数据存储及管理技术:大数据存储及管理要用存储器把采集到的数据存储起来,建立相应的数据库,并进行管理和调用。大数据存储及管理技术的重点是解决复杂结构化、半结构化和非结构化大数据管理与处理技术;主要解决大数据的可存储、可表示、可处理、可靠性及有效传输等几个关键问题;开发可靠的分布式文件系统、能效优化的存储、计算融入存储、大数据的去冗余及高效低成本的大数据存储技术,突破分布式非关系型大数据管理与技术处理。异构数据的数据融合技术、数据组织技术,研究大数据建模技术,大数据索引技术和大数据移动、备份、复制等技术,开发大数据可视化技术和新型数据库技术。其中,非关系型数据库主要指的是NoSQL,又分为键值数据库、列存数据库、图存数据库及文档数据库等类型。关系数据库包含了传统关系数据库系统及NewSQL数据库。
(4)开发大数据安全技术:改进数据销毁、透明加解密、分布式访问控制、数据审计等技术,突破隐私保护和推理控制、数据真伪识别和取证、数据持有完整性验证等技术。
(5)大数据分析及挖掘技术:改进已有数据挖掘和机器学习技术,开发数据网络挖掘、特异群组挖掘、图挖掘等新型数据挖掘技术,突破基于对象的数据连接、相似性连接等大数据融合技术和用户兴趣分析、网络行为分析、情感语义分析等领域的大数据挖掘技术。
数据库方法主要是多维数据分析或OLAP方法,另外还有面向属性的归纳方法。从挖掘任务和挖掘方法的角度,数据挖掘着重突破以下几个方面。
① 可视化分析。数据可视化无论是对普通用户还是数据分析专家,都是最基本的功能。数据图像化可以让数据“说话”,让用户直观地感受到结果。
② 数据挖掘算法。图像化是将机器语言翻译给人们看,而数据挖掘算法用的是机器语言。分制、集群、孤立点分析还有各种各样的算法使我们可以精炼数据、挖掘价值。数据挖掘算法一定要既能够应付大数据的量同时还应具有很高的处理速度。
③ 预测性分析。预测性分析可以让分析师根据图像化分析和数据挖掘的结果做出一些前瞻性判断。
④ 语义引擎。语义引擎需要设计足够的人工智能才从数据中主动地提取信息。语言处理技术包括机器翻译、情感分析、舆情分析、智能输入、问答系统等。
⑤ 数据质量与管理。数据质量与管理是管理的最佳实践,透过标准化流程和机器对数据进行处理可以确保获得一个预设质量的分析结果。
(6)大数据展现与应用技术:大数据技术能够将隐藏在海量数据中的信息和知识挖掘出来,为人类的社会经济活动提供依据,从而提高各个领域的运行效率,大大提高整个社会经济的集约化程度。
在我国,大数据的应用领域非常广泛,大数据的分析技术也种类繁多。例如,商业智能技术、政府决策技术、电信数据信息处理与挖掘技术、电网数据信息处理与挖掘技术、气象信息分析技术、环境监测技术、警务云应用系统(道路监控、视频监控、网络监控、智能交通、反电信诈骗、指挥调度等公安信息系统)、大规模基因序列分析对比技术、Web信息挖掘技术、多媒体数据并行化处理、影视制作渲染技术、其他各种行业的云计算和海量数据处理应用技术等。
1.4.3 大数据的技术工具简介
大数据分析是在研究大量数据的过程中寻找模式、相关性和其他有用的信息,以帮助企业更好地适应变化,并做出更明智的决策。
1.Hadoop
Hadoop是一个能够对大量数据进行分布式处理的软件框架,是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个特点。
(1)高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
(2)高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的结点中。
(3)高效性。Hadoop能够在结点之间动态地移动数据,并保证各个结点的动态平衡,因此处理速度非常快。
(4)容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
Hadoop带有用Java语言编写的框架,因此运行在Linux平台上是非常理想的。Hadoop上的应用程序也可以使用其他语言编写,如C++。
2.Spark
Spark是一个基于内存计算的开源集群计算系统,目的是更快速地进行数据分析。Spark由加州伯克利大学AMP实验室开发。Spark提供了与Hadoop相似的开源集群计算环境。虽然简单,但基于内存和迭代优化的设计,使Spark在某些工作负载上表现得更优秀。
综合Spark的特点有如下几个。
(1)轻量级快速处理。着眼大数据处理,速度往往被置于第一位。Spark允许Hadoop集群中的应用程序在内存中以100倍的速度运行,即使在磁盘上运行也能快10倍。Spark将中间处理数据全部放到了内存中,通过减少磁盘IO提升性能。这种做法大大地减少了数据处理过程中磁盘的读写,大幅度地减少了所需时间。
(2)易于使用。Spark支持多语言。Spark允许使用Java、Scala及Python等语言,允许开发者在自己熟悉的语言环境下进行工作。它自带80多个高等级操作符,允许在Shell中进行交互式查询。
(3)支持复杂查询。在简单的Map及Reduce操作之外,Spark还支持SQL查询、流式查询及复杂查询。同时用户可以在同一个工作流中无缝地搭配这些能力。
(4)实时的流处理。相较于MapReduce只能处理离线数据,Spark支持实时的流计算。Spark依赖Spark Streaming对数据进行实时的处理,当然在YARN之后Hadoop也可以借助其他的工具进行流式计算。Spark Streaming具有简单、容错、集成的特点。
(5)可以与Hadoop和已存Hadoop数据整合。Spark可以独立运行,除了可以运行在当下的YARN集群管理之外,它还可以读取已有的任何Hadoop数据。这是个非常大的优势,它可以运行在任何Hadoop数据源上,如HBase、HDFS等。
(6)活跃和无限壮大的社区。Spark起源于2009年,当下已有超过50个机构250个工程师贡献过代码,是一个发展迅速的开源系统,社区也十分活跃,可以为开发者提供快速有效的帮助。
3.HPCC
HPCC(高性能计算与通信)是美国为实现信息高速公路而实施的计划,该计划的实施将耗资百亿美元,其主要目标是开发可拓展的计算机系统及相关软件,以提高网络传输性能;开发千兆比特网络技术,扩展研究和教育机构及网络连接能力。
4.Storm
Storm是一个开源软件,一个分布式、容错的实时计算系统。Storm可以非常可靠地处理庞大的数据流,也可用于处理Hadoop的批量数据。Storm很简单,支持许多种编程语言,使用起来非常有趣。Storm由Twitter开源而来,知名的应用企业包括淘宝、支付宝、阿里巴巴等。
Storm有许多应用领域,包括实时分析、在线机器学习、不停顿的计算、分布式RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务的协议)、ETL等。Storm的处理速度惊人,经测试,每个结点每秒钟可以处理100万个数据元组。Storm具有可扩展、容错、容易设置和操作的特点。
5.Apache Drill
为了帮助企业用户寻找更有效、更快的Hadoop数据查询的方法,Apache软件基金会发起了一项名为Drill的开源项目。该项目主要是为Hadoop数据分析工具的互联网应用提速,有助于Hadoop用户实现更快查询海量数据集的目的。通过开发Apache Drill开源项目,组织机构将有望建立Drill所属的应用程序编程接口(Application Programming Interface,API)和灵活强大的体系架构,从而支持更广泛的数据源、数据格式和查询语言。
1.4.4 市场分析师的大数据分析工具
以上讨论的大数据分析技术和工具大都是在计算机技术层面,而对市场分析师来说有点望尘莫及。实际上,数据科学家和市场分析师的工作重点都是数据分析和处理,以及把分析成果如何运用于商业实践。那么,有没有既简单好用,又能够满足数据分析的工具呢?答案是肯定的。
那么一名大数据分析的初学者应如何寻找合适的突破口,并通过渐进的学习,成为理想中的数据分析师或数据科学家?我们认为,从数据挖掘方法入手,无疑是最佳选择。这个学习方案,一方面,可保证初学者在一开始就可以持续进行一般的数据分析,并通过增加数据量、引进新方法,提高自己的分析能力,逐步成为一名方法应用与算法研究的专家;另一方面,当达到一定水平之后,向下可以进一步研究大数据的分布式计算环境与计算方法,并深入学习云计算的基础知识,成为大数据系统建设方案的高手;向上也可以结合自己所从事行业的实际问题,通过具体实战,积累应用经验,成为该领域大数据分析的翘楚。
R语言正是目前应用最广泛的数据挖掘与分析工具。你或许没有听说过R语言,或许你曾尝试过使用R语言但是觉得摸不着头脑,之后转而使用其他“好用”的工具。你或许知道R语言使用的是命令行,你并不喜欢这点。或许你确信R语言对于分析领域的专家来说是很有效的工具但你没有时间学习如何使用。
实际上,R语言是一门编程语言。它不是像SPSS、SAS、JMP或Minitab这样的“统计程序”,也并不想成为它们中的一员。官方R项目对其描述是“用于统计计算和图形的语言和环境”。注意这里着眼点是R是一门“语言”。R语言是用于统计的很好的编程语言。其底层语言的发明者John Chambers获得了1998年美国计算机协会的软件系统奖(Association for Computing Machinery(ACM)Software System Award),该奖项针对的是能够“永久改变人们分析、可视化和处理数据的方式……”的系统。
R语言基于Chambers于20世纪70—80年代在贝尔实验室发明的S语言(S是英文单词“Statistics”的首字母),UNIX操作系统和C编程语言也是在该实验室产生的。S语言的实现商业版本S-PLUS在20世纪90年代吸引了分析师和学术界的注意。Robert Gentleman和Ross Ihaka希望扩大S语言的使用范围并且在1997年推出了开源项目R语言。
自那以后R语言的普及度呈几何级增长。R语言真正神奇的地方在于用户可以对R语言的发展做贡献,提升R语言的方式从添加核心函数到高度特异化的方法等不一而足。许多使用者都对R语言社区做出了贡献,现在有13400多个R语言程序包,为R语言添加了许多功能(最新的统计数字见https://mirrors.tuna.tsinghua.edu.cn/CRAN/)。
为什么R语言被数据分析师如此青睐?使用R语言的理由有很多。R语言是统计学家使用最广泛的平台,统计专业人士提出的最新方法首先得以用R语言实现。R语言迅速发展成为大学教育的默认平台,且扩展到其他学科,如经济学和心理学。
R语言为分析师提供了最多最广的分析工具和统计方法集。它使你能够重复使用分析代码,且扩展R语言系统本身。R语言能在大多数操作系统上运行并且能和其他数据系统交互,如在线数据、SQL数据库。R语言提供优美且强大的绘图函数,相较于电子表格,R语言能大量绘制更加贴合当前情况更具信息量的图形,如图1.8所示。把这些特点加起来,R语言便能够极大地提高分析师的效率。
图1.8 利用R语言实现数据可视化
R语言有一个社区。许多R语言用户都是R语言的狂热者,他们乐于助人,并且享受解决问题带来的喜悦以及总是学到新东西的过程。R语言是用户建立的动态系统,关于R语言总有新的东西要学习。R语言相关知识是越来越多顶级公司分析工作需要的宝贵技能。
R语言代码是开放的,你可以选择相信函数背后的代码,也可以随时核实。所有的核心代码和人们贡献的大部分R语言程序包都是开源的。你能检查其中的代码,看看究竟是如何分析的,以及函数运行背后到底发生了什么。
最后,R语言是免费的。这是R语言核心开发组成员对职业的热爱和自豪感的结果,其中包括杰出的统计学家和计算机科学家。与所有杰作一样,建造者的专注明显反映在最终的作品上。
综上所述,R语言的突出特点如下。
(1)共享性。使用者可以到相应的网站上免费下载和使用。
(2)分析方法丰富。R语言不仅包括众多经典通用的统计和数据挖掘方法,还拥有大量面向不同应用领域问题的前沿和专用的模型算法。
(3)操作简便灵活。R语言支持计算机编程。用户可以通过编程实现数据整理的自动化和批量化,可以通过调用R语言的现成模型和算法解决一般性的数据挖掘问题,可以自行编写程序解决特殊性的数据挖掘问题。
(4)成长性。R语言通过开放的网络社区化平台,不断吸引更多的专家学者和应用人员成为R语言的开发者,更多、更有效、更前沿的方法正不断融入R语言中。