大数据概念和术语简介

简介

大数据 是收集、组织、处理和收集来自大数据集的见解所需的非传统战略和技术的总称。虽然处理超过一台计算机的计算能力或存储空间的数据的问题并不新鲜,但这种类型的计算的普及性、规模和价值在最近几年已经大大扩大。

在本文中,我们将从基础层面讨论大数据,并定义您在研究该主题时可能遇到的常见概念。我们还将对目前在该领域中使用的一些流程和技术进行高级别的介绍。

什么是大数据?

大数据的确切定义很难确定,因为项目,供应商,从业者和业务专业人员使用它的方式完全不同。 考虑到这一点,一般来说,大数据 是:

  • 大型数据集
  • 用于处理大型数据集的计算策略和技术的类别

在本文中,大型数据集指的是太大而无法使用传统工具或在一台计算机上进行合理处理或存储的数据集。这意味着大数据集的常见规模在不断变化,可能会因组织而异。

大数据系统为何不同?

处理大数据的基本要求与处理任何大小的数据集的要求相同。然而,在设计解决方案时,必须在该过程的每个阶段处理的海量数据的规模、摄取和处理的速度以及数据的特性提出了重大的新挑战。大多数大数据系统的目标是从大量不同种类的数据中揭示洞察力和联系,这是传统方法无法实现的。

2001年,Gartner的道格·莱尼首次提出了后来广为人知的大数据三个V字,描述了大数据与其他数据处理不同的一些特征:

音量

处理的信息的巨大规模有助于定义大数据系统。这些数据集可能比传统数据集大几个数量级,这需要在处理和存储生命周期的每个阶段进行更多考虑。

通常,由于工作要求超出了单台计算机的能力,这就变成了从计算机组集中、分配和协调资源的挑战。能够将任务分解成小块的集群管理和算法变得越来越重要。

速度

大数据与其他数据系统显著不同的另一个方面是信息在系统中的移动速度。数据经常从多个来源流入系统,并经常被期望实时处理,以获得洞察和更新对系统的当前理解。

这种对近乎即时的反馈的关注,促使许多大数据从业者远离面向批量的方法,更接近实时流媒体系统。数据不断地被添加、修改、处理和分析,以便跟上新信息的涌入,并在最相关的时候及早显示有价值的信息。这些想法需要具有高度可用组件的健壮系统,以防止数据管道出现故障。

多样性

大数据问题通常是独特的,因为处理的数据源及其相对质量范围很广。

数据可以从应用程序和服务器日志等内部系统、社交媒体馈送和其他外部API、物理设备传感器以及其他提供商获取。大数据通过将所有信息整合到一个系统中,寻求处理潜在有用的数据,无论这些数据来自哪里。

媒体的格式和类型也可能有很大差异。图像、视频文件和音频记录等富媒体与文本文件、结构化日志等一起被摄取。虽然更传统的数据处理系统可能希望数据进入已标记、格式化和有组织的管道,但大数据系统通常接受并存储更接近其原始状态的数据。理想情况下,对原始数据的任何转换或更改都将在处理时在内存中发生。

其他特性

不同的个人和组织建议扩大最初的三个V,尽管这些建议往往描述的是大数据的挑战,而不是质量。一些常见的附加功能包括:

  • 准确性 :来源的多样性和处理的复杂性可能会导致在评估数据质量(以及由此产生的分析质量)方面遇到挑战。
  • 变化性 :数据的变化性导致质量的广泛差异。可能需要额外的资源来识别、处理或过滤低质量数据,以使其更有用。
  • 价值 :大数据的终极挑战是交付价值。有时,现有的系统和流程非常复杂,使用数据和提取实际价值可能会变得困难。

大数据生命周期是什么样子?

那么,在处理大数据系统时,数据实际上是如何处理的呢?虽然实现方法不同,但在策略和软件方面有一些共性,我们可以概括地谈论一下。虽然下面列出的步骤可能并不适用于所有情况,但它们被广泛使用。

大数据处理涉及的活动的一般类别包括:

  • 将数据输入系统
  • 在存储中持久化数据
  • 计算和分析数据
  • 可视化结果

在我们详细讨论这四个工作流类别之前,我们将花点时间来讨论 集群计算 ,这是大多数大数据解决方案所采用的重要策略。 设置计算集群通常是生命周期每个阶段中使用的技术的基础。

集群计算

由于大数据的特点,在大多数阶段,单台计算机往往不足以处理数据。为了更好地满足大数据的高存储和计算需求,计算机集群是更合适的选择。

大数据集群软件将许多较小机器的资源结合在一起,寻求提供许多好处:

  • 资源池 :将可用的存储空间组合起来容纳数据是一个明显的好处,但CPU和内存池也非常重要。处理大型数据集需要大量的这三种资源。
  • 高可用 :集群可以提供不同级别的容错和可用性保证,以防止硬件或软件故障影响数据访问和处理。随着我们继续强调实时分析的重要性,这一点变得越来越重要。
  • 轻松伸缩 :集群通过向群中添加额外的机器,轻松实现横向扩展。这意味着系统可以对资源需求的变化做出反应,而无需扩展机器上的物理资源。

