博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Spark Streaming + Kudu + Impala构建一个预测引擎
阅读量:6905 次
发布时间:2019-06-27

本文共 1356 字,大约阅读时间需要 4 分钟。

随着用户使用天数的增加,不管你的业务是扩大还是缩减了,为什么你的大数据中心架构保持线性增长的趋势?很明显需要一个稳定的基本架构来保障你的业务线。当你的客户处在休眠期,或者你的业务处在淡季,你增加的计算资源就处在浪费阶段;相对应地,当你的业务在旺季期,或者每周一每个人对上周的数据进行查询分析,有多少次你忒想拥有额外的计算资源。

\\

根据需求水平动态分配资源 VS 固定的资源分配方式,似乎不太好实现。幸运的是,借助于现今强大的开源技术,可以很轻松的实现你所愿。在这篇文章中,我将给出一个解决例子,基于流式API数据来演示如何预测资源需求变化来调整资源分配。

\\

我们旨在用流式回归模型预测接下来十分钟的海量事件数据,并与传统批处理的方法预测的结果进行对比。这个预测结果可用来动态规划计算机资源,或者业务优化。传统的批处理方法预测采用Impala和Spark两种方法,动态预测使用Spark Streaming。

\\

任何预测的起点是基于海量历史数据和实时更新的数据来预测未来的数据业务。提供稳定的流失RSVP数据,用来预测未来一段时间RSVP数据。

\\

动态资源分配预测架构图

\\

这个例子的数据通过流式API进入Kafka,然后使用Spark Streaming从Kafka加载数据到Kudu。Kafka允许数据同时进入两个独立的Spark Streaming作业:一个用来进行特征工程;一个用来使用MLlib进行流式预测。预测的结果存储在Kudu中,我们也可以使用Impala或者Spark SQL进行交互式查询,见图1。

\\

a6039bb4c0b9e6f67e4a41758d593ba8.png

\\

图1

\\

你可能急切想知道我的技术选型,下面是一些技术概要:

\\
  • Kafka:Kafka可抽象数据输入,支持扩展,并耦合Spark Streaming框架。Kafka拥有每秒处理百万事件的扩展能力,并能和其他各项技术集成,比如,Spark Streaming。\\t
  • Spark Streaming:Spark Streaming能够处理复杂的流式事件,并且采用Scala编程仅需简单的几行代码即可,也支持Java、Python或者R语言。Spark Streaming提供和Kafka、MLlib(Spark的机器学习库)的集成。\\t

    Apache Kudu:Kudu支持事件的增量插入,它旨在提供一种基于HDFS(HDFS优势在于大数据存储下的快速扫描能力)和HBase(HBase优势是基于主键的快速插入/查询)之间超存储层。本项目可以采用HBase或者Cassandra,但Kudu为数据分析提供了快速的扫描能力、列式存储架构。

    \\t\\t
  • Impala:使用Impala可很容易的即席查询。它提供一个查询引擎直接查询加载到Kudu上的数据,并能理解生成模型。作为可选的方案可使用Spark SQL,但这里为了比较使用MADlib库训练的回归模型和使用Saprk MLlib训练的模型,故用Impala。\

构建实例

\\

现在解释下架构的选择,详细细节如下:

\\

首先,粗略浏览一下流式数据源。通过Kafka来监测文件,tail文件变化发送到Kafka,部分代码见。下面给出RSVP内容样例:

\\
\{\"response\":\"yes\

转载地址:http://mfmdl.baihongyu.com/

你可能感兴趣的文章
关于架构的北京快乐八平台搭建思考之一:架构的定义及目的
查看>>
Java学习之类方法的外部和内部调用
查看>>
jstl中<c:forEach>的用法
查看>>
靠谱的基于zookeeper分布式锁实现
查看>>
Centos 6.4 PXE无人值守安装
查看>>
我的友情链接
查看>>
@Controller和@RestController的区别
查看>>
CognitiveJ一个Java的人脸图像识别开源分析库
查看>>
dojo layout
查看>>
初探 ELK - 每天5分钟玩转 Docker 容器技术(89)
查看>>
Web 安全渗透学习路线
查看>>
构建LAMP服务平台
查看>>
自定义之progressbar(图片实现)
查看>>
python中的while循环
查看>>
Linux下的压缩解压缩命令详解
查看>>
在开源中国码云上面,怎么同步更新自己fork的项目代码
查看>>
瑞萨单片机串口使用
查看>>
【servlet】初学过滤器Filter
查看>>
获取指定日期是一年的第几周
查看>>
python-15:HTTPError 错误码大全
查看>>