8、大数据:概念、技术与考量
大数据:概念、技术与考量
1. 大数据概述
在当今时代,几乎人类的每一项活动都会产生某种形式的数据。通过互联网搜索、社交媒体发布、活动追踪器、销售点金融交易、车辆中的 GPS 以及公共场所安装的摄像头,大多数人在日常生活中不知不觉地融入了数据生成技术。每天产生的数据超过 2.5 千兆字节,并且这个数字还在持续增长。
“大数据”这一术语并没有一个被广泛认可的定义。简单来说,大数据指的是规模巨大的数据,但对于多大的数据才能被视为“大”,并没有一个标准。有人将大数据定义为无法在单台计算机上存储、处理或分析的数据;也有人根据当时的全球互联网流量容量,将大数据定义为介于太字节和泽字节之间的数据集。更细致的定义将大数据分为三个 V:容量(Volume)、速度(Velocity)和多样性(Variety),有时还会包括准确性(Veracity)和价值(Value)。
-
容量(Volume)
:指数据的大小,但没有明确的阈值。例如,Instagram 上上传的超过 200 亿张照片,以及约 50 亿手机用户的通话记录。
-
速度(Velocity)
:指数据生成的速度。例如,YouTube 每 60 秒生成超过 100 小时的视频数据,每天新增 5 亿条推文。许多大数据来源,特别是与天气和气候相关的数据,由远程传感器以每秒多次的频率进行记录。
-
多样性(Variety)
:指数据的结构,可能是结构化、半结构化或非结构化的。结构化数据通常是表格数据,以向量和矩阵的形式存在,具有明确的特征和关系;半结构化数据不存储在关系表格格式中,但使用标签来识别单个记录;非结构化数据既不是表格形式,也没有区分记录或特征的方法,常见的有文本、音频或视频文件。
大数据的容量、速度和多样性使得传统的数据捕获、存储、预处理和分析方法变得不足。大数据分析更具挑战性,因为数据往往是非结构化的,并且需要可扩展的算法来适应数据规模的增长。大数据存储也更加困难,需要大规模的分布式存储系统来容纳不断增长的数据量。
企业、科学家和政府意识到了利用这些数据来获取洞察的潜力,从而引发了对几乎所有事物进行追踪和量化的趋势,形成了社会的“数据化”。这也催生了跨学科的数据科学领域,因为需要专业人员成为“数据科学家”,而不仅仅是熟悉特定类型数据的领域专家。数据科学家引入了准确性和价值作为大数据的重要特征,准确性指数据的完整性和验证每条记录准确性的能力,价值指大数据为某个主题提供有价值信息的潜力。
大数据的出现也促使科学研究向归纳逻辑转变。通过数据分析来识别数据中的潜在模式,进而围绕这些模式形成假设。这与之前的演绎方法不同,因为大数据通常是其他过程的副产品,并非为了统计分析或研究而收集。
最后,大数据需要数学、统计学和计算机科学的知识来提取有价值的信息。由于大数据的规模,传统的统计分析方法不再适用,需要将统计方法与机器学习方法相结合,同时并行计算的出现解决了许多传统方法无法处理的大数据分析挑战。
2. 大数据分析
大数据的规模使得算法高度依赖计算任务的并行化,即同时在不同的计算单元上运行多个任务。有三种并行分析数据的方法:
1.
数据并行化
:将数据在系统中的可用节点之间进行分区,每个节点对其分配到的数据运行相同的算法。这种方法适用于数据分布相同且观测值相互独立的情况。
2.
模型并行化
:在每个计算节点上复制数据,然后在每个节点上运行模型的不同部分,最后汇总每个节点的结果。但并非所有情况都适用,因为模型并不总是能被拆分成多个独立的部分。
3.
数据和模型并行化
:同时对数据和模型进行并行化。
数据生成的快速速度带来了新的挑战,有时需要实时分析技术。在实时分析中,数据随着事件的发生而连续到达,事件处理通常涉及比流处理更复杂的分析,流处理则是在数据生成时进行处理,通常涉及更简单、速度更快的分析。为了应对实时分析的挑战,开发了各种系统。
实时分析系统需要满足以下关键要求:
-
低延迟
:数据生成和处理之间的时间尽可能短。通过并行处理、内存处理和增量评估来实现。
-
高可用性
:系统在需要时能够执行预期功能。通过在多个服务器或节点上复制数据来实现。
-
水平可扩展性
:随着数据大小或计算任务的增加,系统的容量可以通过添加更多计算节点来增加。
3. 大规模并行处理数据库系统(MPP)
大数据计算需要特定的架构模型来处理数据的规模、类型和生成速度。大规模并行处理数据库系统(MPP)通过使用多个处理器来加速计算性能。典型的 MPP 系统可以有多达数百个处理器,每个处理器都有自己的内存和操作系统,并且彼此独立运行,因此被称为“无共享”或“松散耦合”系统。
MPP 架构由一个领导节点负责各个节点之间的通信。领导节点将整个计算任务分解为小任务,并分配给各个节点在小批量数据上执行。各个节点完成任务后,将结果信息反馈给领导节点。这种架构允许多个用户同时查询数据,同时避免响应延迟。为了应对数据增长,MPP 系统可以通过垂直添加额外的服务器或水平添加现有服务器的额外节点来进行扩展。一些流行的 MPP 系统包括 Google 的 BigQuery、Snowflake、Amazon Redshift 和 Microsoft Azure Synapse。
4. 批量同步并行架构(BSP)
批量同步并行(BSP)架构模型将计算任务分为多个阶段,称为超级步骤。每个超级步骤有多个并行计算线程来执行计算任务。在每个超级步骤结束时,计算线程会进行同步,以便将必要的信息传递到下一个超级步骤。超级步骤之间的屏障确保在程序继续到下一个超级步骤之前进行同步。
为了确保计算线程之间的通信正常,引入了两个参数 L 和 g 来量化同步。L 衡量计算吞吐量,g 衡量通信吞吐量,这两个值的比率用于确保与下一个超级步骤的同步和通信成功。
BSP 模型是基于消息传递的,每个组件有自己的本地内存,独立完成任务,但与更大的网络相连以共享信息。每个超级步骤从上一个步骤接收信息,并将信息传递给下一个步骤。
5. 内存数据库系统
内存数据库系统是一种全新的数据存储方式,与之前的大数据计算架构不同,它将所有数据存储在系统的内存中,而不是磁盘上。这种存储方式提高了任务的速度,因为不需要进行输入/输出操作来访问必要的数据,所有数据都存储在一个地方,使得节点更容易、更快地访问数据。由于这种优势,内存架构被广泛应用于数据库管理程序,如 SQLite、MonetDB、SQLFire 和 SolidDB。
6. MapReduce
在传统计算中,计算被视为一系列改变程序状态的过程。而在 MapReduce 框架中,计算任务被分为一组映射任务和一组归约任务,这些任务在一组计算单元上运行。计算负载分布在这些计算机上,每个任务只对其分配到的数据子集进行计算。
MapReduce 的工作流程如下:
1.
输入分割
:将输入数据分割成多个块。
2.
映射阶段
:加载数据,将数据分配到各个计算单元,并通过执行指定的数学函数对数据进行转换。为每个处理的记录分配一个分区号,确保具有相同分区号的记录被发送到同一个归约器。
3.
排序和传输
:按分区号对数据进行排序,并将其传输到归约器。
4.
归约阶段
:归约器汇总映射任务的结果并输出最终数据。
MapReduce 架构是一种无共享架构,因此能够在短时间内在数百万台机器上并行运行程序。
7. 云计算
在某些情况下,大数据在云平台上进行处理和分析。云计算具有资源弹性、避免硬件成本和按需付费等优点,用户可以从任何地方访问计算资源。然而,使用云计算也存在数据隐私和安全问题,一旦数据传输到云计算集群,数据所有者就不再直接控制数据。
云计算集群可以分为公共云、私有云和社区云,也可以是它们的组合,即混合云。云计算集群有三个子组,根据用户上传数据后对数据的控制程度进行定义:
-
软件即服务(SaaS)
:用户对数据的控制最少,但无需拥有软件的物理副本。
-
平台即服务(PaaS)
:用户可以访问执行计算任务所需的工具,对数据的控制比 SaaS 多,但比基础设施即服务少。
-
基础设施即服务(IaaS)
:用户对数据的控制最多,所有必要的硬件和软件都外包给 IaaS 提供商。目前,最大的云计算服务提供商包括亚马逊网络服务(AWS)、微软 Azure 和谷歌云平台(GCP)。
8. 在本地机器上分析大数据
有时,大数据分析不需要访问云计算或特定的大数据框架。通过优化数据处理方法和使用专门为处理大型数据文件而开发的库,可以在本地机器上分析一些大数据。数据处理可以通过以下方式进行优化:
-
选择必要的列
:从数据集中选择只需要的列。
-
随机抽样
:选择数据集的随机样本进行分析。
-
使用向量格式编写代码
:比使用循环逐行处理数据集更高效。
一些 Python 库专门用于处理大型数据,如 Numba 模块用于优化 NumPy 数组的代码,Dask 模块用于处理 Pandas 数据框,Dask - ML 用于机器学习算法。
9. 大数据处理
大数据处理模型主要有两种方式:批处理模式和流处理模式。
-
批处理模式
:数据存储在内存或磁盘中,并按预定的时间间隔分块处理。
-
流处理模式
:数据在系统中出现时进行处理。
两者的关键区别在于数据处理的时间延迟。大数据处理的主要关注点包括数据分区和分布、可扩展性、调度和容错性。
-
数据分区和分布
:为了充分利用架构中的多个节点,数据需要进行分区并分布在各个节点上。可以水平或垂直进行分区,有效分区可以确保资源的最大化利用、系统的容错性、数据安全和加快查询处理时间。
-
可扩展性
:由于大数据的规模,需要有效利用可用的计算资源来提高查询处理速度。
-
调度
:有多种方法可以对计算任务进行调度,一个有效的调度方法可以使大数据处理框架同时处理多个任务。
-
容错性
:系统在发生故障时能够继续从断点处恢复,避免数据或信息的丢失。常见的故障原因包括节点故障、网络故障和进程故障。
批处理和流处理框架各有优势。批处理最早得到发展和普及,MapReduce 是最早的批处理框架之一,具有高度的容错性。Apache Hadoop 和 Hadoop 文件系统(HDFS)是基于 MapReduce 框架的开源大数据处理技术。然而,MapReduce 更适合批处理作业,对于需要流处理的情况并不理想。因此,开发了包括 Spark、Storm 和 Flink 在内的流处理技术。
9.1 MapReduce 与 Hadoop 文件系统
MapReduce 中的记录采用键 - 值格式,每个数据记录都与一个标识键相关联。其工作流程如下:
1.
读取文件
:MapReduce 读取存储在 HDFS 上的文件。
2.
输入分割
:将输入文件分割成多个部分。
3.
记录读取
:记录读取器逐行读取分割后的数据,并将其传递给映射器。
4.
映射处理
:映射器处理数据,执行映射函数,并返回一个上下文对象,用于与归约器进行通信。
5.
分区和排序
:为处理后的记录分配分区号,按分区号和记录键对数据进行排序。
6.
缓冲区和合并
:数据被发送到循环缓冲区,如果缓冲区达到 80% 的容量,剩余记录将被写入本地磁盘。在写入磁盘之前,数据会经过一个合并器进行本地归约,减少写入磁盘的数据量。
7.
归约处理
:归约器从映射器中拉取记录,对属于同一键的所有记录运行归约函数,并输出每条键的一条记录。
9.2 Hadoop 分布式文件系统(HDFS)
HDFS 采用主从架构,主节点(NameNode)控制其余从节点(DataNode),从节点根据主节点的指令执行任务。
-
NameNode
:作为 HDFS 架构的主节点,控制所有数据操作并存储文件系统元数据。它维护两个内存表,一个将数据块映射到数据节点,另一个将数据节点映射到块号。
-
DataNode
:存储实际数据,执行创建、修改或删除数据块等操作。它向 NameNode 报告状态变化,并发送心跳信号以确认其正常运行。
-
Journal Nodes
:通过管理活动和备用 NameNode 之间的编辑日志和元数据,确保 NameNode 的可用性。
-
Zookeeper
:维护 NameNode 的健康和连接信息,观察 NameNode 的响应情况。
9.3 另一种资源协商器(YARN)
YARN 具有作业调度和资源管理的双重职责,Hadoop 使用它将 MapReduce 与资源调度分离。YARN 有三个组件:
-
资源管理器
:作为主从架构中的主节点,负责作业调度、跟踪资源并将任务分配给从节点。
-
节点管理器
:作为从节点,使用容器执行计算作业。
-
应用程序主节点
:存储作业,并作为资源管理器和节点管理器之间的联络人。
9.4 Hadoop
Hadoop 是最流行的开源 MapReduce 框架,由 Yahoo 的 Doug Cutting 和密歇根大学的 Mike Caferella 设计。Hadoop 的设计理念是将计算任务移动到数据所在的位置,避免移动大量数据,从而减少数据读写任务,提高性能并降低计算成本。
Hadoop 架构的两个主要组件是 HDFS 和 YARN。HDFS 是 Hadoop 的分布式文件系统,确保了 Hadoop 的高度容错性;YARN 是 Hadoop 的资源管理和调度系统。
Hadoop 经历了三个版本的发展:
-
Hadoop V1
:主要用于完成 MapReduce 任务,采用主从架构,中央节点(作业跟踪器)负责调度、启动和跟踪所有 MapReduce 作业。但该版本在可扩展性和资源可用性方面存在不足,作业跟踪器本身没有备份,限制了系统的可用性。
-
Hadoop V2
:用 YARN 取代了作业跟踪器,将作业调度和资源管理分离,并且可以处理除 MapReduce 之外的更多任务。该版本涉及多个主节点,而 Hadoop V1 只有一个主节点。
-
Hadoop V3
:解决了记录复制相关的问题,使用了一种高效的数据复制方法——擦除编码,在确保数据高可用性的同时,减少了存储需求。
Hadoop 使用三种不同的调度方案来分配任务:
-
先进先出(FIFO)
:根据应用程序请求的时间顺序分配内存。
-
容量调度
:根据应用程序的大小分配单独的队列。
-
公平调度
:确保每个活动应用程序在任何时候都占用相同的内存。
9.5 流处理
流处理指的是在数据进入系统时进行处理,具有最小的时间延迟。流处理中的数据可以是无界流或有界流,无界流有明确的起点但没有终点,有界流则有明确的起点和终点。流处理可以根据先前处理的数据是否影响未来结果分为有状态和无状态两种类型。
9.6 Apache Storm
Apache Storm 是一个开源的分布式流处理框架,主要用 Clojure 编程语言编写。它旨在处理和分析大型无界数据流,而无需存储实际数据,从而提高了系统的可扩展性。Storm 处理数据请求的延迟较低,典型的 Storm 应用程序由有向无环图(DAG)组成,其中数据和处理单元是图的顶点,边表示数据从一个节点流向另一个节点的方向。
Apache Storm 的数据处理模型由以下基本构建块组成:
-
流
:一个无界的元组序列,元组是一组可以包含任何类型数据的值。
-
喷口(Spout)
:流的来源,负责从数据源接收数据并将其转换为元组流。
-
螺栓(Bolt)
:处理单元,接收喷口传递的元组并进行处理。
-
拓扑(Topology)
:存储实时 Storm 应用程序的逻辑,由喷口和螺栓组成。
Apache Storm 基于主从架构,只有一个主节点(Nimbus)。它有三个主要组件:
-
Nimbus
:作为主节点,将任务分配给工作节点,跟踪任务进度,并在发生故障时重新调度任务。
-
Supervisor
:每个工作节点都有一个 Supervisor 节点,负责与 Nimbus 通信,报告当前拓扑状态并告知是否可以处理更多任务。
-
Zookeeper
:作为 Nimbus 和 Supervisor 之间的中间人,协调系统,帮助 Nimbus 监控工作节点的状态,并协助 Supervisor 与 Nimbus 进行交互。
9.7 Samza
Samza 是 Apache 软件基金会使用 Scala 和 Java 开发的开源流处理程序,旨在实现接近实时的数据处理速度,并用于构建有状态应用程序。它与 Apache Kafka 结合使用,Kafka 是一个分布式事件存储系统,用作流处理应用程序的数据源。
Samza 采用去中心化系统,每个作业都有一个协调器进行管理。它有三个层次:
-
流层
:提供可重放的数据源,确保数据恢复。由于 Samza 与 Kafka 兼容性良好,许多基于 Samza 的应用程序使用 Kafka。
-
执行层
:处理任务调度和资源管理。
-
处理层
:处理数据处理和流程管理。
Samza 的数据流由相同类型的不可变消息组成,例如网站上的所有点击。流可以被多个组件使用,但任何组件都无权更改或删除它。
Samza 作业将输入流转换为所需的输出流。为了处理流和作业的可扩展性问题,将它们转换为更小的并行单元——分区和任务。每个流被分为一个或多个分区,每个分区是一个有序的消息序列,每个消息有一个唯一的偏移量。作业被分为多个任务,任务的数量由分区的数量决定。YARN 负责整体任务分配,确保任务分布在所有节点上。在节点级别,任务按顺序处理每个到达的消息。
Samza 使用变更日志机制来处理故障。变更日志记录系统的所有更改,在系统发生故障时,容器会查找最新的检查点并从该点开始处理消息。与全状态检查点相比,变更日志机制更高效,因为它专注于在较小的地方进行检查点记录,并且更新通过备用网络带宽与 Kafka 进行通信,而不是通过主网络。
9.8 混合数据处理框架
混合处理框架能够处理流处理和批处理应用程序,继承了批处理(如 MapReduce)和流处理的特点。大多数混合解决方案使用有向无环图(DAG)来实现批处理和流处理模式下的高效数据处理。
9.9 Apache Flink
Apache Flink 是 Apache 软件基金会开发的开源框架,可同时进行批处理和流处理。它对无界和有界数据流进行有状态处理,通过将有界流视为一批数据来实现批处理。Flink 确保低延迟、高吞吐量和容错性,并且可以使用 Python、Java、Scala 和 SQL 编写程序。
Flink 没有内置的数据存储系统,而是设计为从不同的存储平台读取数据,如 Apache Kafka、HDFS、Amazon Kinesis 和 Apache Cassandra。它使用窗口机制同时处理批处理和流处理,能够比 MapReduce 快数倍地处理数据。窗口机制根据时间或消息数量将输入流拆分为更小的流。
Flink 有一个四部分架构:
-
存储组件
:负责数据存储。
-
部署组件
:用于将 Flink 部署在本地、云或集群上。
-
核心组件
:一个分布式数据流引擎,接收有向无环图(DAG)形式的输入,该图由计算任务和输入输出数据流组成。
-
API 和库
:包括用于批处理的 DataSet 应用程序编程接口(API)和用于流处理的 DataStream API,这些 API 用于转换 Flink 中的数据集,支持映射、连接、分组和过滤等操作。
Flink 采用主从架构,其中 JobManager 是主节点,控制应用程序的执行。JobManager 具有监控任务状态和进度、启动任务执行、调度新任务和管理检查点等多个角色。每个应用程序由不同的 JobManager 管理。TaskManager 作为从节点,负责处理数据流。客户端将应用程序转换为数据流图并发送给 JobManager,JobManager 从客户端接收应用程序请求,然后向 ResourceManager 请求资源,最后将任务分配给 TaskManager。
Flink 使用三种不同的调度方法:
-
一次性/急切调度
:在作业开始时将所有可用资源分配给作业,适用于流处理应用程序,因为它们通常需要最少的计算资源。
-
从源延迟调度
:按拓扑顺序分配资源,只有在前一个任务完成后才能启动子任务,适用于批处理作业。
-
流水线区域调度
:通过识别流水线区域,允许依赖进程在其父进程发布第一个结果记录后开始执行,解决了任务并行时的调度问题。
为了实现容错性,Flink 尝试实现“恰好一次”一致性保证。通过定期对数据流和状态进行分布式快照,作为系统的一致检查点。在发生故障时,系统可以恢复到这些检查点。Flink 还假设输入数据源是可重放的,这增加了系统的容错特性。用户还可以手动创建保存点,并在以后从这些点恢复系统。
9.10 SPARK
Spark 是由加州大学伯克利分校开发并捐赠给 Apache 软件基金会的,是最早的统一批处理和流处理框架之一,用于大规模数据处理。它用于实现迭代算法和交互式数据分析,旨在减少与 Hadoop 的 MapReduce 相比处理这些任务的延迟。
Spark 通过引入弹性分布式数据集(RDDs)来实现这一目标。RDDs 是不可变的分布式数据集,跨越集群中的多个节点,并在内存中进行处理以加速计算。Spark 在执行任务之前使用有向无环图(DAG)来表示数据,与 Hadoop 只有映射和归约阶段不同,Spark 可以有多个计算阶段。已经为 Spark 开发了多种高级语言的 API,包括 Java、R、Python 和 Scala。
Apache Spark 有多个层次:
-
核心层
:负责任务调度、故障恢复和内存管理。采用主从架构,主节点有驱动程序运行所需的函数。如果数据是流数据,驱动程序在处理之前将其转换为小的微批处理。
-
工作节点层
:由工作节点组成,执行主节点分配的任务。工作节点使用执行器进程来运行任务。
-
存储层
:Spark 没有自己的数据存储机制,而是使用其他存储机制,如 HDFS、HBase 和 Hive。
-
集群管理层
:可以使用独立的 Spark 集群管理器进行集群管理,也可以使用其他技术,如 Hadoop、YARN 或 Apache Mesos。
-
高级库层
:包括用于处理结构化数据的 SparkSQL、用于流处理的 Spark 流处理和用于图处理的 GraphX。
Spark 使用多种调度器进行任务调度,包括公平调度和先进先出(FIFO)调度。FIFO 调度在队列中早期出现大任务时可能会导致延迟,而公平调度为每个任务分配相等的资源,通常被认为是更好的选择。Spark 还提供静态和动态调度,静态调度在作业开始时为每个应用程序分配其最大所需资源,动态调度根据应用程序的需求分配资源。
Spark 的容错性来自于底层程序的容错能力。例如,Spark 的 RDD 使用“血统”概念,即 RDD 跟踪构建它所做的更改图,并在系统发生故障时重新运行这些更改。此外,Spark 使用具有固有容错性的文件系统(如 HDFS),确保使用它构建的任何 RDD 也是容错的。同样,使用容错的集群管理器(如 YARN)可以进一步增强 Spark 的容错性。Spark 还使用文件复制作为容错方法。
10. 大数据的伦理问题
大数据的可用性和使用方式几乎没有限制。预计到 2024 年,全球将产生 149 泽字节的数据。互联网活动(如 Google 搜索和社交媒体帖子)每分钟产生 6123 太字节的数据,物联网设备预计将从 2020 年的 267 亿台增加到 2025 年的超过 700 亿台。大数据技术已经无处不在,应用于各个行业,从证券交易委员会使用自然语言处理(NLP)和网络分析来监控非法金融市场活动,到亚马逊使用客户搜索和点击数据提供个性化购买建议。
虽然许多数据源是专有的,但研究人员可以通过转售市场或数据经纪人获得越来越多的数据。专有数据通常与公开可用的数据集相结合,以增强其预测能力。通过“抓取”等过程从网络收集数据也变得更加容易,特别是在社交媒体网站上。然而,仅仅因为我们有能力做某件事并不意味着我们应该这样做。技术的快速创新和对以前无法获取的数据形式的前所未有的访问,带来了一些意想不到的挑战和后果。公共数据泄露和“算法偏见”经常强化了刻板印象和歧视,甚至开启了一个监控资本主义的时代。
大数据的普及推动了计算和分析技术的快速创新,强化了归纳而非演绎的发现方法。大数据的强大之处在于它与社会和行为科学中通常收集的自我报告问卷、实验室收集或观察数据有根本不同,因为它直接从消费者的日常活动中收集,通常他们并没有过多思考。这种“数字足迹”不受社会期望或观察者偏见的影响,被认为更真实地反映了人们的需求、愿望、信仰和态度。现在,算法可以在很少人工监督的情况下预测行为,而不是像以前那样用有限的特定收集数据集来测试假设。
这里的一个关键概念是知情同意。在大数据时代之前,当大多数数据是通过调查、传感器或评级有意收集时,人们通常更清楚数据何时被收集。现在,许多人通过日常活动几乎持续地产生数据,人们对收集的数据的数量和类型的意识大大降低。当人们刷借记卡或进行 Google 搜索时,他们可能不会有意识地思考正在产生的数据,而是专注于进行购买或查找所需信息。通过使用用户协议(无论是假设的还是未经阅读就同意的),公司能够在人们不知情的情况下收集这些数据,包括数据收集的事实和使用的程度。对 Facebook 用户的调查发现,总体而言,用户不知道他们的 Facebook 数据如何被用来塑造他们看到的内容,甚至影响他们的行为。虽然许多研究人员认为个人在参与研究之前应该提供知情同意,但大数据的规模使得在许多情况下这变得不切实际。每天有数以百万计的人的数据在未经他们知情同意的情况下被汇总和分析。这种无意识和不知情的数据收集的普遍性凸显了提高所有人数据素养教育的必要性。
伦理问题不仅仅涉及数据收集和同意,还涉及理解数据的局限性。尽管大数据在范围上似乎是详尽无遗的,但它并不完美。抽样偏差在大数据中是一个特别令人关注的问题,因为大量数据是从统计分析和研究并非主要目的的来源收集的,如社交媒体和健身跟踪设备。这些数据由用户生成,更类似于便利样本,而不是准确反映整个总体的随机或分层样本。大数据也特别容易受到选择偏差的影响,即具有某些特征的人群比没有这些特征的人群更有可能被纳入数据。归纳方法的核心假设是,有了足够大的数据集,偏差就会消失,但这是错误的。Twitter 数据是大数据的常用来源,但它只代表了美国不到一半的互联网用户,并且不成比例地代表了 30 岁以下和社会经济地位较高的人群。研究人员必须了解数据中存在的偏差,以避免算法重现和强化这些偏差。
由于大数据来源广泛,人们在日常生活中频繁产生大数据,这些数据可以包含关于个人和群体的大量信息。研究人员不仅要认识到大数据的潜在价值,还要认识到对隐私和安全的潜在风险。分析人员通常可以很容易地从社交媒体数据中推断出个人的姓名、朋友和家人的姓名、政治派别以及兴趣和活动等个人信息。即使个人的社交媒体账户设置为私密,他们朋友和家人账户中的信息也常常可以识别他们。
这些问题只是围绕大数据,特别是从人身上收集的大数据的伦理问题的一小部分。还有许多其他问题需要探索,以确保大数据的使用不会侵犯个人的隐私或安全权利。不幸的是,大数据的生成、收集和分析的增长速度远远超过了伦理研究实践的发展速度。
10. 大数据的伦理问题(续)
大数据的广泛应用引发了诸多伦理问题,主要体现在以下几个方面:
-
数据收集的知情同意缺失
:在大数据时代,人们日常活动中无意识产生的数据被大量收集。公司通过用户协议在人们不知情的情况下获取数据,如 Facebook 用户大多不清楚其数据的使用方式和影响。由于大数据规模庞大,获取每个人的知情同意在很多情况下难以实现,这凸显了提高公众数据素养教育的紧迫性。
-
数据偏差问题
:大数据存在抽样偏差和选择偏差。数据多从非以统计研究为主要目的的来源收集,类似便利样本,不能准确反映总体情况。例如 Twitter 数据不能代表全体互联网用户。研究人员需识别数据中的偏差,防止算法强化这些偏差。
-
隐私和安全风险
:大数据包含大量个人和群体信息,分析人员可从社交媒体数据轻易推断个人隐私信息。即便社交媒体账户设为私密,亲友账户信息仍可能导致个人被识别。
为了更清晰地展示大数据伦理问题的相关要点,以下用表格进行总结:
|伦理问题类型|具体表现|影响|应对措施|
| ---- | ---- | ---- | ---- |
|知情同意缺失|日常活动无意识产生的数据被收集,用户协议使公司可在不知情下获取数据|侵犯个人对数据使用的知情权,影响个人隐私|加强数据素养教育,提高公众对数据收集和使用的认识|
|数据偏差|抽样和选择偏差,数据不能准确反映总体|算法可能强化偏差,导致结果不准确|研究人员识别数据偏差,优化算法|
|隐私和安全风险|可从大数据推断个人隐私信息,亲友账户也可能暴露个人|个人隐私和安全受到威胁|加强数据保护法规,规范数据使用|
11. 大数据技术总结与对比
11.1 不同大数据处理框架对比
| 框架名称 | 处理模式 | 特点 | 适用场景 |
|---|---|---|---|
| MapReduce | 批处理 | 高度容错,适合大规模数据批处理 | 数据量大、对处理时间要求不高的批处理任务 |
| Apache Storm | 流处理 | 低延迟,处理无界数据流,可扩展性强 | 实时数据处理,如实时监控、实时分析 |
| Samza | 流处理 | 接近实时处理,构建有状态应用,与 Kafka 结合 | 需要状态管理的流处理应用 |
| Apache Flink | 批处理和流处理 | 低延迟、高吞吐量、容错性好,支持多种语言 | 同时需要批处理和流处理的场景 |
| SPARK | 批处理和流处理 | 减少处理延迟,支持迭代算法和交互式分析 | 大规模数据处理,特别是需要多次访问数据集的任务 |
11.2 不同云计算服务类型对比
| 服务类型 | 用户控制权 | 特点 | 适用场景 |
|---|---|---|---|
| 软件即服务(SaaS) | 最少 | 无需软件物理副本,使用方便 | 对数据控制要求不高,希望快速使用软件的用户 |
| 平台即服务(PaaS) | 中等 | 提供计算工具,控制程度介于 SaaS 和 IaaS 之间 | 有一定开发能力,需要平台支持的用户 |
| 基础设施即服务(IaaS) | 最多 | 硬件和软件外包,用户有最大控制权 | 对数据安全和控制要求高,有专业技术团队的企业 |
11.3 大数据处理关键技术流程 mermaid 流程图
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px
A(数据生成):::process --> B(数据收集):::process
B --> C{处理模式选择}:::process
C -->|批处理| D(批处理框架):::process
C -->|流处理| E(流处理框架):::process
D --> F(数据分析):::process
E --> F
F --> G(结果应用):::process
这个流程图展示了大数据从生成到应用的关键流程,首先是数据生成和收集,然后根据需求选择批处理或流处理模式,经过处理后进行数据分析,最终将结果应用到实际场景中。
12. 大数据未来发展展望
12.1 技术发展趋势
- 融合创新 :不同大数据技术将进一步融合,如批处理和流处理技术的深度结合,以满足更复杂的业务需求。例如,未来的处理框架可能会无缝切换批处理和流处理模式,提高数据处理的灵活性和效率。
- 智能化升级 :大数据与人工智能、机器学习的融合将更加深入。通过智能算法对大数据进行分析和挖掘,能够发现更有价值的信息和模式,为决策提供更精准的支持。
- 边缘计算与大数据结合 :随着物联网设备的增加,边缘计算将在大数据处理中发挥重要作用。将部分数据处理任务放在设备端进行,减少数据传输延迟,提高系统的响应速度。
12.2 应用领域拓展
- 医疗健康领域 :大数据可用于疾病预测、个性化医疗方案制定等。通过分析大量的医疗数据,包括病历、基因信息等,能够提前发现疾病风险,为患者提供更精准的治疗方案。
- 智能交通领域 :利用大数据分析交通流量、车辆行驶轨迹等信息,实现智能交通管理,如智能信号灯控制、交通拥堵预测等,提高交通效率和安全性。
- 金融领域 :大数据在金融风险评估、信贷审批、投资决策等方面有广泛应用。通过分析客户的信用数据、交易记录等,能够更准确地评估风险,为金融机构提供决策支持。
12.3 伦理与法规完善
- 加强监管 :政府和相关机构将加强对大数据收集、使用和共享的监管,制定更严格的法规和标准,保障个人隐私和数据安全。
- 提高公众意识 :通过教育和宣传,提高公众对大数据伦理问题的认识,增强公众的自我保护意识。同时,鼓励公众参与大数据伦理问题的讨论和决策。
未来大数据的发展充满机遇和挑战。技术的不断创新将推动大数据在更多领域的应用,为社会带来巨大的价值。但同时,也需要关注大数据带来的伦理问题,通过完善法规和提高公众意识,确保大数据的健康、可持续发展。
更多推荐



所有评论(0)