使用使用SMACK堆栈进行快速数据分析堆栈进行快速数据分析
从大数据到快速数据
除了能够以批处理模式分析大型数据集之外,现代数据驱动型组织还需要尽快从所收集的数据中生成洞察,并最终采取行动。
在这方面,传统的Hadoop堆栈(HDFS作为存储层,MapReduce或Tez作为处理框架,YARN作为集群资源管理器)缺乏严
重性。为了减轻这种情况,业界已经提出了诸如Lambda架构(见《程序员》2016年11月“Lambda与Kappa计算架构之我
见”一文)等架构。在Lambda架构中,一个“慢”大数据处理框架(如Hadoop堆栈)与一个“快速”的流处理框架(如Apache
Storm)组合在一起。由快速框架处理的数据或者与慢速处理框架周期性地重新集成,或者完全丢弃,并且由使用慢速处理框
架处理的数据代替。当然,这种Lambda型结构并不是没有问题,它会导致代码重复和需要重新处理与集成数据。
SMACK堆栈
所谓的SMACK堆栈是一个在过去一年中变得流行的架构。SMACK堆栈的各部分如下:
1.Spark作为一个通用、快速、内存中的大数据处理引擎;
2.Mesos作为集群资源管理器;
3.Akka作为一个基于Scala的框架,允许我们开发容错、分布式、并发应用程序
4.Cassandra作为一个分布式、高可用性存储层;
5.Kafka作为分布式消息代理/日志。
首先我们将快速讨论组成SMACK堆栈的部件,特别注意Cassandra,因为它与堆栈的其他部分不同,似乎没有在国内广泛使
用
Apache Spark
Apache Spark已经成为一种“大数据操作系统”。数据被加载并保存到簇存储器中,并且可以被重复查询。这使得Spark对机器
学习算法特别有效。Spark为批处理、流式处理(以微批处理方式)、图形分析和机器学习任务提供统一的接口。它用Scala
编写,并公开了Scala、Java、Python和R的API。此外,Spark能够对数据执行SQL查询,更利于分析师们学习传统的BI工
具。
Apache Mesos
Apache Mesos是一个开源的集群管理器,由加州大学伯克利分校开发。它允许跨分布式应用程序的高效资源隔离和共享。在
Mesos中,这样的分布式应用程序被称为框架。
Akka
Akka是构建在JVM上运行的并发程序框架。强调一个基于actor的并发方法:actors被当作原语,它们只通过消息而不涉及共
享内存进行通信。响应消息,actors可以创建新的actors或发送其他消息。actor模型由Erlang编程语言编写,更易普及。
Apache Cassandra
Cassandra最初是在Facebook开发的,后来成为一个Apache开源项目。它是一个分布式、面向列的NoSQL数据存储,类似于
Amazon的Dynamo和Google的BigTable。与其他NoSQL数据存储相反,它不依赖于HDFS作为底层文件系统,具有无主控架
构,允许它具有几乎线性的可扩展性,并且易于设置和维护。Cassandra的另一个优势是支持跨数据中心复制(XDCR)。跨
数据中心复制实际上有助于使用单独的工作负载和分析集群。Cassandra的企业版可从DataStax
(http://www.datastax.com)获得。
根据固定分区键,数据在Cassandra集群的节点上分割。其架构意味着它没有单点故障。根据CAP定理,我们可以在每个表的
基础上对一致性和可用性进行微调。
Apache Kafka
在SMACK堆栈内,Kafka负责事件传输。Kafka集群在SMACK堆栈中充当消息主干,可以跨集群复制消息,并将其永久保存
到磁盘以防止数据丢失。
在详细了解SMACK堆栈的各部分如何协同工作之前,我们将快速讨论Cassandra的数据模型及其在Cassandra上进行分析所
面临的挑战。
Cassandra数据模型
与其他NoSQL数据存储类似,基于Cassandra应用程序的成功数据模型应该遵循“存储你查询的内容”模式。也就是说,与关系
数据库相反,在关系数据库中,我们可以以标准化形式存储数据。当我们谈论Cassandra数据模型时,仍然使用术语table,但
是Cassandra表的行为更像排序,分布式映射,然后是关系数据库中的表。
Cassandra支持用于定义表与插入和查询数据的SQL语言,称为Cassandra Query Language(CQL)。
评论0
最新资源