如何做流数据分析,Byron Ellis来告诉你...
如何做流数据分析,Byron Ellis来告诉你...
openthings 发表于1个月前
如何做流数据分析,Byron Ellis来告诉你...
  • 发表于 1个月前
  • 阅读 13
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

    如何做流数据分析,Byron Ellis来告诉你...

    流数据越来越多,如各种消息、社交媒体、运行监控、在线服务、物联网等都会产生大量的实时数据,以前的静态数据也随着采集设备的进化和处理需求的提高而成为流式数据,需要采用具有高可用、低延迟和快速水平扩展的系统来进行处理。《实时分析-流数据的分析与可视化技术》一书对此做了较为全面的介绍,由[美]Byron Ellis编著,王晓伟翻译,机械工业出版社出版。

    

    流数据的处理与传统数据库有所不同,要求具有高可用、低延迟和快速水平扩展能力,这带来了特殊的挑战。所幸的是,大量的开源软件已经探索出了很好的方法,尽管还有很多美中不足,但已足以解决大量的流数据处理和分析所遇到的问题。由于运行在大规模的集群之上而且实时性要求高,流数据的事务性是个非常棘手的问题。根据性能要求和应用的特点,可以采用允许丢失数据、至少交付一次、允许重复交付等多种策略,当然也可以使用“有且只有一次”的严格事务模型,但这在分布式系统下将带来额外的检查开销,建议通过业务层面去进行处理从而提升数据前端的实时性。

    流数据分析架构包括数据采集、数据流程、数据处理、数据存储、数据交付等多个组成部分。要维持流数据平台的持续运行,可以采用ZooKepper对集群进行管理,实现各个节点的信息同步和状态管理。数据采集可以使用MQTT、AMQP、JMS等标准消息协议连接,数据采用JSON格式进行编解码,传输过程使用Kafka或Storm来进行快速传输,数据处理使用Spark或Flink会有很好的效果,而传统Hadoop的MapReduce则会遇到启动慢、实时性差的一些问题。Spark是采用“小步快跑”的批处理策略,基于内存的数据管理机制避免了MapReduce的数据反复IO问题,可以大幅度提升性能。Flink则能提供“即时”的数据处理能力,当然,这与传统的很多软件可能并不兼容,所以还是替代不了Spark,可以结合起来使用。流数据存储可以分为多级,像梯级水库一样进行管理,实时处理的采用内存,热数据采用Redis、MongoDB等,而冷数据和定期抽样数据可以采用传统文件系统和关系数据库存储。在数据处理中,数据存储应该全部采用异步方式,而且尽量避免调用文件和传统数据库存储系统,以免影响数据流动,造成延迟、丢失数据。对于日志数据,已经有完整的解决方案,比如ELK(ElasticSearch、Logstash、Kinbana)、Flume等等,而且可以通过容器技术快速安装、部署。现在,流数据处理再也不是高端产品和大型互联网公司的专利了,小型队伍照样可以玩得转。不过,要维护一个流系统的长期运行和不断升级,还是需要一个专业队伍的,成本也是不菲的。

    流数据的可视化得益于HTML5、WebSocket和Node.JS等技术和平台,已经可以较为轻松地完成,实现实时的数据更新和高动态的可视化效果,开发出以前难以想象的流畅效果,而且可以运行在很多种Web平台和设备之上。Byron Ellis对这些技术的使用做了实用的介绍,但如果使用SuperMap iClient 9D里面的SDK,则可以更为轻松地完成非常炫酷的Web动态效果(已经集成好了,不要说我没告诉你哟)。

    

    在Spark里面,所有的数据统计分析、回归分析、分类识别乃至机器学习的算法也都是可以在流数据上面使用的,这些能力非常强大。不过,也需要注意到分段统计的这些传统算法在处理持续的流数据方面的局限性,也期待具有更好的“流式数据专用”处理算法。不过,Byron Ellis没有告诉你的是,在SuperMap的系列平台中,iServer、iObject、iDesktop都能够利用Spark的能力对空间和非空间数据进行处理,然后直接发布到Web可视化前端,所具有的流数据处理和分析能力可以说是潜力无限啊!

共有 人打赏支持
粉丝 203
博文 616
码字总数 376282
作品 1
×
openthings
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: