蓝盟系统集成,大数据家庭云计算移动开发系统网络安全数据库服务器虚拟化

发布者:上海IT外包 发布时间:2019/10/11 10:31:34来源:www.linemore.com

       输入您要寻找的
  解释大数据处理中的Lambda架构和Kappa架构
  在此架构图中,大数据平台中用户的在线业务处理组件用棕色标记。这部分是在线Internet应用程序的一部分。其他蓝色部分属于大数据相关组件,可使用开源大数据产品或自行开发相关的大数据组件。
  互联网大数据平台的典型架构
  首先,让我们看一下典型的Internet大数据平台的体系结构,如下所示:
  解释大数据处理中的Lambda架构和Kappa架构
  在此架构图中,大数据平台中用户的在线业务处理组件用棕色标记。这部分是在线Internet应用程序的一部分。其他蓝色部分属于大数据相关组件,可使用开源大数据产品或自行开发相关的大数据组件。
  如您所见,大数据平台从上到下分为三个部分:数据采集,数据处理,输出和数据可视化。
  资料收集
  应用程序生成的数据和记录与大数据系统同步。由于数据源的不同,此处的数据同步系统实际上是多个相关系统的组合。数据库同步通常使用Sqoop。 Flume可以选择同步记录。主管部门收集的数据被格式化,转换并通过像Kafka这样的消息队列进行传输。
  不同数据源产生的数据质量可能会有很大差异。可以将数据库中的数据直接导入大数据系统,并且注册表和跟踪器生成的数据需要大量的清理和转换过程才能有效地使用。
  资料处理
  这部分是大数据存储和计算的核心,数据同步系统导入的数据存储在HDFS中。 MapReduce,Hive和Spark等计算机任务会读取HDFS中的数据以进行计算,然后将计算结果写入HDFS中。
  MapReduce,Hive,Spark等执行的计算处理它称为离线计算,而HDFS存储的数据称为离线数据。大数据系统中的离线计算通常指向所有数据(在某个方面),例如提取历史记录中所有订单的商品相关性。此时,数据大小非常大,需要较长的执行时间。这是一个离线计算。
  除了脱机计算外,在某些情况下,数据大小较大,但处理时间较短。例如,淘宝希望统计每秒生成的用于监视和促销的订单数量。这种情况称为大数据传输计算。通常通过传输大型数据传输引擎(例如Storm和Spark Steaming)来完成。您可以在几秒甚至几毫秒内完成计算。数据输出与显示
  大数据计算生成的数据仍会写入HDFS,但应用程序无法读取HDFS中的数据,因此必须将HDFS中的数据导出到数据库。数据同步相对容易导出,并且计算生成的数据相对标准化。经过少量处理后,可以使用Sqoop这样的系统将其导出到数据库。
  此时,应用程序可以直接访问数据库中的数据并将其实时显示给用户,例如向用户显示推荐项。
  除了提供供用户访问的数据外,大数据还必须向运营和决策层提供多个统计报告。这些数据也被写入数据库,并且相应的后端系统访问它们。许多运营和管理员工每天上班时都登录到后台数据系统,并查看前一天的数据报告,以查看业务是否正常。如果数据正常或什至在增加,则可能会容易一些。如果数据下降,那么忙碌的一天将很快开始。
  前三部分的集成是任务调度管理系统。当不同的数据开始同步时,如何正确调度几个MapReduce和Spark任务以最合理地利用资源,等待时间不会太长,时间很重要重要任务也可以尽快执行,所有这些都需要一个任务计划管理系统来完成。
  上面提到的大数据平台架构,也称为Lambda架构,是用于构建大数据平台的常规架构的原型。有关Lambda体系结构原型,请参见下图。
  Lambda体系结构
  Lambda体系结构是Twitter工程师Nathan Marz提出的大型数据处理体系结构。该架构基于Matz在BackType和Twitter上分发数据处理系统的经验。
  Lambda体系结构允许开发人员构建大规模的分布式数据处理系统。它非常灵活和可扩展,并且还非常容忍硬件故障和人为错误。
  解释大数据处理中的Lambda架构和Kappa架构
  Lambda体系结构总共由三层组成:批处理层,速度层和用于回答查询的服务层。
  在Lambda架构中,每个层都有其自己的任务。
  批生产层存储托管主数据集(不可变数据集)和计算出的批生产前视图。
  批处理层以前使用可处理大量数据的分布式处理系统来计算结果。通过处理所有现有历史数据来实现数据准确性。这意味着将根据完整的数据集重新计算它,更正错误,然后更新现有的数据视图。输出通常存储在只读数据库中,并且更新完全替换现有的预先计算的视图。速度处理层实时处理新的大数据。
  速度层通过提供最新数据的实时视图来最大程度地减少延迟。速度层生成的数据视图可能不像批处理层最终生成的数据视图那样准确或完整,但是几乎在接收到数据后立即可用。当在批处理层中处理相同的数据时,可以替换速度层中的数据。
  本质上,速度层补偿了由批处理层引起的数据视图的延迟。例如,批处理层中的每个任务需要1个小时才能完成,而在这1个小时内,我们无法获得批处理层中最后一个任务给出的数据视图。速度层可以补偿这一小时的延迟,因为它可以实时处理数据并给出结果。
  在批处理层和速度层中处理的所有输出都存储在服务层中,并且服务层通过返回预先计算的数据视图或从速度层构建数据视图来响应查询。
  例如,用于广告投放预测的推荐系统通常使用Lambda体系结构。通常会准确刊登广告的公司将拥有历史数据,例如庞大的用户特征,用户历史导航记录和网站类型分类。业界最流行的做法是在批处理层中使用交替最小二乘算法(ALS),这是协作过滤的协作过滤算法,可用于匹配用户感兴趣的用户特征。其他用户,也可能引起用户的兴趣。广告的类型类似于广告,并且k均值还可以对客户感兴趣的广告类型进行分类。
  这里的结果是批处理层的结果。在速度层中,根据用户的实时导航网页的类型,一些主要的K广告在先前分类的广告中。最终服务层可以与速度层中的主要K广告以及具有较高点击率的类似广告(在批处理层中分类)组合在一起,以进行选择以交付给用户。
  缺少Lambda体系结构
  尽管Lambda架构使用起来非常灵活并且可以应用于许多应用场景,但是Lambda架构在实际应用中也存在一些缺点,主要是因为其维护非常复杂。
  使用Lambda架构时,架构师需要维护两个复杂的分布式系统,并确保它们在服务层中逻辑上产生相同的结果。
  我们都知道分布式框架中的编程非常复杂,尤其是如果我们专门研究不同的框架时。然后,几乎所有建筑师都同意Lambda架构在维护方面有些复杂。
  这个问题如何解决?首先让我们考虑一下。维护此体系结构的复杂性的根本原因是什么?维护Lambda架构的复杂性在于,我们必须同时维护两个系统架构:批处理层和速度层。我们已经说过,向体系结构中添加批处理层是因为从批处理层获得的结果非常准确,而添加速度层是因为它在处理大规模数据时具有较低的延迟。
  那么,我们可以改善其中一层的体系结构,让它具有另一层体系结构吗?
  例如,改进批处理层的系统是使它具有较低的等待时间,还是改进速度层以使其更准确,更接近历史数据的系统?
  在这种思想下诞生了另一种体系结构,即—— Kappa体系结构(Kappa Architecture),该体系结构通常用于大规模数据处理。
  Kappa体系结构
  Kappa建筑是前LinkedIn总工程师Jay Kreps提出的建筑理念。 Kreps是几个已知的开源项目的作者之一,包括Apache Kafka和Apache Samza等流处理系统,现在是Confluent大数据的首席执行官。
  Kreps提出了一种改进Lambda体系结构的观点:
  我们是否可以提高Lambda架构中的速度层系统性能,使其可以处理数据的完整性和准确性?我们是否可以改善Lambda架构中的速度层,以便它可以同时执行实时数据处理?您是否还能够使用业务逻辑更新来重新处理先前处理的历史数据?
  根据他多年的建筑经验,他发现我们可以进行此类改进。
  诸如Apache Kafka之类的传输平台具有永久存储数据记录的功能。利用该平台的功能,我们可以重新处理速度层体系结构中显示的历史数据。
  以Apache Kafka为例,描述整个新架构过程。
  解释大数据处理中的Lambda架构和Kappa架构
  了解有关按时共享大数据技术的更多信息,请关注我的微信公众号《大数据技术进阶》
  第一步是实施Apache Kafka并设置数据记录的保留期限。这里的保留期是指您希望能够重新处理的历史数据的时间间隔。
  例如,如果您想重新处理长达一年的历史数据,则可以将Apache Kafka中的保留期限设置为365天。如果您希望能够处理所有历史数据,可以将Apache Kafka中的保留期限设置为“ Forever”。第二步,如果需要改进现有的逻辑算法,则意味着我们需要重新处理历史数据。
  我们要做的就是重启Apache Kafka作业实例(实例)。该工作实例将从头开始,重新计算保留的历史数据并将结果发送到新的数据视图。我们知道底层的Apache Kafka使用Log Offset确定现在正在处理的数据块,因此您只需要将Log Offset设置为0,新的作业实例将从头开始处理历史数据。
  在第三步中,当此新数据视图处理的数据的进度用先前的数据视图更新时,我们的应用程序可以更改为从新数据视图读取。
  第四步是停止作业实例的先前版本并删除先前的数据视图。
  与Lambda体系结构不同,Kappa体系结构消除了批处理层的体系结构,仅保留了速度层。您仅需要在业务逻辑更改或代码更改时重新处理数据。
  在介绍了Kappa体系结构之后,我想强调一下Kappa体系结构有其自身的缺点。
  由于Kappa体系结构仅保留速度层而缺少批处理层,因此速度层中的大规模数据处理会产生数据更新错误,这需要我们花更多时间来处理这些问题。错误异常
  另一个要点是,Kappa体系结构的批处理和流处理位于速度层中,这导致体系结构使用相同的代码集来处理算法的逻辑。因此,Kappa体系结构不适用于批处理和流代码的逻辑不一致的场景。

 

上海IT外包服务网 链接:http://www.linemore.com

>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部