本文系统地介绍了大数据技术的相关知识,由于篇幅比较长,分为上下两部分,其中上半部分先介绍基本概念、核心领域,下半部分介绍主要技术、平台架构,以及相关企业案例。
目录
三、主要技术
大数据需要特殊的技术,以有效、快速地处理大量的容忍经过时间内的数据。从发展趋势上看,大数据与云计算密不可分,大数据必然无法用单台的计算机进行处理,而对海量数据进行分布式数据挖掘,必须依托云计算的分布式处理、分布式数据库和云存储等技术。
大数据的关键技术一般有五种:大数据采集、大数据预处理、大数据存储及管理、大数据分析及挖掘、大数据展现和应用(大数据检索、大数据可视化、大数据应用、大数据安全等)。
3.1 大数据采集
大数据采集处于大数据生命周期中第一个环节,是大数据产业的基石。大数据采集是指通过各种技术手段,收集和整理大量数据的过程。采集对象主要是来自各类客户端(Web、App或者传感器形式等)的数据,包括RFID射频数据、传感器数据、企业应用系统、社交网络交互数据、移动互联网数据、日志文件等结构化、半结构化(或称之为弱结构化)及非结构化的海量数据,并且用户可以通过这些数据库来进行简单的查询和处理工作。
在进行大数据采集时,需要考虑以下几个方面:
- 数据类型:数据类型可以是结构化、半结构化或非结构化数据。这些数据类型的采集方法和采集工具都有所不同,需要根据不同的数据类型来选择采集工具。
- 数据源:采集数据的数据源通常有多种,包括传感器、数据库、网站、社交网络等,需要根据数据源的特点来选择采集的方法和工具。
- 采集技术:数据采集的技术包括爬虫、ETL等,需要根据采集的数据类型和数据源来选择合适的采集技术;
- 采集频率:根据不同的数据源和数据类型来确定数据采集的频率,以保证数据的时效性和准确性。
- 存储和处理:采集到的数据需要进行存储和处理,以便后续的分析和应用,需要选择合适的存储和处理技术来满足需求。传统企业会使用传统的关系型数据库MySQL和Oracle等来存储数据。
ETL工具(Extract、Transform、Load,简称ETL)负责将分布的、异构数据源中的数据(关系数据、平面数据文件等)抽取到临时中间层后,进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。
大数据采集对象主要包括业务数据、流量数据、日志数据等,主要工具包括:爬虫获取网页数据、浏览器探针采集用户浏览数据、Flume采集服务器日志。数据获取之后,为了方便不同应用消费数据,可以将数据存入Kafka等消息中间件。
3.1.1 数据类型
按照数据内容分类,传统数据分为业务数据和行业数据,新型数据包括内容数据、线上行为数据和线下行为数据。
- 内容数据:应用日志、电子文档、机器数据、语音数据、社交媒体数据等;
- 线上行为数据:页面数据、交互数据、表单数据、会话数据等;
- 线下行为数据:比如收集生物特征的人脸识别、指纹识别技术,再到收集设备特征的WiFi探针、iBeacon识别技术,这些技术都在尝试采集及分析线下的大数据。

图4 数据类型
数据源是指大数据存储和处理的起点,数据源可以包括传感器、网站、社交媒体、物联网设备、移动应用程序、云存储、数据库等各种类型的数据来源。
不同的数据源包含不同类型的数据,例如传感器数据通常是结构化数据,而社交媒体中的帖子和评论则属于半结构化数据,而照片和视频则是非结构化数据。

