Storm精华问答 | 最火的流式处理框架——Storm

戳蓝字“CSDN云计算”关注我们哦!


640?wx_fmt=png

Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。  今天就为大家带来Storm诞生到发展再到实践,赶快学习起来吧!


640?wx_fmt=gif1

Q:Storm的诞生。


A:在2011年Storm开源之前,由于Hadoop的火红,整个业界都在喋喋不休地谈论大数据。Hadoop的高吞吐,海量数据处理的能力使得人们可以方便地处理海量数据。但是,Hadoop的缺点也和它的优点同样鲜明——延迟大,响应缓慢,运维复杂。


有需求也就有创造,在Hadoop基本奠定了大数据霸主地位的时候,很多的开源项目都是以弥补Hadoop的实时性为目标而被创造出来。而在这个节骨眼上Storm横空出世了。


640?wx_fmt=gif2

Q:Storm的特点


A:Storm带着流式计算的标签华丽丽滴出场了,看看它的一些卖点:

分布式系统:可横向拓展,现在的项目不带个分布式特性都不好意思开源。

运维简单:Storm的部署的确简单。虽然没有Mongodb的解压即用那么简单,但是它也就是多安装两个依赖库而已。

高度容错:模块都是无状态的,随时宕机重启。

无数据丢失:Storm创新性提出的ack消息追踪框架和复杂的事务性处理,能够满足很多级别的数据处理需求。不过,越高的数据处理需求,性能下降越严重。

多语言:实际上,Storm的多语言更像是临时添加上去似的。因为,你的提交部分还是要使用Java实现。


640?wx_fmt=gif3

Q:Storm已经发展到0.8.2版本了,如今它取得的成就


A:有50个大大小小的公司在使用Storm,相信更多的不留名的公司也在使用。这些公司中不乏淘宝,百度,Twitter,Groupon,雅虎等重量级公司。

从开源时候的0.5.0版本,到现在的0.8.0+,和即将到来的0.9.0+。先后添加了以下重大的新特性:

使用kryo作为Tuple序列化的框架(0.6.0)

添加了Transactional topologies(事务性拓扑)的支持(0.7.0)

添加了Trident的支持(0.8.0)

引入netty作为底层消息机制(0.9.0)

Transactional topologies和Trident都是针对实际应用中遇到的重复计数问题和应用性问题的解决方案。可以看出,实际的商用给予了Storm很多良好的反馈。


在GitHub上超过4000个项目负责人。Storm集成了许多库,支持包括Kestrel、Kafka、JMS、Cassandra、Memcached以及更多系统。随着支持的库越来越多,Storm更容易与现有的系统协作。Storm的拥有一个活跃的社区和一群热心的贡献者。过去两年,Storm的发展是成功的。


640?wx_fmt=gif4

Q:在Storm的学习过程中,感觉难以理解的部分有:1)Storm的反馈机制的设计原理;2)HBase用在线上栏位高可用保障方面的采集过程;3)前端栏位快照数据回流,每次访问过程中商品。这三个问题应该如何理解?


A:1)可以简单参考下图

640?wx_fmt=jpeg


实际生产环境中需要计算栏位的产品列表不同算法的一些实时指标,不断的反馈模型,修正相关因子或权重。

2)比如,采集0.98等版本的HBase,用默认的JMX不是很好,读到的某些数据往往是溢出的,不是很准,用HBaseClient接口收集相关更精确的数据

3)尽可能的保存每一个点击行为的当前的快照,比如商品当前的订单量、访问量、价格等,用来离线训练,这些数据全部都走tracker方式,数据量比较大,在调用服务端API的时候可以异步写到Kafka,再通过Gobblin等sync到HDFS。


640?wx_fmt=gif5

Q:Kafka在Storm中的角色是什么呢?是作为分流的解决方案,还是作为通信的工具?Kafka的前置机是什么?数据量大的时候Kafka会不会崩掉?


A:Kafka在Storm之前扮演一个缓冲的消息队列;Kafka最开始的前置一般有Flume等,其他消息也可以直接往Kafka写,Storm的中间过程也可以存到Kafka中,当做一个消息队列来用;双十一的时候,分区设置小,Kafka满了,来不及处理崩过,写Kafka的时候;如果客户端直接写Kafka,也要注意,并发量大会把Kafka搞挂。采用异步写+本地缓存写Kafka,比如log4j写Kafka,基本的异步和本地缓存等已经做了,数据量再大的时候,加一层Flume等。


640?wx_fmt=png


福利

1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg

2、公众号后台回复:白皮书,获取IDC最新数据白皮书整理资料!


推荐阅读:

  • Elastic Jeff Yoshimura:开源正在开启新一轮的创新 | 人物志

  • 深入浅出Docker 镜像 | 技术头条

  • 19岁当老板, 20岁ICO失败, 21岁将项目挂到了eBay, 为何初创公司如此艰难?

  • 码二代的出路是什么?

  • 机器学习萌新必备的三种优化算法 | 选型指南

  • 小程序的侵权“生死局”

  • @996 程序员,ICU 你真的去不起!


640?wx_fmt=png真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qt中QHostAddress与QString相互转换

实现: 1.QHostAddress转QString 使用函数toString(). QHostAddress ip; QString strIp ip.toString();2.QString转换为QHostAddress 直接赋值; QString strIp; QHostAddress ip QHostAddress(strIp);以上可以通过查询qt自带的帮助文件得到。

Guns 添加功能实现_入门试炼05

