storm是如何保证at least once语义的?】的更多相关文章

背景 本篇看看storm是通过什么机制来保证消息至少处理一次的语义的. storm中的一些原语 要说明上面的问题,得先了解storm中的一些原语,比方: tuple和message 在storm中,消息是通过tuple来抽象表示的.每一个tuple知道它从哪里来,应往哪里去,包括了其在tuple-tree(假设是anchored的话)或者DAG中的位置.等等信息. spout spout充当了tuple的发送源,spout通过和其他消息源,比方kafka交互,将消息封装为tuple,发送到流的下…
storm中的一些原语: 要说明上面的问题,得先了解storm中的一些原语,比如: tuple和messagetuple:在storm中,消息是通过tuple来抽象表示的,每个tuple知道它从哪里来,应往哪里去,包含了其在tuple-tree(如果是anchored的话)或者DAG中的位置,等等信息. spoutspout充当了tuple的发送源,spout通过和其它消息源,比如kafka交互,将消息封装为tuple,发送到流的下游. boltbolt是tuple的实际处理单元,通过从spou…
背景 前期收到的问题: 1.在Topology中我们可以指定spout.bolt的并行度,在提交Topology时Storm如何将spout.bolt自动发布到每个服务器并且控制服务的CPU.磁盘等资源的? 2.Storm处理消息时会根据Topology生成一棵消息树,Storm如何跟踪每个消息.如何保证消息不丢失以及如何实现重发消息机制? 本篇看看storm是通过什么机制来保证消息至少处理一次的语义的,并回答第2个问题. storm中的一些原语 要说明上面的问题,得先了解storm中的一些原语…
背景 前期收到的问题: 1.在Topology中我们可以指定spout.bolt的并行度,在提交Topology时Storm如何将spout.bolt自动发布到每个服务器并且控制服务的CPU.磁盘等资源的? 2.Storm处理消息时会根据Topology生成一棵消息树,Storm如何跟踪每个消息.如何保证消息不丢失以及如何实现重发消息机制? 上篇:storm是如何保证at least once语义的 回答了第2个问题. 本篇来建立一个基本的背景,来大概看下构成storm流式计算能力的一些基础框架…
Storm介绍 Storm是由Twitter开源的分布式.高容错的实时处理系统,它的出现令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求.Storm常用于在实时分析.在线机器学习.持续计算.分布式远程调用和ETL等领域. 在Storm的集群里面有两种节点:控制节点(Master Node)和工作节点(Worker Node).控制节点上面运行一个名为Nimbus的进程,它用于资源分配和状态监控:每个工作节点上面运行一个Supervisor的进程,它会监听分配给它所在机器的…
storm 通过 trident保证了对消息提供不同的级别.beast effort,at least once, exactly once. 一个tuple 从spout流出,可能会导致大量的tuple被创建.如下面的单词统计 TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("sentences", new KestrelSpout("kestrel.backtype.com",…
1.背景 Apache Flink 和 Apache Storm 是当前业界广泛使用的两个分布式实时计算框架.其中 Apache Storm(以下简称"Storm")在美团点评实时计算业务中已有较为成熟的运用(可参考 Storm 的 可靠性保证测试),有管理平台.常用 API 和相应的文档,大量实时作业基于 Storm 构建.而 Apache Flink(以下简称"Flink")在近期倍受关注,具有高吞吐.低延迟.高可靠和精确计算等 特性,对事件窗口有很好的支持,目…
storm简介 Storm是一个分布式实时流式计算平台,支持水平扩展,通过追加机器就能提供并发数进而提高处理能力:同时具备自动容错机制,能自动处理进程.机器.网络等异常. 它可以很方便地对流式数据进行实时处理和分析,能运用在实时分析.在线数据挖掘.持续计算以及分布式 RPC 等场景下.Storm 的实时性可以使得数据从收集到处理展示在秒级别内完成,从而为业务方决策提供实时的数据支持. storm vs spark streaming storm适用场景 需要纯实时,不能忍受1秒以上延迟的场景下使…
作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以“注意事项”的形式给出. 1. Storm集群组件 Storm集群中包含两…
前言spark与hadoop的比较我就不多说了,除了对硬件的要求稍高,spark应该是完胜hadoop(Map/Reduce)的.storm与spark都可以用于流计算,但storm对应的场景是毫秒级的统计与计算,而spark(stream)对应的是秒级的.这是主要的差别.一般很少有对实时要求那么高的场景(哪怕是在电信领域),如果统计与计算的周期是秒级的话,spark的性能是要优于storm的. Storm风暴和Spark Streaming火花流都是分布式流处理的开源框架.这里将它们进行比较并…
Storm集群的安装分为以下几步: 1.首先保证Zookeeper集群服务的正常运行以及必要组件的正确安装 2.释放压缩包 3.修改storm.yaml添加集群配置信息 4.使用storm脚本启动相应服务并查看服务状态 5.通过web查看storm集群的状态 安装Storm之前首先保证之前安装的Zookeeper服务正常运行,包括配置hosts映射,主机名修改,防火墙都已经设置完好 Storm是由java编写,因此必须依赖JDK运行,系统首先应正确安装JDK 部分需要依赖Python,红帽系列L…
Storm保证每跳离开spout的消息都会被完全处理.本文介绍Storm是怎么保证每条消息都被完全处理并且作为用户该怎么做才能从Storm的可靠性保证受益. 1.什么叫消息被完全处理? 一个tuple从spout出发可以触发成千上万个tuples基于它. 一个tuple被认为处理失败了,如果它的消息树在一个指定的时间内没有被完全处理.这个时间可以通过下面这样来配置: Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS,默认是30秒.…
storm有两种操作模式: 本地模式和远程模式. 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来; 远端模式:你提交的topology会在一个集群的机器上执行. 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1.   Strom集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Wor…
Storm核心概念如下:  1.Tuple:元组                Tuple即元组,是一个拓扑Topology中的Spout和Bolt组件之间数据传递的基本单元.元组中的字段可以是任何类型的对象,Storm使用元组作为其数据模型,支持所有的基本类型.字符串.和字节数组.            Spout中nextTuple()方法产生元组通过收集器Collector发射给Bolt,Bolt中execute()方法接收来自Spout发射的元组(订阅Spout中declareOutpu…
使用其他语言编写Bolt Bolt可以使用任意语言编写.用另外一种语言编写Bolt来作为子进程运行.Storm会在标准输入输出的基础上使用Json来与子进程通信.通信协议之需要一个100行的适配器库,Storm自带了Ruby,Python,和Fancy的适配器库. 下面是WordCountTopology中SplitSentence的定义: ? 1 2 3 4 5 6 7 8 9 public static class SplitSentence extends ShellBolt implem…
Storm作为当前最流行的实时计算框架,自Twitter将其开源后就一直备受关注.由于其具有先天的稳定性以及便捷性,目前被许多大公司所采用,国外像雅虎.雅虎日本.Twitter.OOYALA.Spotify,国内像京东.腾讯.阿里等都使用Storm来完成大量实时计算来为用户提供优质服务.目前官方的最新发布版本是0.10.0. 本文将对官网的Storm手册进行翻译,由于本人英语能力有限,翻译难免有些不妥之处,望大家指正.点击此处阅读官网英文原版. -------------------------…
本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以"注意事项"的形式给出. 1. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为Nimbus的后台程序,它负责在Storm集群内分发代码,分配任务给工作机器,并且负责监控集群运行状态.Nimbus的作用类…
目录 场景假设 调优步骤和方法 Storm 的部分特性 Storm 并行度 Storm 消息机制 Storm UI 解析 性能优化 场景假设 在介绍 Storm 的性能调优方法之前,假设一个场景:项目组部署了3台机器,计划运行且仅运行 Storm(1.0.1) + Kafka(0.9.0.1) + Redis(3.2.1) 的小规模实验集群,集群的配置情况如下表: 主机名 硬件配置 角色描述 hd01 2CPUs, 4G RAM, 2TB 机械硬盘 nimbus, supervisor, ui,…
在这个教程中,你将学会如何创建 Storm 的topology并将他们部署到 Storm 集群上, 主要的语言是 Java,但是少数几个例子用 Python 编写来说明 Storm 的多语言支持能力. 术语和名词 MapReduce jobstopologies topology 由用户编写的Storm集群中的业务处理逻辑deamon 守护进程worker process 工作进程stream 流 指Storm中的数据流tuple 元组 指stream中的最小单元数据primitive 基件 指…
一.使用组件的并行度代替线程池 Storm 自身是一个分布式.多线程的框架,对每个Spout 和Bolt,我们都可以设置其并发度:它也支持通过rebalance 命令来动态调整并发度,把负载分摊到多个Worker 上.       如果自己在组件内部采用线程池做一些计算密集型的任务,比如JSON 解析,有可能使得某些组件的资源消耗特别高,其他组件又很低,导致Worker 之间资源消耗不均衡,这种情况在组件并行度比较低的时候更明显. 比如某个Bolt 设置了1 个并行度,但在Bolt 中又启动了线…
Storm 性能优化 目录 场景假设 调优步骤和方法 Storm 的部分特性 Storm 并行度 Storm 消息机制 Storm UI 解析 性能优化 场景假设 在介绍 Storm 的性能调优方法之前,假设一个场景:项目组部署了3台机器,计划运行且仅运行 Storm(1.0.1) + Kafka(0.9.0.1) + Redis(3.2.1) 的小规模实验集群,集群的配置情况如下表: | 主机名 | 硬件配置 | 角色描述 ||: ---------------- :|: ----------…
转自:http://blog.csdn.net/hrn1216/article/details/51538962 翻译太累了,再也不想去翻译了,真的太累了: 在这个教程中, 你将学到如何创建一个Storm topologies以及怎样把它部署到storm集群上.本教程中,Java将作为主要使用的语言,但在一小部分示例中将会使用Python来阐述storm处理多语言的能力. 预备工作 本教程使用的例子来自于 storm-starter 项目. 我们建议你拷贝该项目并跟随这个例子来进行学习. 请阅读…
volatile在Java内存模型(JMM)中,保证共享变量对所有线程可见,但不保证原子性.volatile语义是同步,通过共享变量的方式,完成线程间的通信. 为什么需要volatile Java内存模型中抽象.简化了计算机物理设备,分成工作内存和主内存,线程有各自的工作内存,却共享主内存.如果要把Java内存模型与物理设备映射起来的话,L1,L2 Cache可以视为工作内存,而L3 Cache视为主内存.线程执行指令时,会优先选择距离 CPU 较近的位置的工作内存中使用,而不会从读写速度较慢的…
前期准备:3台服务器: 192.168.8.94  192.168.8.95 192.168.8.96 去storm官网下载响应版本的软件包:http://storm.apache.org/downloads.html 在这里下载的是: wget http://mirrors.hust.edu.cn/apache/storm/apache-storm-0.9.5/apache-storm-0.9.5.tar.gz 1. 安装storm集群 搭建Zookeeper集群.(略) 安装Storm依赖库…
Storm 性能优化  原文地址:http://www.jianshu.com/p/f645eb7944b0 目录 场景假设 调优步骤和方法 Storm 的部分特性 Storm 并行度 Storm 消息机制 Storm UI 解析 性能优化 场景假设 在介绍 Storm 的性能调优方法之前,假设一个场景:项目组部署了3台机器,计划运行且仅运行 Storm(1.0.1) + Kafka(0.9.0.1) + Redis(3.2.1) 的小规模实验集群,集群的配置情况如下表: 主机名 硬件配置 角色…
[命令]storm rebalance topology-name [-w wait-time-secs] [-n new-num-workers] [-e component=parallelism]*  storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=1 [链接] !!! Storm的消息保证机制 https://www.jianshu.com/p/d521c7c91298 Storm中Spout使用注意事项小结 …
方法1:本来WEB-INF中的jsp就是无法通过地址栏访问的.所以安全.如果说你要访问这个文件夹中的jsp文件需要在项目的web.xml文件中去配置servlet格式差不多的配置就ok了.如下: 访问地址:http://localhost:8080/runtain/xxx,就可以看见内容了! 方法2:<jsp:forward page ="/WEB-INF/jsp/test/test.jsp" /> 方法3:request.getRequestDispatcher(&quo…
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具.依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置. 1.命令格式: ifconfig [网络设备] [参数] 2.命令功能: ifconfi…
1. Kafka概要设计 kafka在设计之初就需要考虑以下4个方面的问题: 吞吐量/延时 消息持久化 负载均衡和故障转移 伸缩性 1.1 吞吐量/延时 对于任何一个消息引擎而言,吞吐量都是至关重要的性能指标.那么何为吞吐量呢?通常来说,吞吐量是某种处理能力的最大值.而对于Kafka而言,它的吞吐量就是每秒能够处理的消息数或者每秒能够处理的字节数.很显然,我们自然希望消息引擎的吞吐量越大越好. 消息引擎系统还有一个名为延时的性能指标.它衡量的是一段时间间隔,可能是发出某个操作与接收到操作响应(r…
<Apache Kafka 实战>读书笔记-认识Apache Kafka 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.kafka概要设计 kafka在设计初衷就是为了解决互联网公司的超级大量级数据的实时传输.为了实现这个目标,kafka在设计之初就需要考虑以下四个方面: 第一:吞吐量/延迟 第二:消息持久化  第三:负载均衡和故障转移 第四:伸缩性 1>.吞吐量/延时介绍 我们先打个比方:若kafka处理一条消息需要花费2ms,那么计算得到的吞吐量不会超过500…