图5 数据源与数据类型
按照数据结构分类,数据类型包括结构化数据、半结构化数据和非结构化数据三种类型。
1.结构化数据
结构化数据是指以特定格式(通常是表格)和规则组织的数据,其数据元素之间存在明确的关系和层次结构,易于存储、处理和分析,其特点包括:
- 数据按照固定的结构组织,每个数据项都有明确定义的数据类型和属性;
- 数据存储方式简单明了,通常以表格形式、关系型数据库或者XML等形式存储,方便进行查询和分析;
- 数据的处理和管理较为容易,可以使用SQL等标准化的语言进行操作;
- 数据的准确性和一致性较高,有利于数据质量的维护和管理;
- 结构化数据的处理方式相对固定,可以利用常见的统计学和机器学习算法进行分析和挖掘等。
数据化结构集中于数字、日期、文本、金额、时间戳货币、比率、证书、地址、电话号码、电子邮件等类型的数据,并具有明确的数据类型和字段名称。结构化数据易于处理和管理,可以通过SQL查询和其他数据分析工具对其进行分析和处理。结构化数据的清晰结构化和组织形式,使其在数据分析、机器学习、人工智能应用等领域得到广泛应用,例如企业数据管理系统、业务报告等。
2.半结构化数据
半结构化数据是指不符合传统关系型数据库数据模型要求的数据,通常没有固定结构,介于结构化数据和非结构化数据之间的数据类型,其特点包括:
- 数据具有一定的结构,有标识和描述的数据,但又不是严格的表格形式,可以包含多个层次的嵌套结构;
- 数据中的字段可以根据需要动态添加或删除,不需要事先定义表结构;
- 数据可以非常灵活地适应不同的应用场景和需求;
- 数据通常以XML、JSON、YAML等格式存储和传输。
半结构化数据主要应用于Web应用、文本处理、语义分析等领域中,能够很好地满足数据处理的灵活性要求。常见的半结构化数据源包括日志文件、社交媒体数据、传感器数据等。
3.非结构化数据
非结构化数据是指没有明确结构的数据,例如文本文档、音频、视频、图像等数据类型。这些数据通常具有高度的复杂性和多样性,不能被轻易地转化成表格或二维矩阵形式,难以使用传统的结构化数据存储和管理方法进行处理,因此需要采用特殊的技术和工具来分析和处理这些数据。
这种数据类型通常需要使用文本分析、自然语言处理和图像处理等技术进行处理和分析。目前,非结构化数据的使用越来越多,且在人工智能、机器学习等领域具有广泛的应用价值。
不同类型的数据源往往会对产生不同类型的数据,而不同类型的数据也需要使用不同的技术和方法进行处理和分析。
3.1.2 采集步骤
大数据采集通常包括以下步骤:
- 确定采集数据的范围和目的:确定采集数据的时间、地点、数据类型、数据格式、数据量等;
- 针对不同的数据来源采用适当的技术:例如,从传感器采集数据可能需要使用物联网技术,从社交媒体采集数据可能需要使用API;
- 设计数据采集和处理流程:包括数据的抽取、转换和加载;
- 确保数据的准确性和完整性:通过对数据进行清洗、去重、格式化等操作来确保数据的质量;
- 存储数据:将采集到的数据存储到适当的数据库或数据仓库中,以便进行后续的数据分析和应用。
3.1.3 采集技术
大数据的采集从数据源上可以分为四类:Web数据采集、系统日志采集、数据库采集、其他数据(感知设备等数据采集)。
3.1.3.1 Web数据采集
Web数据采集是指通过网络爬虫或网站公开API等方式从网站上获取数据信息的过程。
网络爬虫会从一个或若干初始网页的URL开始,获得各个网页上的内容,并且在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足设置的停止条件为止,如下图所示。爬虫可将非结构化数据、半结构化数据从网页中提取出来,并以结构化的方式存储在本地的存储系统中。

图6 爬虫工作过程
3.1.3.1.1 Scrapy(python的爬虫架构)
Scrapy是由Python语言开发的一个快速、高层次的屏幕抓取和Web抓取架构,用于从页面中提取结构化数据。Scrapy的用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个架构,任何人都可以根据需求方便地进行修改。它还提供多种类型爬虫的基类,如BaseSpider、Sitemap爬虫等。Scrapy运行原理如下图所示。