找到添加页面,进行修改 源代码: 默认这些表平淡中的字段都需要,手写,不需要手写的可以删除,用别的策略代替即可 第一处: id 数据库设置的是自增的因此不需要,删除 第二处:房屋交付…

浪潮云ERP到底属于什么水平?

戳蓝字“CSDN云计算”关注我们哦!极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!常常听到企业应用市场三巨头,用友、金蝶、浪潮,但如果问…

qt创建简单的单例模式

引言 本文章只适用于简单的单例模式。由于本人也没有深究过。下面直接上代码。 示例 单例模式,就是只能创建一个该类的对象,因为这样其构造函数是私有的,外部只能通过接口获得创建的该类唯一的对象。 #ifndef CONFIG_H #define CONFIG_H#…

Guns 编辑功能实现_入门试炼06

一、编辑功能默认实现 未修改前的样图: 案例演示: 将刘英3 、北京大兴区2、次渠2,更新为刘英5 、北京大兴区5、次渠5 选中需要修改的那条数据,点击修改按钮。 未提交表单前: 更新完成后: 想学习更多…

小米回应有品特殊激励需放弃年终奖……外媒说,荷兰运营商KPN允许华为有限参与5G网络建设;传苹果挖角英特尔5G工程师...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go AT&T实现2Gbps的…

qt创建xml文件

引言 由于项目需要,现学现卖,先将下面两个例子来记录一下。 示例1 直接上代码,创建xml文件。 void Config::createServerInfoFile() {QString strPath "路径";//这里的路径是将要创建的xml的完整路径,包含文件名xx…

Guns 删除功能_入门试炼07

一、删除功能默认实现 选中需要删除的数据执行删除操作即可 删除前截图: 删除后截图: 从截图中可以看出,删除的那条数据已经不在了。 想学习更多微服务、分布式、中间件、数据库、项目快速构建等系列技术 请跳转Gblfy个人专栏: www.gblf…

qt中xml的读取

引言 该文章是基于上一篇文章&#xff0c;xml生成而写的&#xff0c;其所用的xml文件的内容是上一篇中的内容。 示例1 文件的内容&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <server><helperIp>127.0.0.1</helperIp&g…

第一次更名为OpenInfra的“她”,给我们带来了哪些惊喜?| 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;在美国丹佛阴冷的天气中&#xff0c;开源业界最顶级的技术峰会&#xff0c;前身为Open…

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? ide

mvn clean install -X -Dmaven.test.skiptrue -P dev 打包报错&#xff1a; No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? idea,项目&#xff0c;maven 也设置了统一的jdk,还是报错&#xff0c; 解决方法1&#xff…

qt中xml文件的更新

引言 这篇文章与其说是xml文件的更新&#xff0c;不如说是修改xml文件中之前的某些值。 示例 该文章依旧是基于之前的读写xml文章的基础,找到xml文件中每个节点的ip&#xff0c;查找最新的数据中是否含有xml文件中该节点的ip,有 则更新其名称和id. void Config::updateKvmS…

稳居亚太第一,阿里云进军全球;李彦宏候选工程院院士;苹果巨大损失:工业设计核心元老纷纷离职……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 【5月1日 星期三】云の声音不…

Guns 切换Oracle分支

远程拉取Guns代码 git clone gitgitee.com:gb_90/guns.git进入本地拉取Guns代码的目录下面 cd guns/切换到oracle分支 git checkout oracle切换到未删除Oracle配置的历史版本 提交id号是 &#xff1a;24466d6 git reset --hard 24466d6查看&#xff1b; dir导入idea开发工具效果…

QT中字符串分割

引言 字符串“<ew,we,ewe,sd,sd,sd>”&#xff0c;当求每一个字段的值时&#xff0c;可以采用字符串分割的方式来实现。 使用示例 下面只记录关键函数split. 使用QString的分割函数split来分割字符串&#xff1a; QString str “<ew,we,ewe,sd,sd,sd>”; QStr…

ZStack张鑫:面对混合云浪潮 我们主动出击

戳蓝字“CSDN云计算”关注我们哦&#xff01;极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;人类首次捕获黑洞照片&#xff0c;让我们看到了原本幽暗的宇宙&#xff0c;也有…

MyBatis-Plus_简介

第 1 章 简介 MyBatisPlus 介绍 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 代码及文档发布地址 官方地址: http://mp.baomidou.com 代码发布地址: G…

qt中记录数据的一次接收处理方法

引言 在udp通信中&#xff0c;发送请求后&#xff0c;等待接收端的响应&#xff0c;有时一个回应被分割成好几次发送&#xff0c;这种反馈的形式出现带有随机性&#xff0c;正常的情况下是一次反馈所有的数据&#xff0c;但是会出现一次反馈被分成好几次反馈。像下面这样&…

解决ORA-00257: 归档程序错误。在释放之前仅限于内部连接

文章目录一、预先准备1. 现象2. 异常信息3. 分析二、解决方案2.1. 登录oracle2.2. 查看ARCHIVED LOG空间占用率2.3. 查看元空间大小2.4. 整空间上限2.5. 结果验证一、预先准备 1. 现象 场景1&#xff1a; 昨天尝试通过plsqldev尝试连接oracle数据库&#xff0c;报错&#xff…

qt中根据数据解析的结果动态的创建控件并布局

引言 有时候程序中的控件的个数是无法预测的&#xff0c;当程序启动时&#xff0c;根据解析的数据动态的创建n行m列的控件&#xff0c;并为其布局。下面记录一下动态创建控件&#xff0c;并布局。 运行效果 示例 此示例主要是从json配置文件中读取参数&#xff0c;然后根据参…