使用Apache Spark构建实时分析Dashboard

问题描述

电子商务门户(http://www.aaaa.com)希望构建一个实时分析仪表盘,对每分钟发货的订单数量做到可视化,从而优化物流的效率。

解决方案

解决方案之前,先快速看看我们将使用的工具:

Apache Spark – 一个通用的大规模数据快速处理引擎。Spark的批处理速度比Hadoop MapReduce快近10倍,而内存中的数据分析速度则快近100倍。

Python – Python是一种广泛使用的高级,通用,解释,动态编程语言。

Kafka – 一个高吞吐量,分布式消息发布订阅系统。

Node.js – 基于事件驱动的I/O服务器端JavaScript环境,运行在V8引擎上。

Socket.io – Socket.IO是一个构建实时Web应用程序的JavaScript库。它支持Web客户端和服务器之间的实时、双向通信。

Highcharts – 网页上交互式JavaScript图表。

CloudxLab – 提供一个真实的基于云的环境,用于练习和学习各种工具。

如何构建数据Pipeline?

下面是数据Pipeline高层架构图

数据Pipeline

实时分析Dashboard

让我们从数据Pipeline中的每个阶段的描述开始,并完成解决方案的构建。

阶段1

当客户购买系统中的物品或订单管理系统中的订单状态变化时,相应的订单ID以及订单状态和时间将被推送到相应的Kafka主题中。

数据集

由于没有真实的在线电子商务门户网站,我们准备用CSV文件的数据集来模拟。让我们看看数据集:

数据集包含三列分别是:“DateTime”、“OrderId”和“Status”。数据集中的每一行表示特定时间时订单的状态。这里我们用“xxxxx-xxx”代表订单ID。我们只对每分钟发货的订单数感兴趣,所以不需要实际的订单ID。

可以从CloudxLab GitHub仓库克隆完整的解决方案的源代码和数据集。

数据集位于项目的spark-streaming/data/order_data文件夹中。

推送数据集到Kafka

shell脚本将从这些CSV文件中分别获取每一行并推送到Kafka。推送完一个CSV文件到Kafka之后,需要等待1分钟再推送下一个CSV文件,这样可以模拟实时电子商务门户环境,这个环境中的订单状态是以不同的时间间隔更新的。在现实世界的情况下,当订单状态改变时,相应的订单详细信息会被推送到Kafka。

运行我们的shell脚本将数据推送到Kafka主题中。登录到CloudxLab Web控制台并运行以下命令。

阶段2

在第1阶段后,Kafka“order-data”主题中的每个消息都将如下所示

阶段3

Spark streaming代码将在60秒的时间窗口中从“order-data”的Kafka主题获取数据并处理,这样就能在该60秒时间窗口中为每种状态的订单计数。处理后,每种状态订单的总计数被推送到“order-one-min-data”的Kafka主题中。

请在Web控制台中运行这些Spark streaming代码

阶段4

在这个阶段,Kafka主题“order-one-min-data”中的每个消息都将类似于以下JSON字符串

阶段5

运行Node.js server

现在我们将运行一个node.js服务器来使用“order-one-min-data”Kafka主题的消息,并将其推送到Web浏览器,这样就可以在Web浏览器中显示出每分钟发货的订单数量。

请在Web控制台中运行以下命令以启动node.js服务器

现在node服务器将运行在端口3001上。如果在启动node服务器时出现“EADDRINUSE”错误,请编辑index.js文件并将端口依次更改为3002...3003...3004等。请使用3001-3010范围内的任意可用端口来运行node服务器。

用浏览器访问

启动node服务器后,请转到http://YOUR_WEB_CONSOLE:PORT_NUMBER访问实时分析Dashboard。如果您的Web控制台是f.cloudxlab.com,并且node服务器正在端口3002上运行,请转到http://f.cloudxlab.com:3002访问Dashboard。

当我们访问上面的URL时,socket.io-client库被加载到浏览器,它会开启服务器和浏览器之间的双向通信信道。

阶段6

一旦在Kafka的“order-one-min-data”主题中有新消息到达,node进程就会消费它。消费的消息将通过socket.io发送给Web浏览器。

阶段7

一旦web浏览器中的socket.io-client接收到一个新的“message”事件,事件中的数据将会被处理。如果接收的数据中的订单状态是“shipped”,它将会被添加到HighCharts坐标系上并显示在浏览器中。

截图

我们还录制了一个关于如何运行上述所有的命令并构建实时分析Dashboard的视频。

我们已成功构建实时分析Dashboard。这是一个基本示例,演示如何集成Spark-streaming,Kafka,node.js和socket.io来构建实时分析Dashboard。现在,由于有了这些基础知识,我们就可以使用上述工具构建更复杂的系统。

本文作者:佚名

来源:51CTO

时间: 2024-10-02 08:12:01

使用Apache Spark构建实时分析Dashboard的相关文章

关键七步,用Apache Spark构建实时分析Dashboard

本文我们将学习如何使用Apache Spark streaming,Kafka,Node.js,Socket.IO和Highcharts构建实时分析Dashboard. 问题描述 电子商务门户希望构建一个实时分析仪表盘,对每分钟发货的订单数量做到可视化,从而优化物流的效率. 解决方案 解决方案之前,先快速看看我们将使用的工具: Apache Spark – 一个通用的大规模数据快速处理引擎.Spark的批处理速度比Hadoop MapReduce快近10倍,而内存中的数据分析速度则快近100倍.

【Spark Summit East 2017】使用Spark MLlib和Apache Solr构建实时实体类型识别系统

本讲义出自Khalifeh Aljadda在Spark Summit East 2017上的演讲,由于实体查询系统中的查询一般比较短,所以由于缺少上下文信息,所以不适合使用传统的bag-of-words模型来确定实体类型,本讲义介绍了一个新颖的实体类型识别系统,该系统使用Spark MLlib和Apache Solr构建,能够结合不同来源的线索来分析出需要查询实体.

Apache Spark机器学习3.7 部署Apache

3.7 部署 有一些用户可能已经拥有了部署系统,按用户所需的格式将所开发的模型导出即可. 对于线性回归模型,MLlib支持将模型导出为预测模型标记语言(Predictive Model Markup Language,PMML). 更多关于MLlib导出PMML模型的信息,请访问:https://spark.apache.org/docs/latest/mllib-pmml-model-export.html. 对于R notebook,PMML可以直接在其他环境运行.使用R语言函数包PMML,

满满的技术干货!Spark顶级会议Apache Spark Summit精华讲义分享

Apache Spark Summit是Spark技术的顶级会议,这里大咖云集,一同探讨世界上最新的Spark发展动态以及产品应用和技术实践. 讲义资料持续更新中... 2月20日更新 [Spark Summit East 2017]工程快速索引[Spark Summit East 2017]提升Python与Spark的性能和互操作性[Spark Summit East 2017]Spark中的容错:从生产实践中获取的经验[Spark Summit East 2017]Spark:将数据科学作

大火的Apache Spark也有诸多不完美

现在如果你想要选择一个解决方案来处理企业中的大数据并不是难事,毕竟有很多数据处理框架可以任君选择,如Apache Samza,Apache Storm .Apache Spark等等.Apache Spark应该是2016年风头最劲的数据处理框架,它在数据的批处理和实时流处理方面有着得天独厚的优势. Apache Spark为大数据处理提供一套完整的工具,用户在大数据集上进行操作完全不需考虑底层基础架构,它会帮助用户进行数据采集.查询.处理以及机器学习,甚至还可以构建抽象分布式系统. Apach

大数据分析平台解析:什么是Apache Spark?

Apache Spark是一款快速.灵活且对开发者友好的工具,也是大型SQL.批处理.流处理和机器学习的领先平台. 2009年,Apache Spark从美国U.C. Berkeley的 AMPLab为起步,现在已经成为世界上主要的大数据分布式处理框架之一.Spark可以以各种方式进行部署,为Java.Scala.Python和R编程语言提供本地绑定,并支持SQL.流数据.机器学习和图形处理.已经被银行.电信公司.游戏公司.政府以及苹果.Facebook.IBM和微软等领域的企业和科技巨头所使用

用Apache Spark进行大数据处理—入门篇

文章讲的是用Apache Spark进行大数据处理-入门篇,Apache Spark 是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一. 与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势. 首先,Spark为我们提供了一个全面.统一的框架用于管理各种有着不同性质(文本数据.图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求. Sp

Apache Spark技术实战(三)利用Spark将json文件导入Cassandra &SparkR的安装及使用

<一>利用Spark将json文件导入Cassandra 概要 sbt cassandra spark-cassandra-connector 实验目的 将存在于json文件中的数据导入到cassandra数据库,目前由cassandra提供的官方工具是json2sstable,由于对cassandra本身了解不多,这个我还没有尝试成功. 但想到spark sql中可以读取json文件,而spark-cassadra-connector又提供了将RDD存入到数据库的功能,我想是否可以将两者结合

用 Apache Spark 和 TensorFlow 进行深度学习

神经网络在过去几年中取得了惊人的进步,现在已成为图像识别和自动翻译领域最先进的技术.TensorFlow是 Google 为数字计算和神经网络发布的新框架.在这篇博文中,我们将演示如何使用 TensorFlow 和 Spark 一起来训练和应用深度学习模型. 你可能会想:当大多数高性能深度学习实现只是单节点时,Apache Spark 在这里使用什么?为了回答这个问题,我们将通过两个用例来解释如何使用 Spark 和 TensorFlow 的集群机器来改进深度学习流程: 超参数调整:使用 Spa