|
知识路径: > 网络与信息安全知识 > 网络与信息安全知识 > 大数据 > 大数据处理基础知识 >
|
被考次数:1次
被考频率:低频率
总体答错率:63%  
知识难度系数:
|
由 软考在线 用户真实做题大数据统计生成
|
考试要求:掌握
相关知识点:5个
|
|
|
|
大数据生命周期涉及众多技术,当前大数据发展迅速,在大数据处理的各个环节上涌现出众多技术,本小节做简要介绍。
|
|
|
从大数据生命周期的角度看,大数据处理的基本流程包括:数据采集、数据分析和数据解释。大数据处理流程图如下图所示。
|
|
|
|
|
|
数据采集阶段的主要任务就是获取各个不同数据源的各类数据,按照统一的标准进行数据的转换、清洗等工作,以形成后续数据处理的符合标准要求的数据集。
|
|
|
原始数据往往形式多样,包括:结构化数据,例如业务系统中的交易明细、操作日志等;非结构化数据,例如企业中的各种文档数据,视频、音频等数据;半结构化数据,例如Web页面的HTML文档等。而且其来源和种类也存在很大差距。
|
|
|
|
.传感数据:传感数据是由感知设备或传感设备感受、测量及传输的数据。这些感知设备或传感设备实时和动态地收集大量的时序传感数据资源。传感数据种类有很多,如人身体的传感数据,网络信号的传感数据和气象的传感数据等。近年来随着物联网、工业互联网的日益发展,传感数据越来越丰富,人们也逐渐发现了其数据价值。
|
|
|
.业务数据:企业业务系统在执行日常业务活动时产生的大量数据,包括设备工况、操作记录、交易流水,以及用户在使用系统时遗留下来的大量行为数据。这些数据反映了人或者物的属性、偏好,在推荐或预测系统中有很大的利用价值。
|
|
|
.人工输入数据:用户通过软件人机交互等主动输入的数据,典型代表是微博、微信、抖音等系统的用户输入数据。随着互联网的不断深入,手机APP应用的不断发展,这种用户产生的数据也越来越多,越来越丰富。
|
|
|
.科学数据:通过科学研究和科学实验不断搜集和汇聚的数据,一般是以电子记录或文本的形式存在。
|
|
|
|
.企业数据:企业自建的各种业务系统,如ERP、在线交易系统、招聘系统等,也会产生各种数据集。
|
|
|
.政府数据:政府信息化已发展多年,构建了很多业务数据。近年来政府也在不断地建设大数据中心,发布各种数据,包括人社、医疗、税务、工商、财务等。
|
|
|
.互联网数据:互联网数据是当前大数据应用的一个重要的数据来源。互联网上存在各种应用沉淀下来的大量数据,包括门户网站、社交信息、电商网站等等。
|
|
|
其中,企业数据一般属于内部数据,而政府数据、互联网数据往往属于外部数据。
|
|
|
从上面大数据的分类可以看出,数据来源渠道众多,差异非常大。因此,数据采集的主要任务就是进行数据的汇聚,为后续的数据处理做好准备。这个阶段工作中主要涉及的技术包括针对内部数据的数据集成和ETL技术,针对外部数据,尤其是互联网数据的爬虫技术。
|
|
|
数据集成是把不同来源、格式、特点性质的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享。在企业数据集成领域,已经有很多成熟的框架可以利用。目前通常采用联邦式、基于中间件模型和数据仓库等方法来构造集成的系统,这些技术在不同的着重点和应用上解决数据共享和为企业提供决策支持。
|
|
|
ETL(Extract Transform Load)用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
|
|
|
|
|
|
ETL过程中的主要环节是数据抽取、数据转换和加工、数据加载。一般ETL工具中,围绕上述三个核心环节进行了功能上的扩充,例如工作流、调度引擎、规则引擎、脚本支持和统计信息等,尽量降低ETL阶段的工作强度,减少工作量。
|
|
|
数据转换和加工是三个环节的重点,因为抽取的数据中往往存在各种问题,例如数据格式不一致、数据输入错误、字段不匹配、字段类型不符、数据不完整等。ETL一般以组件化的方式实现数据转换和加工。常用的数据转换组件有字段映射、数据过滤、数据清洗、数据替换、数据计算、数据验证、数据加解密、数据合并、数据拆分等,并以工作流的形式进行各种方式的组合,以满足数据转换的需求。有的ETL工具也提供脚本支持,满足用户定制化的数据转换需求。
|
|
|
常用的ETL工具有三种:DataStage、Informatica PowerCenter和Kettle。
|
|
|
.DataStage:IBM公司的DataStage是一种数据集成软件平台,专门针对多种数据源的ETL过程进行了简化和自动化,同时提供图形框架,用户可以使用该框架来设计和运行用于变换和清理、加载数据的作业。它能够处理的数据源有主机系统的大型数据库、开发系统上的关系数据库和普通的文件系统。
|
|
|
.Informatica PowerCenter:Informatica公司开发的为满足企业级需求而设计的企业数据集成平台。可以支持各类数据源,包括结构化、半结构化和非结构化数据。提供丰富的数据转换组件和工作流支持。
|
|
|
.Kettle:Kettle是一款国外开源的ETL工具,纯Java编写,可以在Windows、Linux、UNIX上运行,数据抽取高效稳定。管理来自不同数据库的数据,提供图形化的操作界面,提供工作流支持。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。Kettle包括4个产品:Spoon、Pan、Chef、Kitchen。Spoon通过图形界面来设计ETL转换过程(Transformation)。Pan批量运行由Spoon设计的ETL转换(例如使用一个时间调度器),是一个后台执行的程序,没有图形界面。Chef创建任务(Job),任务通过允许每个转换、任务、脚本等等,更有利于自动化更新数据仓库的复杂工作。Kitchen批量使用由Chef设计的任务(例如使用一个时间调度器)。
|
|
|
由于很多大数据应用都需要来自互联网的外部数据,因此,爬虫技术也称为数据采集阶段的一个主要基础性的技术。
|
|
|
网络爬虫(又称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。网络爬虫基本的体系结构如下图所示。
|
|
|
|
|
爬虫调度器主要负责统筹其他四个模块的协调工作。URL管理器负责管理URL链接,维护已经爬取的URL集合和未爬取的URL集合,提供获取新URL链接的接口。HTML下载器用于从URL管理器中获取未爬取的URL链接并下载HTML网页。HTML解析器用于从HTML下载器中获取已经下载的HTML网页,并从中解析出新的URL链接交给URL管理器,解析出有效数据交给数据存储器。
|
|
|
网络爬虫大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、深层网络(Deep Web)爬虫。实际的大数据应用由于往往聚焦于某个特定的应用目标,其采用的网络爬虫系统通常是聚焦网络爬虫、深层网络爬虫技术相结合实现的。
|
|
|
通用网络爬虫,爬行对象从一些种子URL扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合几个部分。为提高工作效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有:深度优先策略、广度优先策略。
|
|
|
聚焦网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,可以很好地满足一些特定人群对特定领域信息的需求。聚焦网络爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价模块。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,常见的爬行策略有基于内容评价的爬行策略、基于链接结构评价的爬行策略、基于增强学习的爬行策略、基于语境图的爬行策略等。
|
|
|
深层网络爬虫用于专门爬取那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。Deep Web爬虫爬行过程中最重要的部分就是表单填写,包含两种类型:基于领域知识的表单填写,此方法一般会维持一个本体库,通过语义分析来选取合适的关键词填写表单;基于网页结构分析的表单填写,此方法一般无领域知识或仅有有限的领域知识,将网页表单表示成DOM树,从中提取表单各字段值。常见的爬虫工具有如下三种:
|
|
|
.Nutch:一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch有Hadoop支持,可以进行分布式抓取、存储和索引。Nutch采用插件结构设计,高度模块化,容易扩展。
|
|
|
.Scrapy:是Python开发的一个快速、高层次的屏幕抓取和Web抓取框架,用于抓取Web站点并从页面中提取结构化的数据。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便地修改。它提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫、Web2.0爬虫等。
|
|
|
.Larbin:Larbin是一种开源的网络爬虫/网络蜘蛛,用C++语言实现。Larbin目的是能够跟踪页面的URL进行扩展的抓取,最后为搜索引擎提供广泛的数据来源。
|
|
|
当数据采集到以后,需要对采集并清洗后的数据进行存储。具体的存储技术在13.1.3云关键技术中的分布式数据存储中介绍,此处不再详述。
|
|
|
|
数据分析是大数据处理过程中的重要组成部分,是大数据价值体现的核心环节。经典的机器学习方法是最常见的数据智能分析方法,近年来迅速发展的深度学习在某些领域取得了惊人的效果。在应用开发上,也形成了几种主流的大数据处理框架。
|
|
|
机器学习中算法很多,也有很多不同种类的分类方法,一般分为监督学习和非监督学习(或无监督学习)。其中,监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练,是从标记的训练数据来推断一个功能的机器学习任务。根据训练集中的标识是连续的还是离散的,可以将监督学习分为两类:回归和分类。
|
|
|
回归是研究一个或一组随机变量对一个或一组属性变量的相依关系的统计分析方法。线性回归模型是假设自变量和因变量满足线性关系。Logistic回归一般用于分类问题,而其本质是线性回归模型,只是在回归的连续值结果上加了一层函数映射。
|
|
|
分类是机器学习中的一个重要问题,其过程也是从训练集中建立因变量和自变量的映射过程,与回归问题不同的是,分类问题中因变量的取值是离散的,根据因变量的取值范围,可将分类问题分为二分类问题、三分类问题和多分类问题。根据分类采用的策略和思路的不同,分类算法大致包括:基于示例的分类方法,如K最近邻(K-Nearest Neighbor,KNN)方法;基于概率模型的分类方法,如朴素贝叶斯、最大期望算法EM等;基于线性模型的分类方法,如SVM;基于决策模型的分类方法,如C4.5、AdaBoost、随机森林等。
|
|
|
在实际应用中,缺乏足够的先验知识,因此难以人工标注类别或进行人工类别标注的成本太高,学习模型是为了推断出数据的一些内在结构。因此,根据类别未知(没有被标记)的训练样本解决模式识别中的各种问题,称为无监督学习。常见的算法有:关联规则挖掘,是从数据背后发现事物之间可能存在的关联或联系。比如数据挖掘领域著名的“啤酒-尿不湿”的故事。K-means算法,基本思想是两个对象的距离越近,其相似度越大;相似度接近的若干对象组成一个簇;算法的目标是从给定数据集中找到紧凑且独立的簇。
|
|
|
近年来发展起来的深度学习算法是基于原有的神经网络算法发展起来的,包括BP神经网络、深度神经网络。
|
|
|
BP神经网络是一种反向传播的前馈神经网络,所谓前馈神经网络就是指各神经元分层排列,每个神经元只与前一层的神经元相连,接收前一层的输出,并输出给下一层。所谓反向传播是指从输出层开始沿着相反的方向来逐层调整参数的过程。BP神经网络由输入层、隐含层和输出层组成。
|
|
|
深度神经网络主要包括卷积神经网络、循环神经网络等,也包括它们的各种改进模型。
|
|
|
(1)卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,其结构包括输入层、卷积层、池化层、全连接层以及输出层等。该算法在图像处理、模式识别等领域取得了非常好的效果。在CNN的发展过程中,最经典的模型是AlexNet,针对不同的应用需要,又产生了全卷积模型(FCN)、残差神经网络模型(ResNet)、DeepFace等模型结构。
|
|
|
(2)循环神经网络(Recurrent Neural Network,RNN)是一种人工神经网络,在该网络中,除了层间的连接以外,同层各单元之间连接构成了一个有向图序列,允许它显示一个时间序列的动态时间行为。RNN可以使用它们的内部状态来处理输入序列,这使得它们适用于诸如未分割的、连续的手写识别或语音识别等任务。传统的RNN是很难训练的,往往会出现梯度消失或梯度爆炸等情况,因此又出现了多个扩展版本,如BiRNN、LSTM等。
|
|
|
随着深度学习的快速发展和应用的普及,开始出现了一些深度学习框架。深度学习框架是一种界面、库或工具,可以使用户在无需深入了解底层算法的细节的情况下,能够更容易、更快速地构建深度学习模型。深度学习框架利用预先构建和优化好的组件集合定义模型,为模型的实现提供了一种清晰而简洁的方法。常见的深度学习框架有:Caffe,是一个广泛使用的开源深度学习框架,支持常用的网络模型,比如Lenet、AlexNet、ZFNet、VGGNet、GoogleNet、ResNet等;TensorFlow,是一个使用数据流图进行数值计算的开源软件库,图中的节点表示数学运算,而图边表示节点之间传递的多维数据阵列(又称张量),其为大多数复杂的深度学习模型预先编写好了代码,比如递归神经网络和卷积神经网络,灵活架构使我们能够在一个或多个CPU(以及GPU)上部署深度学习模型;Keras,是一个由Python编写的开源人工神经网络库,可以作为TensorFlow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化,Keras完全模块化并具有可扩展性,并试图简化复杂算法的实现难度。
|
|
|
随着大数据技术的广泛深入,大数据应用已经形成了庞大的生态系统,很难用一种架构或处理技术覆盖所有应用场景。下文介绍几种当前主流的大数据分布式计算架构。
|
|
|
Apache Hadoop是用于开发可靠、可伸缩、分布式计算的开源软件,是一套用于在由通用硬件构建的大型集群上运行应用程序的框架。包含的模块有:Hadoop分布式文件系统(HDFS),提供对应用程序数据的高吞吐量访问的分布式文件系统;Hadoop YARN,作业调度和集群资源管理的框架;Hadoop MapReduc,一个用于大型数据集并行处理的基于YARN的系统;Hadoop Ozone,Hadoop的对象存储;Hadoop Submarine,Hadoop的机器学习引擎。
|
|
|
Apache Spark是加州大学伯克利分校的AMP实验室所开源的类Hadoop MapReduce的通用并行框架。Spark是一个分布式的内存计算框架,是专为大规模数据处理而设计的快速通用的计算引擎。Spark的计算过程保持在内存中,不需要读写HDFS,减少了硬盘读写,提升了计算速度。除了Map和Reduce操作外,Spark还延伸出如filter、flatMap、count、distinct等更丰富的操作。同时通过Spark Streaming支持处理数据流。
|
|
|
Apache Storm是一个免费的开源分布式实时计算系统,可以可靠地处理无边界的数据流变,可以实现实时处理。Apache Storm速度很快,它是可扩展的,容错的,并且易于设置和操作。Apache Storm应用于实时分析、在线机器学习、连续计算、分布式RPC、ETL等等。Storm的核心是拓扑(Topology),拓扑被提交给集群,由集群中的主控节点分发代码,将任务分配给工作节点执行。
|
|
|
|
数据解释的主要工作是对大数据处理后产生的输出数据进行处理,采用合理合适的人机交互方式将结果展现给用户,帮助用户做出相应的决策。
|
|
|
在传统的数据挖掘、商业智能和大数据处理领域,可视化一直是重要的方法和手段。信息可视化是指对抽象数据使用计算机支持的、交互的、可视化的表示形式以增强认知能力。为了清晰有效地传递信息,数据可视化使用统计图形、图表、信息图表和其他工具。可以使用点、线或条对数字数据进行编码,以便在视觉上传达定量信息。有效的可视化可以帮助用户分析和推理数据和证据。它使复杂的数据更容易理解和使用。用户可能有特定的分析任务(如进行比较或理解因果关系),以及该任务要遵循的图形设计原则。表格通常用于用户查找特定的度量,而各种类型的图表用于显示一个或多个变量的数据中的模式或关系。
|
|
|
关于数据可视化的适用范围,当前存在着不同的划分方法。一个常见的关注焦点就是信息的呈现。例如,迈克尔·弗兰德利(2008)提出了数据可视化的两个主要的组成部分:统计图形和主题图。另外,《Data Visualization:Modern Approaches》一文则概括阐述了数据可视化的下列主题:思维导图、新闻的显示、数据的显示、连接的显示、网站的显示、文章与资源、工具与服务。所有这些主题全都与图形设计和信息表达密切相关。从应用领域来讲,又可分为文本数据可视化,如标签云;网络数据可视化,如H状树、气球图、放射图等;时空数据可视化,如流式地图、堆积图等;多维数据可视化,如散点图等。
|
|
|
常见的大数据可视化工具主要分为三类:底层程序框架,如OpenGL、Java2D等;第三方库,如D3、ECharts、HighCharts、Google Chart API等;软件工具,如Tableau、Gephi等。
|
|
|