图7 Scrapy运行原理
Scrapy的整个数据处理流程由Scrapy引擎进行控制。Scrapy运行流程如下:
1.Scrapy引擎打开一个域名时,爬虫处理这个域名,并让爬虫获取第一个爬取的URL;
2.Scrapy引擎先从爬虫那获取第一个需要爬取的URL,然后作为请求在调度器中进行调度;
3.Scrapy引擎从调度器那里获取接下来进行爬取的页面;
4.调度将下一个爬取的URL返回给引擎,引擎将它们通过下载中间件发送到下载器;
5.当网页被下载器下载完成以后,响应内容通过下载器中间件被发送到Scrapy引擎;
6.Scrapy引擎收到下载器的响应并将它通过爬虫中间件发送到爬虫进行处理;
7.爬虫处理响应并返回爬取到的项目,然后给Scrapy引擎发送新的请求;
8.Scrapy引擎将抓取到的放入项目管道,并向调度器发送请求;
9.系统重复第(2)步后面的操作,直到调度器中没有请求,然后断开Scrapy引擎与域之间的联系。
3.1.3.2 系统日志采集
系统日志采集是指收集计算机系统内部生成的日志信息,如操作系统、应用程序、网络设备等产生的日志。采集这些日志信息有助于安全管理人员或系统管理员实时监控系统运行状态、发现系统故障或异常、及时采取措施保障系统安全稳定运行。
系统日志采集通常通过安装日志采集代理或软件,将日志信息收集到中央日志服务器或集中式日志管理平台进行存储和管理,以便后续查询、分析和报告。采集的系统日志信息可用于故障排查、安全审计、合规性监管等方面。
高可用性、高可靠性、可扩展性是日志收集系统所具有的基本特征。系统日志采集工具均采用分布式架构,满足每秒数百MB的日志数据采集和传输需求。
常见日志采集工具:Flume、Fluentd、Logstash。
3.1.3.2.1 Flume
Flume作为Hadoop的组件,是由Cloudera专门研发的分布式日志收集系统。尤其近几年随着Flume的不断完善,用户在开发过程中使用的便利性得到很大的改善,Flume现已成为Apache Top项目之一。
Flume提供了从Console(控制台)、RPC(Thrift-RPC)、Text(文件)、Tail (UNIXTail)、Syslog、Exec(命令执行)等数据源上收集数据的能力。
Flume采用了多Master的方式。为了保证配置数据的一致性,Flume引入了ZooKeeper,用于保存配置数据。ZooKeeper本身可保证配置数据的一致性和高可用性。另外,在配置数据发生变化时,ZooKeeper可以通知Flume Master节点。Flume Master节点之间使用Gossip协议同步数据。
Flume针对特殊场景也具备良好的自定义扩展能力,可适用于大部分的日常数据采集场景。因为Flume使用JRuby来构建,所以依赖Java运行环境。Flume设计成一个分布式的管道架构,可以看成在数据源和目的地之间有一个Agent的网络,支持数据路由。
Flume支持设置Sink的Failover和加载平衡,这样就可以保证在有一个Agent失效的情况下整个系统仍能正常收集数据。Flume中传输的内容定义为事件(Event),事件由Headers(包含元数据,即Meta Data)和Payload组成。
3.1.3.2.2 Fluentd
Fluentd是另一个开源的数据收集架构。Fluentd使用C/Ruby开发,使用JSON文件来统一日志数据。通过丰富的插件,可以收集来自各种系统或应用的日志,然后根据用户定义将日志做分类处理。通过Fluentd,可以非常轻易地实现,像追踪日志文件并将其过滤后转存到MongoDB这样的操作。Fluentd可以彻底地把人从烦琐的日志处理中解放出来。
Fluentd具有多个功能特点:安装方便、占用空间小、半结构化数据日志记录、灵活的插件机制、可靠的缓冲、日志转发、采用JSON统一数据/日志格式。Treasure Data公司对该产品提供支持和维护。相对Flume,Fluentd配置更简单。
Fluentd的扩展性非常好,客户可以自己定制 (Ruby) Input/Buffer/Output。Fluentd具有跨平台的问题,并不支持Windows平台。
Fluentd的Input/Buffer/Output非常类似于Flume的Source/Channel/Sink。Fluentd架构下图所示。

图8 Fluentd架构
3.1.3.2.3 Logstash
Logstash是著名的开源数据栈ELK(ElasticSearch,Logstash,Kibana)中的L。因为Logstash用JRuby开发,所以运行时依赖JVM。Logstash的部署架构如下图所示。

