干货洛克希德马丁的流式计算工具——StreamFlow
Posted 格灵深瞳
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货洛克希德马丁的流式计算工具——StreamFlow相关的知识,希望对你有一定的参考价值。
【导语】这是格灵深瞳Open Day当天实时数据分析小组的讨论中,我们的软件“攻城狮”刘彤整理的他当天的精彩分享,欢迎各位提出自己的想法。如果您也有观点想要分享,可以随时在线留言。
正文分割线
大家好,我今天主讲的题目是洛克希德马丁公司的开源项目StreamFlow。在准备今天的主题的时候,我原来的计划是做Facebook的流式架构,但是就在准备ppt的时候,得到了StreamFlow开源的消息,所以对这个项目非常感兴趣,今天来跟大家分享一下。首先做下自我介绍,我叫刘彤,是格灵深瞳Muse组的工程师,负责流媒体架构方面的工作,包括视频的编码解码以及流式多媒体数据的传递等工作。同时也是北京大学软件与微电子学院的研究生。洛克希德马丁公司是美国的第一大军工企业,正如图中所示,左上角是F22战斗机,右上角是地狱火导弹,下方是猎户座宇宙飞船。
在去年12月5日,猎户座宇宙飞船被发射升空进行测试。猎户座宇宙飞船未来将会作为美国深空探索的运载工具,其中也包括执行火星探索,小行星探索等任务。在正式讲解StreamFlow之前,先提一下一个被称之为Mach-5的项目。Mach-5是洛克希德马丁公司进行飞行任务的大数据处理平台。让我们来看一下对他的介绍。
猎户座飞船拥有1.2K个传感器,遍布飞船的各个位置,产生350K个度量参数,比如高度,速度,姿态等,每一秒钟产生40组实时数据,这些数据源源不断地回传到地球,并进行实时分析与处理。我们知道一般的视频图像的帧率在25-30的时候,人眼就几乎分辨不出帧之间的间隙了。猎户座宇宙飞船的数据准率达到了40。飞船在一小时之内就可以产生2TB的实时数据。这些实时数据一种方式是用来进行流式处理,当异常行为发生时,以做出相应的处理。处理的越早,能极大避免一些灾难性的后果。第二种方式就是基于历史的数据,对下次发射任务进行改进。我们可以了解到,第一种方式是进行的实时计算,第二种方式进行数据的批处理计算。一个比较有意思得比喻就是流式计算好比是扶梯,系统一直处于运行的状态,数据源源不断地输入和输出。批处理类似于直梯,一批一批地处理,Hadoop就是以这样的批处理方式进行,而实时性不强。格灵深瞳的结构化数据就是这种流的方式产生和使用的,深度传感器源源不断地产生这些数据,前端的三维计算机视觉算法进行实时分析,产生的事实数据汇报到cloud上面来,这与猎户座飞船比较相似。
以下是StreamFlow提供的几点主要功能:
提供了一个Web UI,可以进行对Storm topology的创建与监控;
创建topology的过程可以通过拖拽来完成;
提供了一个Dashboard可以查看topology的性能与相应的日志;
解决了Storm开发中比较复杂的问题,比如提高ClassLoader的隔离性和进行序列化等问题;
提供了一个framework,即成了topology中的spout,bolt等节点。
StreamFlow设计的目的是为数据科学家,分析员,运营人员和非开发者提供非常方便的工具来自由组合这些spout和bolt。开发者只需要关心Framework内部的一些节点的业务逻辑就可以了。StreamFlow是基于Storm的项目,所以他的topology的概念与Storm是一致的。spout被称之为喷嘴,出度为n,入度为0的节点,该节点用来源源不断地产生数据,并交给bolt来处理,bolt被称之为螺栓,可以接收数据,也可以向外产生数据。节点与节点之间的连线就是数据的流动方向。此外,StreamFlow的另一个主要的概念就是Framework。Framework就是针对于一组spout和bolt的封装。通过设置一些配置信息,允许用户以可视化的方式填写一些参数,例如,twitter这个例子,在创建了一个twitter app后,点击节点右上角,将获得到的API key, API secret, access token等填写到弹出的界面中。这些配置信息都填写到framework.yml中,即可定义输入参数的选项。
下面可以演示一个StreamFlow的例子。
StreamFlow提供了一个Dashboard,方便查看每一个topology的运行状态与资源消耗。在使用的过程中,首先需要在Frameworks这个标签中上传一个Framework的jar,这个jar由开发者提供,上传到StreamFlow的Server当中。之后在Topologies这个标签中进行一个topology 的创建。填写这个topology的名称和类型之后,在弹出的页面中,右侧生成了之前提交过的framework的列表,拖拽这个列表的节点到画布中,即可完成一个组件的创建,再拖拽一些组件到画布中,并且点击组件右侧或左侧的连接点,并拖拽到另一个组件就完成了他们的连接。完成了一个topology的设计之后,即可进行提交。StreamFlow即可自动地编译,打包生成topology的jar,并在storm cluster上运行,此时可以在Dashboard上面观察运行的状态,并在log里面可以观察每一个组件的日志。
以上是关于干货洛克希德马丁的流式计算工具——StreamFlow的主要内容,如果未能解决你的问题,请参考以下文章
技术干货流式计算 Spark Streaming 和 Storm 对比
干货分享:百信银行金融技术革新第一枪,aiStream流式计算平台助力业务加速