使用集群需要一种解决方案来管理集群成员资格、协调资源共享以及调度单个节点上的实际工作。集群成员资格和资源分配可以由Hadoop的纱线 (代表另一个资源协商者)或** ApacheMesos** 这样的软件处理。

组装的计算集群通常充当其他软件接口处理数据的基础。 计算集群中涉及的机器通常也涉及分布式存储系统的管理,我们将在讨论数据持久性时讨论这一点。

向系统摄取数据

数据摄取是获取原始数据并将其添加到系统的过程。此操作的复杂性在很大程度上取决于数据源的格式和质量,以及数据在处理之前离所需状态的距离有多远。

将数据添加到大数据系统的一种方法是专用的摄取工具。像Apache Sqoop 这样的技术可以从关系数据库中获取现有数据,并将其添加到大数据系统中。同样,** ApacheFlume** 和** ApacheChukwa** 是专为聚合和导入应用程序和服务器日志而设计的项目。像** 阿帕奇·卡夫卡** 这样的排队系统也可以作为各种数据生成器和大数据系统之间的接口。像** Gobblin** 这样的摄取框架可以帮助在摄取管道结束时聚合和标准化这些工具的输出。

在摄取过程中,通常会进行一定程度的分析、分类和标记。这个过程有时被称为ETL,它代表提取、转换和加载。虽然这个术语通常指的是遗留数据仓库过程,但其中一些相同的概念也适用于进入大数据系统的数据。典型的操作可能包括修改传入数据以格式化它、对数据进行分类和标记、过滤掉不需要的或坏的数据,或者潜在地验证它是否符合某些要求。

考虑到这些功能,理想情况下,捕获的数据应该尽可能地保持原始,以便在以后的管道中获得更大的灵活性。

持久化存储中的数据

接收过程通常会将数据移交给管理存储的组件,以便可以可靠地将其持久存储到磁盘。虽然这看起来似乎是一个简单的操作,但传入数据量、可用性要求以及分布式计算层使更复杂的存储系统变得必要。

这通常意味着利用分布式文件系统来存储原始数据。 像 Apache Hadoop的HDFS 文件系统这样的解决方案允许跨集群中的多个节点写入大量数据。 这确保了计算资源可以访问数据,可以将数据加载到集群的RAM中进行内存操作,并且可以正常处理组件故障。 其他分布式文件系统也可以代替HDFS,包括** Ceph** 和** GlusterFS** 。

还可以将数据导入到其他分布式系统中,以实现更结构化的访问。分布式数据库,尤其是NoSQL数据库,非常适合这个角色,因为它们的设计通常具有相同的容错考虑,并且可以处理异类数据。根据您希望如何组织和呈现数据,有许多不同类型的分布式数据库可供选择。要了解更多有关某些选项及其最佳用途的信息,请阅读我们的NoSQL比较guide.

数据计算与分析

一旦数据可用,系统就可以开始处理数据以显示实际信息。计算层可能是系统中最多样化的部分,因为根据所需的洞察力类型,需求和最佳方法可能会有很大差异。数据经常被重复处理,要么由单一工具反复处理,要么通过使用多个工具来呈现不同类型的洞察。

批处理 是一种针对大数据集的计算方法。这个过程包括将工作分解成更小的部分,在单独的机器上调度每一部分,根据中间结果重新洗牌数据,然后计算和组装最终结果。这些步骤通常单独称为拆分、映射、混洗、归约和组合,或统称为分布式MAP归约算法。这是** ApacheHadoop的MapReduce** 使用的策略。在处理需要大量计算的非常大的数据集时,批处理是最有用的。

虽然批处理非常适合某些类型的数据和计算,但其他工作负载需要更多实时处理 。实时处理要求立即处理信息并使其准备就绪,并要求系统在新信息可用时做出反应。实现这一点的一种方法是** 流处理** ,它对由单个项目组成的连续数据流进行操作。实时处理器的另一个共同特征是内存计算,它与集群内存中的数据表示一起工作,以避免必须写回磁盘。

阿帕奇风暴 、** 阿帕奇闪电** 和** 阿帕奇火花** 提供了不同的方式来实现实时或接近实时的处理。这些技术中的每一种都有权衡取舍,这可能会影响哪种方法最适合任何单个问题。通常,实时处理最适合分析正在快速更改或添加到系统中的较小数据块。

上面的例子代表了计算框架。然而,在大数据系统中计算或分析数据还有许多其他方法。这些工具经常插入到上面的框架中,并提供与底层交互的附加接口。例如,阿帕奇蜂巢 为Hadoop提供了数据仓库接口,** 阿帕奇小猪** 提供了高级查询接口,而** 阿帕奇钻探** 、** 阿帕奇黑斑羚** 、** 阿帕奇火花SQL** 、** 普雷斯托** 等项目可以实现类似SQL的数据交互。对于机器学习,像** ApacheSystemML** 、** ApacheMahout** 和** ApacheSpark的MLlib** 这样的项目可能会很有用。对于在大数据生态系统中有广泛支持的直接分析编程,** R** 和** Python** 都是热门选择。