图 9 Logstash部署架构
| 一个典型的Logstash的配置如下,包括Input、Filter和Output的设置: input { file { type =>'Apache-access path =>'/var/log/Apache2/other_vhosts_access.log } file { type =>'pache-error' path =>'/var/log/Apache2/errorlog' } } filter { grok { match =>{'message'=>'%(COMBINEDApacheLOG)'} } date { match => {'timestamp'=>'dd/MMM/yyyy:HH:mm:ss Z'} } } output { stdout {} Redis { host=>'192.168.1.289 data type =>'list' key =>'Logstash } } |
在大部分的情况下,ELK作为一个栈是被同时使用的,在数据系统使用ElasticSearch的情况下,Logstash是首选。
3.1.3.3 数据库采集
数据库大数据采集通常是指将大量的数据从不同的数据源中汇集到一个集中的数据库中,以便进行分析和应用。这些数据源可以是企业的各类业务数据库,也可以包括传感器、网站、社交网络、移动设备等各种数据来源。数据采集的目的是为了收集足够的数据,以便进行深入的分析和挖掘,从而揭示出潜在的趋势和模式,做出更明智的商业决策。
3.1.3.4 其他数据(感知设备等数据采集)
感知设备数据采集是指通过传感器、摄像头和其他智能终端自动采集信号、图片或录像来获取数据。大数据智能感知系统需要实现对结构化、半结构化、非结构化的海量数据的智能化识别、定位、跟踪、接入、传输、信号转换、监控、初步处理和管理等,关键技术包括针对大数据源的智能识别、感知、适配、传输、接入等。

图10 感知设备等数据采集
3.1.4 采集方式
大数据采集方式包括:
-
- 批量采集:指对某个网站或系统进行大量数据的采集,将采集到的数据进行分析和处理;
- 实时采集:指对数据进行实时采集,以便实时处理和分析;
- 增量采集:指对已有数据进行定期的增量采集,以获得最新的数据;
- 自动化采集:采用自动化程序实现数据采集,提高采集效率;
- 合作采集:通过与其他机构或组织合作,获取共享数据,进行大数据分析。
3.2 大数据预处理
大数据的来源多种多样,从现实世界中采集的数据大体上都是不完整、不一致的脏数据,无法直接进行和分析,或分析挖掘的结果差强人意。为了提高数据分析挖掘的质量,需要对数据进行预处理,预处理方法包括:数据清洗、数据集成、数据转换和数据消减。
3.2.1 数据清洗
现实世界的数据常常是不完整的、含噪声的、不一致的。数据清洗过程包括缺失数据处理、噪声数据处理,以及不一致数据处理。
对于缺失的数据,可以采用忽略该条记录、手动补充缺失值、利用默认值填补缺失值、利用均值填补缺失值、利用最可能的值填补缺失值等方法处理.
对于噪声数据,可采用Bin方法、聚类分析方法、人机结合检测方法、回归方法来处理。
对于不一致的数据,可以利用它们与外部的关联,手动解决这类问题。
3.2.2 数据集成
大数据处理常常涉及数据集成操作,即将来自多个数据源的数据,如数据库、数据立方、普通文件等,结合形成一个统一的数据集合,以便为数据处理工作的顺利完成提供完整的数据基础。
在数据集成过程中,需要考虑解决以下几个问题,
1.模式集成问题
模式集成问题指如何使来自多个数据源的现实世界的实体相互匹配,这其中涉及实体识别问题。
例如,如何确定一个数据库中的“custom id”与另一个数据库中的“custome number”是否表示同一实体。
2.冗余问题
若一个属性可以从其他属性中推演出来,则这个属性就是冗余属性。例如,一个顾客数据表中的平均月收入属性就是冗余属性,显然它可以根据月收入属性计算出来。此外,属性命名的不一致也会导致集成后的数据集出现数据冗余问题。
3.数据值冲突检测与消除问题
在现实世界实体中,来自不同数据源的属性值或许不同,产生这种问题的原因可能是表示、比例尺度,或编码的差异等。
3.2.3 数据转换
数据转换就是将数据进行转换或归并,从而构成一个适合数据处理的描述形式。常用的转换策略如下。
1.规格化处理
规格化处理就是将一个属性取值范围投射到一个特定范围之内,以消除数值型属性因大小不一而造成挖掘结果的偏差,常常用于神经网络、基于距离计算的最近邻分类和聚类挖掘的数据预处理。对于神经网络,规格化后的数据不仅有助于确保学习结果的正确性,而且也会帮助提高学习的效率;对于基于距离计算的挖掘,规格化可以帮助消除因属性取值范围不同而影响挖掘结果的公正性。
2.属性构造处理
属性构造处理就是根据已有属性集构造新的属性,以帮助数据处理过程。属性构造方法可以利用已有属性集构造出新的属性,并将其加入现有属性集合中以挖掘更深层次的模式知识,提高挖掘结果准确性。
3.数据离散化处理
数据离散化处理是将数值属性的原始值用区间标签或概念标签替换的过程,它可以将连续属性值离散化。连续属性离散化的实质是将连续属性值转换成少数有限的区间,从而有效地提高数据挖掘工作的计算效率
4.数据泛化处理
数据泛化处理就是用更抽象(更高层次)的概念来取代低层次或数据层的教据对象,它广泛应用于标称数据的转换。例如,街道属性可以泛化到更高层次的概念,如城市、国家;数值型属性(如年龄属性),可以映射到更高层次的概念,如青年、中年和老年。
3.2.4 数据消减
对大规模数据进行复杂的数据分析通常需要耗费大量的时间,这时就需要使用数据消减技术了。数据消减技术的主要目的是从原有巨大数据集中获得一个精简的数据集,并使这一精简数据集保持原有数据集的完整性。这样在精简数据集上进行数据挖掘就会提高效率,并且能够保证挖掘出来的结果与使用原有数据集所获得的结果基本相同。
数据消减的主要策略有以下几种:
1.数据聚合(Data Aggregation),如构造数据立方(数据仓库操作);
2.维数消减(Dimension Reduction),主要用于检测和消除无关、弱相关或冗余的属性或维(数据仓库中属性)如通过相关分析消除多余属性。
3.数据压缩(Data Compression),利用编码技术压缩数据集的大小,
4.数据块消减(Numerosity Reduction),利用更简单的数据表达形式,如参数模型、非参数模型(聚类、采样、直方图等),来取代原有的数据。此外,利用基于概念树的泛化(Generalization)也可以实现对数据规模的消减。
3.3 大数据存储及管理
存储与管理是至关重要的一环,直接关系到后续分析和应用的效率和准确性。
3.3.1 常用存储方法
3.3.1.1 分布式文件系统(DFS)
分布式文件系统是一种能够将大文件切分成多个块,并存储在不同节点上的文件系统,DFS具有高可扩展性和容错性。
常用的分布式文件系统有Hadoop的HDFS、谷歌文件系统GFS等。
2.3.1.2 列式数据库
列式数据库是一种以列为基本单位进行存储和査询的数据库。相对于传统的行式数据库,列式数据库能够提供更高的查询性能,尤其适用于大数据场景。
常用的列式数据库有HBase、Cassandra等。
3.3.1.3 内存数据库
内存数据库是将数据存储在内存中,以提供更快的访问速度和更低的延迟。内存数据库常用于对实时数据进行快速计算和分析。
常用的内存数据库有Redis、Memcached等。
3.3.2 管理与维护策略
3.3.2.1 数据分区
数据分区通过将数据划分为多个区域,根据需求进行管理和检索,提高数据的访问效率,如数据冷热分离:冷存储是一种数据存储技术,通常使用离线介质将数据保存在不需要实时访问的位置;相对于热存储(hot storage)技术,冷存储具有更低的成本和更长的数据保存期限。
3.3.2.2 数据备份与恢复
为了防止数据丢失和灾难发生时的数据恢复,需要对数据进行定期备份,并测试备份数据的可用性和完整性。当数据出现故障或者灾难时,可以快速恢复数据以保障业务的连续性,
3.3.2.3 性能优化与监控
为了提高系统的性能和效率,需要对大数据存储系统进行优化和监控。通过调整配置参数、优化查询语句和增加硬件资源等手段,可以提高系统的响应速度和并发处理能力,
3.3.2.4 数据安全与权限管理
大数据存储中的数据安全是非常重要的,需要确保数据的机密性、完整性和可用性。同时,对于不同用户的数据访问权限也需要进行管理和控制,以保护数据的隐私性和安全性。
3.4 大数据分析及挖掘
3.4.1 主要作用
在大数据的背景下,数据分析和挖掘将扮演着越来越重要的角色。大数据分析和挖掘具有以下几方面的作用:
1.商业决策:对于商业来说,大数据分析和挖掘可以通过对客户行为、流量数据、销售数据等的分析,为企业提供更加全面和精细的决策支持;
2.科学研究:大数据分析和挖掘可以帮助学术界挖掘出更加精确和深入的科学知识,同样也可以促进社会发展;
3.社会治理:政府机构能够通过大数据分析和挖掘来识别社会问题和趋势,并通过各项计划或政策作出应对行动,强化治理的能力。
3.4.2 主要技术
大数据分析和挖掘技术的发展迅速,包括机器学习、人工智能、数据挖掘、数据可视化等各种技术的应用。这些技术都是在大数据环境下为了分析和挖掘海量数据而发展起来的。
1.机器学习:机器学习(Machine Learning)是一种基于统计学的算法,通过让机器从数据中自动学习规则和模式,并根据这些规则和模式进行预测和决策。机器学习技术可以用于分类、聚类、回归、降维等领域。例如,我们可以利用机器学习来帮助医院建立病人的诊断模型,根据病人的症状和身体指标来预测疾病类型和严重程度。
2.人工智能:人工智能应用了机器学习和其他相关技术,以实现人工智能的目标,即使计算机能够执行像人一样的任务。在大数据的环境下,人工智能技术可以帮助我们处理大规模数据,处理复杂的业务流程,增加运营效率等。
3.数据挖掘:数据挖掘(Data Mining)是指从大量数据中提取隐藏的、有价值的、潜在有用的信息的过程。数据挖掘技术主要包括聚类分析、分类分析、关联分析、概念分析等方法。它通过对数据中的关联规律、趋势、异常等进行分析,从而预测未来的情况和趋势。举个例子,当一家餐厅想要推出新菜品时,可以通过数据挖掘技术对顾客的口味、消费习惯等信息进行分析,以制定更合理、更有吸引力的菜品推广策略.。
4.数据可视化:数据可视化技术能够使人更直观地理解数据,以此提高数据分析的效率和决策的准确性。
3.4.3 面临挑战
1.数据质量问题
大数据分析与挖掘的结果往往依赖于数据的质量和一致性,但大数据的搜集和整合过程中常常存在数据质量低下和异构性的问题,如何确保数据的准确性和一致性成为了一项挑战。
2.数据隐私问题
大数据中蕴含着大量的敏感信息,如何保护数据的隐私和安全成为了一个重要的挑战。企业需要合规地采集、处理和存储数据,制定安全策略和机制,避免数据泄露和滥用。
3.技术能力问题
大数据分析与挖掘需要掌握一定的数理统计知识和数据挖掘算法,同时需要具备大数据处理和分析的技术能力。企业需要培养和吸引具备相关技术能力的人才,以应对大数据分析与挖掘的挑战。
3.5 大数据展现和应用
大数据展现是使用图表、图形化界面、动态图像等形式去呈现大数据,以便人们能够更容易地理解和分析这些数据。这种技术能够将大量的数据转换成可视化的形式,使得人们可以通过图形、颜色、动画等方式直观地看到数据的变化和趋势。这种可视化的方式,能够更好地传达数据的含义和价值,使得人们能够更好地了解数据,做出更好的决策。
早期的大数据可视化技术,主要是通过Excel表格、饼状图等简单的工具进行数据可视化,但是这种方式已经无法满足现代企业对数据可视化的需求了。在今天的市场上,有许多种不同的大数据可视化工具和平台,包括Tableau、D3.is、EECharts等,以及大型企业软件提供商的BI平台。这些工具和平台,都提供了许多功能和工具,以便企业和组织更好地进行数据可视化。
使用大数据可视化技术的优势主要体现在以下几个方面:
1.更直观、更易懂。通过可视化呈现大数据,能够更好地传递数据的含义和价值。人们更容易理解和分析可视化数据,从而做出更好的决策
2.更高效、更准确。大数据可视化技术能够更高效地处理大量的数据,而且可以自动化生成报告和图表,减少人工处理数据的时间和错误率。
3.更全面、更深入。大数据可视化技术可以将原始数据转换成多维度的可视化图表和动态图像,以供更深入地挖掘大数据。
4.更灵活、更可定制性。使用大数据可视化技术的过程中,可以根据不同需求、不同领域的不同数据,进行不同的可视化处理和定制。
大数据应用领域很广,例如:商业智能技术,政府决策技术,电信数据信息处理与挖掘技术,电网数据信息处理与挖掘技术,气象信息分析技术,环境监测技术,警务云应用系统(道路监控、视频监控、网络监控、智能交通、反电信诈骗、指挥调度等公安信息系统),大规模基因序列分析比对技术,Web信息挖掘技术,多媒体数据并行化处理技术,影视制作渲染技术,其他各种行业的云计算和海量数据处理应用技术等。
四、平台架构
4.1 Splunk
在商业化的大数据平台产品中,Splunk提供完整的数据采集、数据存储、数据分析和处理以及数据展现的能力。Splunk是一个分布式机器数据平台,主要有三个角色。Splunk架构如下图所示。

