文档章节

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

openthings
 openthings
发布于 2017/09/11 16:05
字数 1242
阅读 76
收藏 1

    如何做流数据分析,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可视化前端,所具有的流数据处理和分析能力可以说是潜力无限啊!

© 著作权归作者所有

共有 人打赏支持
openthings
粉丝 286
博文 1052
码字总数 574209
作品 1
东城
架构师
私信 提问
GrowingIO 2016 数据驱动增长大会

GrowingIO 2016 数据驱动增长大会,首次聚齐了增长黑客之父 Sean Ellis 、世界前十位前沿数据科学家张溪梦等数十位中美顶尖增长实践者; 链家、点融网、Camera360、量化派、北森以及猎上等国...

活动家
2016/12/10
102
0
把 Java 8 流解析成 SQL

当我们尝试用“Java 8 的方式”使用数据库时,如何去解决性能上的问题呢? 通过与 ZeroTurnaround 合作,我们为你带来了 Java Zone。你可以阅读这里的 8 个步骤的指南,来看看如何在编写代码...

oschina
2015/12/28
7.4K
35
Junit4 使用(在eclipse上) author: Blue

如果写了一个类,想测试一下有没有bug,可以用main方法去测试。但是main方法缺点很多,不是理想的做单元测试的途径——方法不能一起运行,且测试结果多数要通过程序员自己观察才可以判定。 ...

晨曦之光
2012/05/23
518
1
JavaScript 正则表达式上——基本语法

定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%>','g'); 2. 字面量 var reg=/<%[^%>]%>/g; g: global,全文搜......

豆花饭烧土豆
2016/06/07
5
0
火箭公司Relativity Space雄心初显,创始人来自蓝色起源和SpaceX

  即便在航天业百花齐放的时代,Relativity Space 也一枝独秀。这家火箭公司的创始人是一群 20 多岁的年轻人,他们曾经在 Blue Origin 与 SpaceX 工作。他们聚在一起希望用 3D 打印技术制造...

DeepTech深科技
2018/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

composer安装

前言:随着开源的东西越来越多,一些好的代码我们是可以直接拿过来用的,github更是加快了这一节奏,在github上我们可以看到一些开源的项目、代码块、函数库、类结构等,我们可以直接Fork,然...

echojson
22分钟前
0
0
Longest Palindrome(leetcode409)

Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters. This is case sensitive, for exa......

woshixin
40分钟前
0
0
mysql grant 用户权限总结

用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库、哪些表 2. 可以限制用户对哪些表执行SELECT、CREATE、DELETE、DELETE、ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用...

Airship
56分钟前
1
0
RabbitMQ学习(3)

1. 消费端 1. 消费端通过推模式或者拉模式从RabbitMQ中获取并消费消息,当消费者确认处理消息后,可以手动确认消息已被接收,然后就会将该消息从RabbitMQ的队列中标记再清除,消费者端还可以...

江左煤郎
今天
1
0
linux mysql(5.7)开启慢查询

一、有3个配置需要设置, 1:相关开关 2:日志目录文件 3:慢查询的时间限制 二、设置完之后重启mysql service mariadb restart 三、重启后做个测试 连接mysql 并查询: select sleep(6); 四...

chro008
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部