结果可视化

由于大数据系统中处理的信息类型不同,识别数据随时间变化的趋势或变化往往比价值本身更重要。可视化数据是发现趋势和理解大量数据点的最有用的方法之一。

实时处理经常用于可视化应用程序和服务器指标。数据频繁变化,指标中的大增量通常表明对系统或组织的健康状况有重大影响。在这些情况下,像普罗米修斯 这样的项目对于将数据流作为时间序列数据库进行处理并将信息可视化是很有用的。

可视化数据的一种流行方式是使用 Elastic Stack ,以前称为ELK堆栈。 由用于数据收集的Logstash、用于索引数据的Elasticsearch和用于可视化的Kibana组成,Elastic堆栈可以与大数据系统一起使用,以可视化方式与计算结果或原始指标进行交互。 类似的堆栈可以使用** Apache Solr** 进行索引,并使用名为** Banana** 的Kibana fork进行可视化。 由它们创建的堆栈称为** Silk** 。

另一种通常用于交互式数据科学工作的可视化技术是数据笔记本。这些项目允许以有利于共享、展示或协作的格式对数据进行交互式探索和可视化。这种类型的可视化界面的常见示例是Jupyter Notebook 和** Apache Zeppelin** 。

大数据词汇表

虽然我们尝试按照在整个指南中使用的方式来定义概念,但有时在一个地方提供专门的术语会很有帮助:

  • 大数据 :大数据是一个总称,指的是传统计算机或工具因数据量、速度和种类等原因无法合理处理的数据集。这一术语通常也适用于处理此类数据的技术和策略。
  • 批处理 :批处理是一种大集合处理数据的计算策略。这通常非常适合处理非常大的数据集的非时间敏感型工作。该进程将启动,稍后,系统将返回结果。
  • 集群计算 :集群计算是将多台机器的资源汇集在一起,并管理它们的集体能力来完成任务的实践。计算机集群需要一个集群管理层来处理各个节点之间的通信并协调工作分配。
  • 数据湖 :数据湖是指收集到的数据处于相对原始状态的大型存储库。这经常用来指在大数据系统中收集的数据,这些数据可能是非结构化的,并且经常变化。这在本质上与数据仓库(定义如下)不同。
  • 数据挖掘 :数据挖掘是一个宽泛的术语,指的是试图在大量数据中发现模式的实践。它是试图将大量数据提炼成更容易理解和更有凝聚力的信息集的过程。
  • 数据仓库 :数据仓库是可用于分析和报告的大型有序数据存储库。与数据湖不同的是,数据仓库由经过清理、与其他来源集成的数据组成,通常是有序的。人们经常提到数据仓库与大数据有关,但数据仓库通常是更传统系统的组成部分。
  • ETL :ETL表示提取、转换、加载。它指的是获取原始数据并为系统使用做准备的过程。这是一个传统上与数据仓库相关的过程,但这个过程的特点也可以在大数据系统的摄取管道中找到。
  • Hadoop :Hadoop是一个早期在大数据领域取得开源成功的APACHE项目。它由一个名为HDFS的分布式文件系统组成,上面有一个集群管理和资源调度器,称为YRAIN(还有另一个资源协商器)。批处理功能由MapReduce计算引擎提供。在现代Hadoop部署中,其他计算和分析系统可以与MapReduce一起运行。
  • 内存计算 :内存计算是一种将工作数据集完全在集群的集体内存中移动的策略。中间计算不会写入磁盘,而是保存在内存中。与Hadoop的MapReduce等受I/O限制的系统相比,这给了像ApacheSpark这样的内存计算系统一个巨大的速度优势。
  • 机器学习 :机器学习是设计能够根据反馈给它们的数据进行学习、调整和改进的系统的研究和实践。这通常涉及到预测和统计算法的实现,随着更多的数据流经系统,这些算法可以持续聚焦于正确的行为和洞察。
  • Map Reduce(大数据算法) :Map Reduce(大数据算法,不是Hadoop的MapReduce计算引擎)是一种在计算集群上调度工作的算法。这个过程包括拆分问题集(将其映射到不同的节点),并对它们进行计算以产生中间结果,将结果打乱以对齐相似的集,然后通过为每个集输出单个值来减少结果。
  • NoSQL :NoSQL是一个广义的术语,指的是在传统关系模型之外设计的数据库。与关系数据库相比,NoSQL数据库具有不同的权衡,但由于其灵活性和频繁的分布式优先体系结构,通常非常适合大数据系统。
  • 流处理 :流处理是对单个数据项在系统中移动时进行计算的实践。这允许对输入到系统的数据进行实时分析,并且对于使用高速度量的时间敏感型操作非常有用。

结论

大数据是一个广泛的、快速发展的话题。虽然大数据并不适用于所有类型的计算,但许多组织正在将大数据用于某些类型的工作负载,并使用大数据来补充其现有的分析和业务工具。大数据系统特别适合于发现难以检测的模式,并提供对传统方法无法发现的行为的洞察。通过正确实施处理大数据的系统,组织可以从现有数据中获得难以置信的价值。

Published At
Categories with 技术
comments powered by Disqus