图11 Splunk架构
- Search:负责数据的搜索和处理,提供搜索时的信息抽取功能;
- Indexer:负责数据的存储和索引;
- Forwarder:负责数据的收集、清洗、变形,并发送给Indexer。
Splunk内置了对Syslog、TCP/UDP、Spooling的支持,同时,用户可以通过开发Input和Modular Input的方式来获取特定的数据。在Splunk提供的软件仓库里有很多成熟的数据采集应用,如AWS、数据库(DBConnect)等,可以方便地从云或数据库中获取数据进入Splunk的数据平台做分析。
Search Head和lndexer都支持Cluster的配置,即高可用、高扩展,但Splunk现在还没有针对Forwarder的Cluster的功能。也就是说,如果有一台Forwarder的机器出了故障,则数据收集也会随之中断,并不能把正在运行的数据收集任务因故障切换(Failover)到其他的Forwarder上。
4.2 Hadoop
Hadoop是Apache软件基金会下一个开源分布式计算平台,以HDFS(Hadoop Distributed File System)、MapReduce(Hadoop2.0加入了YARN,Yarn是资源调度框架,能够细粒度的管理和调度任务,还能够支持其他的计算框架,比如spark)为核心的,由Hadoop为用户提供了系统底层细节透明的分布式基础架构。HDFS的高容错性、高伸缩性、高效性等优点让用户可以将Hadoop部署在低廉的硬件上,形成分布式系统。

