构建高性能大数据和分析系统

构建高性能大数据和分析系统

大数据和分析系统正迅速成为组织IT环境中最关键的系统之一。庞大的数据量,会给我们带来许多许多性能上的挑战。如果无法使用大数据系统来制定或预测关键业务决策,或者无法在适当的时间洞察隐藏在大量数据下的业务价值,那么这些系统将失去其价值。

本文以与技术无关的方式讨论了一些关键的性能问题。

构建大数据系统的模块

大数据系统由许多功能块组成,这些功能块为系统提供了以下功能:从各种来源获取数据,对该数据进行预处理(例如,清理和验证),存储数据,处理和分析所存储的数据,最后呈现和可视化总结和聚合的结果。

本文的其余部分描述了图1中所示每个组件的各种性能注意事项。

数据采集​​的性能

数据采集​​是来自各种来源的数据进入大数据系统的步骤。该组件的性能直接影响大数据系统在任何给定时间点可以接收多少数据。

数据采集过程中的一些逻辑步骤如下图所示:

下面的列表包括一些性能方面的考虑因素,应确保确保性能良好的数据采集组件。

  • 来自各种来源的数据传输应该是异步的。实现此目的的方法是在固定的时间间隔内使用Le-Feed传输,或者通过使用面向消息的中间件(MoM)。与大数据系统在给定时间可以处理的速度相比,这将允许以更快的速度输入来自多个源的数据。
  • 如果数据要从提要文件中解析,需要确保使用适当的解析器。如果从XML文件读取,则存在不同的解析器,例如JDOM,SAX,DOM等。同样,对于CSV,JSON和其他此类格式,可以使用多个解析器和API。
  • 始终喜欢查看内置或即用型验证解决方案。大多数解析/验证工作流通常在服务器环境(ESB / AppServer)中运行。它们具有适用于几乎所有场景的标准验证器。在大多数情况下,它们的执行速度通常会比您开发的任何自定义验证器快得多。
  • 尽早识别并过滤掉无效数据,以便验证后的所有处理仅对合法数据集起作用。
  • 转换通常是数据采集中最复杂,最耗时和最耗资源的步骤,因此请确保在此步骤中实现尽可能多的并行化。

存储的性能

在本节中,将讨论用于存储数据的重要性能准则。将讨论存储选项(逻辑数据存储(和模型)和物理存储)。

  • 始终考虑选择的归一化/去归一化级别。数据建模的方式直接影响性能,数据冗余,磁盘存储容量等。
  • 不同的数据库具有不同的功能:某些数据库有助于更快地读取,某些数据库则适合于更快的插入,更新等。
  • 数据库配置和属性(如复制级别,一致性级别等)直接影响数据库的性能。
  • 分片和分区是这些数据库的另一个非常重要的功能。分片的配置方式可能会对系统的性能产生重大影响。
  • NoSQL数据库带有内置的压缩​​器,编解码器和转换器。如果可以利用这些来满足某些要求,请使用它们。它们可以执行各种任务,例如格式化转换,压缩数据等。这不仅可以加快以后的处理速度,而且可以减少网络传输。
  • 大数据系统的数据模型通常根据这些系统所服务的用例进行建模。这与RDMBS数据建模技术形成了鲜明的对比,在RDMBS数据建模技术中,数据库模型被设计为通用模型,并且外键和表关系用于描述实体之间的真实交互。

数据处理的性能

本节讨论数据处理的性能技巧,根据要求,大数据系统的体系结构可能具有用于实时流处理和批处理的某些组件。本节涵盖了数据处理的所有方面,而不必将其分类为任何特定的处理模型。

  • 在对框架和系统要求(批处理/实时,内存或基于磁盘等)进行详细评估之后,选择合适的数据处理框架。
  • 这些框架中的一些将数据分成较小的块。这些较小的数据块将由各个作业独立处理。
  • 时刻关注作业处理的数据传输的大小,数据局部性将提供最佳性能,因为数据始终可以在本地本地用于作业,但是达到更高级别的数据局部性意味着需要在多个位置复制数据。
  • 很多时候,需要对同一组数据进行重新处理。这可能是由于初始处理中的错误/异常,或者是某些业务流程发生了变化,业务在该流程中业务也希望看到对旧数据的影响。设计系统以处理这些情况。
  • 处理作业的最终输出应以格式/模型存储,该格式/模型应基于大数据系统预期的最终结果。例如,如果预期的最终结果是业务用户应该以每周的时间间隔查看聚合的输出,请确保以每周聚合的形式存储结果。
  • 始终使用不同框架提供的工具监视和衡量性能。这将使您了解完成给定工作需要多长时间。

可视化的性能

本节将介绍在设计可视化层时应遵循的通用准则。

  • 确保可视化层显示来自最终汇总输出表的数据。这些汇总表可以是基于时间段建议、基于类别或任何其他基于用例的汇总表的聚合。
  • 最大化使用可视化工具中的缓存。缓存可以对可视化层的整体性能产生非常积极的影响。
  • 物化视图可能是提高性能的另一项重要技术。
  • 大多数可视化工具都允许配置来增加处理报告请求的工作(线程)数量。如果容量可用,并且系统正在接收大量请求,则这可能是提高性能的一种选择。
  • 将预先计算的值保留在汇总表中。如果需要在运行时进行一些计算,请确保这些计算尽可能少,并尽可能处理最高级别的数据。
  • 大多数可视化框架和工具都使用可伸缩矢量图形(SVG)。使用SVG的复杂布局可能会严重影响性能。

大数据安全性及其对性能的影响

与任何IT系统一样,安全要求也可能对大数据系统的性能产生严重影响。将讨论在不影响性能的情况下设计大数据系统安全性的一些高级注意事项。

  • 确保在大数据系统的入口点对来自各种来源的数据进行正确的身份验证和授权。
  • 一旦对数据进行了正确的身份验证,请尝试在以后执行时避免对同一数据进行任何更多的身份验证。为了避免重复处理,请使用某种标识符或令牌将此经过身份验证的数据标记为已认证,然后再使用此信息。
  • 通常,需要先压缩数据,然后再将数据发送到大数据系统。这样可以加快数据传输速度,但是由于需要执行额外的步骤来解压缩数据,因此可能会减慢处理速度。
  • 不同的算法/格式可用于此压缩,并且每种算法/格式都可以提供不同级别的压缩。这些不同的算法对CPU的要求不同,因此请谨慎选择算法。
  • 选择之前,请评估加密逻辑/算法。
  • 建议将加密限制在敏感或机密的必填字段/信息中。如果可能,请避免对整个数据集进行加密。

免责声明:凡未注明来源或者来源为网络的信息均转自其它平台,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。网站只负责对文章进行整理、排版、编辑,不承担任何法律责任。若有侵权或异议请联系我们删除,谢谢。

发表评论

您的电子邮箱地址不会被公开。