当前位置:首页 > 移动开发

使用SMACK堆栈进行快速数据分析

作者:it技术知识网 阅读次数: 时间:2019-06-11 17:41:10

摘要:作者:马骁,财务数据分析的浙江大学和大数据计算客座教授。在德国不来梅大学博士学位数学在2006年以后,从事研究和多特蒙德大学软件工程研究所教授,直到2011年,来到中国。本文是“程序员”原创文章,未经许可,不得转载,更多精彩文章,请订阅来自大数据“程序员”迅速能够分析除了在批处理模式下大型数据集的数据,现代数据驱动组织还我们需要生成尽快收集到的数据洞察,并最终采取行动。在这方面,常规的叠层的Hadoop(HDFS作为存储层,或MapReduce的TEZ作为处理框架,纱

  作者:马骁,财务数据分析的浙江大学和大数据计算客座教授。在德国不来梅大学博士学位数学在2006年以后,从事研究和多特蒙德大学软件工程研究所教授,直到2011年,来到中国。

  本文是“程序员”原创文章,未经许可,不得转载,更多精彩文章,请订阅“程序员”

从大数据快速数据

除了分析在批处理模式下大型数据集的能力,现代数据驱动的组织也需要尽快生成收集的数据洞察,并最终采取行动。在这方面,常规的叠层的Hadoop(HDFS作为存储层,或MapReduce的TEZ作为处理框架,一个集群资源管理器YARN)缺乏的严重程度。为了缓解这种情况,业界已经提出,如λ架构(见“程序员”在2016年11月,“我看到的Lambda和卡帕的计算架构”一文)等架构。在LAMBDA架构中,“慢”大型数据处理框架(例如。G。Hadoop的栈)与一个“快”流处理框架相结合(例如。G。,阿帕奇风暴)。或减缓处理框架周期性由快速帧数据处理或重返完全丢弃,并且通过使用缓慢处理框架的数据处理替换。当然,这并不是没有问题的λ类型的结构,它可以导致代码重复并且需要再加工和集成的数据。

SMACK堆栈

SMACK是所谓的堆叠架构在过去一年中已成为流行。在堆栈的SMACK部分如下:

火花作为一般,快速,大容量存储器的数据处理引擎;

Mesos作为群集资源管理器;

阿卡作为一个基于Scala的框架,使我们能够开发容错,分布式,并行应用程序;

卡桑德拉作为分布式的,高可用性的存储层;

卡夫卡作为分布式消息代理/日志。

首先,我们将讨论快速组件SMACK栈,特别注意卡桑德拉,因为不像栈的休息,似乎没有广泛在国内使用。

阿帕奇星火

Apache的火花已经成为“大数据系统。“。数据被加载到群集并存储在存储器中,并且可以被重复查询。这使得星火机器学习算法是特别有效。火花批次,流提供一个统一的接口的(微分批模式),图形分析和机器学习任务。它是用Scala编写并公开API的Scala,Java,Python和R,。另外,星火可以对数据执行SQL查询,分析师们更利于学习传统的BI工具。

阿帕奇Mesos

阿帕奇Mesos是一个开源的集群管理器,由美国加州大学伯克利分校。它允许分布式跨越隔离和有效的资源共享应用。在Mesos,这种帧被称为分布式应用。

阿卡

阿卡帧被构成,运行在JVM上并发程序。强调基于演员方法并发:演员被视为原始的,它们不仅参与共享存储器通过消息进行通信。响应消息,演员可以创建新的角色或发送其他消息。由ErlanG编程语言编写的角色模型,更受欢迎。

Apache的卡桑德拉

卡桑德拉最初是在Facebook的开发,后来成为一个Apache开源项目。这是一个分布式的,面向列的NoSQL数据存储库,类似亚马逊的发电机和谷歌的BigTable。与其它NoSQL数据存储相反,它不依赖于HDFS作为底层文件系统不具有主架构,允许它具有几乎线性的可伸缩性,并且易于建立和维护。另一个优点是跨数据中心卡桑德拉复制支持(XDCR)。跨数据中心复制实际上有助于独立的工作负载和聚类分析。卡桑德拉企业版可从DataStax(HTTP:// WWW。datastax。COM)获得。

固定分区键,节点集群卡桑德拉以分开的数据。它的架构意味着它不存在单一故障点。据CAP定理,我们可以微调在每个表的基础的一致性和可用性。

Apache的卡夫卡

SMACK在堆栈中,卡夫卡负责事件传输。卡夫卡集群作为骨干SMACK堆栈信息,跨集群复制信息,并永久保存到磁盘,以防止数据丢失。

要了解更多关于如何各部分的SMACK堆栈一起工作在此之前,我们将讨论快速的数据模型的挑战和分析卡桑德拉卡桑德拉的脸。

Cassandra的数据模型

像其他NoSQL数据存储库,一个成功的基于Cassandra的数据模型的应用程序应遵循“内容存储您的查询”模式。换句话说,违背了关系型数据库,在关系数据库中,我们可以存储在一个标准化的数据格式。当我们谈论Cassandra的数据模型,仍沿用表,但更像一个排序表卡桑德拉,分散映射的,其次是关系数据库表。

定义表并插入数据和SQL查询语言卡桑德拉支持,叫卡桑德拉查询语言(CQL)。

当定义一个卡桑德拉表,我们需要提供用于确定如何将数据群集节点之间分布分区键,并确定如何聚集列中的数据进行排序。当使用CQL查询,我们只能查询(WHERE子句),并根据集群列排序。

让我们来看一个例子卡桑德拉文件,该文件是模拟的音乐播放列表共享服务(如Spotify的)是:

  

在这个例子中,UUID(通用唯一ID,多个机器之间,以确保唯一的)ID分区键,song_order集群柱,(ID,song_order)表中的所有行所需的是独特的。此外,ID哪台机器上存储行,song_order确定物理主机的行的存储顺序的决定。也可以在复合分区键卡桑德拉使用,并投入()。

CQL查询,如下所示:

任何列出现的WHERE子句中需要是主键的一部分,或可限定在其上的索引。此外,只能发生在等于(=)操作分区键。只有当当查询的宿主范围作为一个连续的内存块是可行的所选择的行被设置。通过聚类类似于SQL的列和LIMIT子句,CQL支持排序,但不具备类似功能的GROUP BY。

根据查询的特定列,从而减少了随机磁盘访问的需要,但也强烈地限制了使用Cassandra的数据库分析。“您所查询的内容存储”模式需要基于卡桑德拉数据库上执行,从而限制了支持新的查询能力仔细查询数据建模。为了执行存储在卡桑德拉的数据的分析,应该被加载到单独的数据处理框架内,我们选择了帧的Apache火花。

  1个图操作簇与火花的个体并列节点的聚类分析

\

Spark和卡桑德拉连接

火花卡桑德拉连接器(HTTPS:// github上。COM / datastax /火花卡桑德拉接口)可以卡桑德拉表作为火花RDDS,所述火花RDDS卡桑德拉写表,以及执行任何查询CQL应用火花。如果也应使用CQL筛选WHERE子句到服务器节点下推。

为了最大限度地利用该位置数据连接器的卡桑德拉火花感测功能Spark和卡桑德拉节点,集群应当并列。跨数据中心的XDCR卡桑德拉复制实际上允许我们分离聚类分析,星火节点卡桑德拉节点并列卡桑德拉集群用于重写操作,其内容被自动复制到聚类分析。因此,操作的任何认真的分析不会影响纯卡桑德拉集群的写入性能。操作(写重)和聚类分析簇分离可以提供以下附加的优点:

两个集群可以独立进行缩放;

由于聚类分析和有不同的读/写模式的操作中,每个群集可被优化以实现其预期目的;

卡桑德拉自动数据复制处理;

仅需要的附加信息(例如与其连接的查找表)被存储在聚类分析。

Mesos架构

Mesos从地面进行异常处理复杂的工作负荷,设计这意味着长期运行的批处理作业和的事件处理任务的类型可以与短组合。

  Mesos集群由两个类型的节点:

主节点负责提供的资源和调度;

从节点,运行的实际任务。

主节点可被复制,以提供高可用性。在这种情况下,动物园管理员可用于领导选举和服务发现。使用Mesos任务过程中,请按照下列步骤操作:

发行可从该节点的主节点的资源;

主节点发送的资源给帧(APP);

调度框架回复任务需要安排;

任务由主发送到从属。

\

我们使用两个工具来帮助规划Mesos工作:马拉松旨在安排长时间运行的任务; Chronos的作用就像一个“分散的cron”,重复短期运行的任务。我们可以部署在以下几个方面星火/ Mesos /卡桑德拉集群:

Mesos主节点和并置的节点动物园管理员;

火花卡桑德拉节点节点并置的致动器。

  图。Mesos的2卡桑德拉星火部署

阿卡使用数据取

选择合适的存储层后,现在你需要决定如何处理输入数据。摄取数据要求层为:

低延迟和高吞吐量

弹性

可扩展性

背压处理负载峰值

前三个完全满足演员,诸如每个输入事件的从卡桑德拉HTTP请求并将其存储在处理。

使用预处理卡夫卡

该设计的缺点是无状态的阿卡:演员不能执行任何数据预处理。卡桑德拉也不适宜。火花火花流使用或实施这样的预聚合的不理想,因为火花流微批量结构不适合于快速事件处理。

这是一个合适的替代的Apache卡夫卡。因此SMACK栈,阿卡演员分布式日志写入经过预处理的数据,如Apache卡夫卡。从卡夫卡读取数据,可以依靠火花流,火花流用于备份存储在HDFS或对象(例如数据。g。中,OSS阿里云或Amazon S3),而簇写入卡桑德拉。这有效地充当备份机制,并根据该实施例,存储成本OSS / S3可以比簇卡夫卡在保留的数据低得多。火花然后可用于从对象存储恢复数据。存储在中非站点数据存储的数据对象的组织中的一个严重的影响,也防止任何数据中心级的故障。

结论

\

SMACK堆栈具有以下优点:

简单工具箱支持各种数据处理任务(流,分批,λ类型架构);

依靠测试开源框架;

统一集群管理;

易于扩展和复制。

  图3 SMACK堆栈架构概述

此外,应用程序主组分(阿卡,卡夫卡,火花)的特定代码必须用Scala的可被编程,以便允许在体系结构的不同部分的业务逻辑代码类型的高效共享被写入。

本文链接:使用SMACK堆栈进行快速数据分析

友情链接:

普门品白话文全文 手抄心经 普门品全文 药师经读诵完整版 观世音普门品原文 观音菩萨普门品注音 普门品全文拼音版 华严经白话文 观世音普门品拼音 普门品全文 药师经注音 心经原文全文 观音普门品注音 普门品原文 心经译文 普门品注音 药师经诵读 普门品全文注音 观世音菩萨普门品拼音 药师经注释