图12 Hadoop生态组件
-
- Sqoop——数据转移系统,是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库中的数据导入Hadoop的HDFS中,也可以将HDFS的数据导入关系型数据库中。
- Flume——一个可用的、可靠的、分布式的海量日志采集、聚合和传输系统。
- Kafka——一种高吞吐量的分布式发布订阅消息系统。
- HDFS——Hadoop分布式文件系统,GFS的Java开源实现,运行于大型商用机器集群,可实现分布式存储。
- Hbase——基于Hadoop的分布式数据库,Google BigTable的开源实现 是一个有序、稀疏、多维度的映射表,有良好的伸缩性和高可用性,用来将数据存储到各个计算节点上。
- Yarn——Apache Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
- MapReduce——一种并行计算框架,Google MapReduce模型的Java开源实现,基于其写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理T级别及以上的数据集。(第一代的计算框架,自身存在一些弊端,所以导致企业里已经很少使用了)。
- Spark——Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发的通用内存并行计算框架,借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。使用场景如下:
- 复杂的批量处理(Batch Data Processing),偏重点在于处理海量数据的能力,至于处理速度可忍受,通常的时间可能是在数十分钟到数小时;
- 基于历史数据的交互式查询(Interactive Query),通常的时间在数十秒到数十分钟之间;
- 基于实时数据流的数据处理(Streaming Data Processing),通常在数百毫秒到数秒之间。
- Storm——Storm用于“连续计算”,对数据流做连续查询,在计算时就将结果以流的形式输出给用户。如今已被Flink替代。
- Flink——Apache Flink是一个面向数据流处理和批量数据处理的可分布式的开源计算框架,它基于同一个Flink流式执行模型(streaming execution model),能够支持流处理和批处理两种应用类型。由于流处理和批处理所提供的SLA(服务等级协议)是完全不相同, 流处理一般需要支持低延迟、Exactly-once保证,而批处理需要支持高吞吐、高效处理,所以在实现的时候通常是分别给出两套实现方法,或者通过一个独立的开源框架来实现其中每一种处理方案。
- Hive——是为提供简单的数据操作而设计的分布式数据仓库工具,它提供了简单的类似SQL语法的HiveQL语言进行数据查询。
- Mahout——基于Hadoop MapReduce的大规模数据挖掘与机器学习算法库。
- Pig——大数据流处理系统,建立于Hadoop之上为并行计算环境提供了一套数据工作流语言和执行框架。
- Zookeeper——分布式协调系统,Google Chubby的Java开源实现,是高可用的和可靠的分布式协同(coordination)系统,提供分布式锁之类的基本服务,用于构建分布式应用。
- Oozie——MapReduce工作流管理系统。
- Azkaban——由Linkedin开源的批量工作流任务调度器。用于在一个工作流内以一个特定的顺序运行一组工作和流程。
五、企业案例
5.1 阿里云大数据相关产品
由于精力有限,这里只列举了阿里云在大数据体系下的相关产品。
表7 阿里云大数据计算相关产品
| 产品分类 | 产品名称 | 产品说明 |
| 存储 | 实时数仓 Hologres | 一站式实时数据仓库引擎,支持海量数据实时写入、实时更新、实时分析,支持标准SQL(兼容PostgreSQL协议),支持PB级数据多维分析(OLAP)与即席分析(Ad Hoc),支持高并发低延迟的在线数据服务(Serving),与MaxCompute、Flink、DataWorks深度融合,提供离在线一体化全栈数仓解决方案。 |
| 云原生大数据计算服务 MaxCompute | 面向分析的企业级 SaaS 模式云数据仓库,以Serverless架构提供快速、全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,可以经济并高效的分析处理海量数据。数以万计的企业正基于MaxCompute进行数据计算与分析,将数据高效转换为业务洞察。 | |
| 计算 | 实时计算Flink版 | 阿里云提供的全托管Serverless Flink云服务,具备实时应用的作业开发、数据调试、运行与监控、自动调优、智能诊断等全生命周期能力。内核引擎100%兼容Apache Flink,2倍性能提升,拥有FlinkCDC、动态CEP等企业级增值功能,内置丰富上下游连接器,助力企业构建高效、稳定和强大的实时数据应用。 |
| 开源大数据平台 E-MapReduce | 云原生开源大数据平台,为客户提供简单易集成的Hadoop、Hive、Spark、StarRocks、Flink、Presto、ClickHouse等开源大数据计算和存储引擎。EMR计算资源支持灵活的弹性控制。EMR支持on ECS、on ACK以及Serverless多种部署形态。 | |
| 检索 | 检索分析服务Elasticsearch版 | 100%兼容开源的分布式检索、分析套件。提供Elasticsearch、Kibana、Logstash、Beats等开源全托管的产品服务能力。为结构化/非结构化数据提供低成本、高性能及可靠性的检索、分析平台级产品服务。具备读写分离、存算分离、弹性伸缩、智能化运维、免费的X-Pack高级商业特性等产品特性。 |
| 开发平台 | 大数据开发治理平台 DataWorks | 一种以All in one box的方式提供Serverless化服务的、专业高效、安全可靠的一站式大数据智能研发平台,基于阿里云MaxCompute、Flink作为核心计算引擎,涵盖数据集成、数据开发(实时离线任务一体化开发、实时离线异构数据湖查询)、算法开发、数据服务、数据治理、数据应用等各方面能力,让用户在云端就能轻松构建出独属于自己的数据智能解决方案。 |
参考文献
1.大数据白皮书(2022年)——中国信息通信研究院
2.大数据——https://zhuanlan.zhihu.com/p/474902137
3.机器学习:盘点最常见的7种数据预处理方法和原理——https://zhuanlan.zhihu.com/p/485962415?utm_id=0
4.大数据预处理方法——https://wenku.baidu.com/view/c68e82e3b84cf7ec4afe04a1b0717fd5360cb2b5.html?_wkts_=1706599332597&bdQuery=%E5%A4%A7%E6%95%B0%E6%8D%AE+%E6%95%B0%E6%8D%AE%E9%A2%84%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95
5.启动按钮,“数据要素x”红利释放——华西证券股份有限公司
6.数据要素全知道系列——东吴证券研究所
7.数据要素周度跟踪:2024有望开启数据要素产业元年——天风证券
本文系统介绍大数据技术,涵盖采集、预处理、存储管理、分析挖掘及展现应用等关键技术,还介绍了Splunk和Hadoop平台架构,并列举阿里云大数据产品案例。同时指出大数据分析挖掘面临数据质量、隐私和技术能力等挑战。
903

被折叠的 条评论
为什么被折叠?



