- 浏览: 56404 次
- 性别:
- 来自: 北京
文章分类
最新评论
一、Trident API——Spout
ITridentSpout:最通用的Spout,可以支持事务或者不透明事务语义。
IBatchSpout: 一个非事务spout 。
IPartitionedTridentSpout: 分区事务spout,从数据源(比如一个Kafka集群)读分区数据
IOpaquePartitionedTridentSpout:不透明分区事务spout,从数据源读分区数据
接口变动
例如:
简单概括总体流程就是:
trident在执行时每批先调用 getPartitionsForBatch()如果发现返回的Partitions对象和上一批的不相等,则会先后调用 getOrderedPartitions(Integer allPartitionInfo) 和 refreshPartitions(List partitionResponsibilities) 方法,否则不会调用这两个方法。
getOrderedPartitions根据getPartitionsForBatch返回的Partitions对象生成一个Partition列表,refreshPartitions根据getOrderedPartitions返回的Partition列表做一些类似于connections to brokers的操作。
然后再调用emitPartitionBatchNew或者emitPartitionBatch方法。其中emitPartitionBatchNew的partition参数在0.9.0之前是int类型的,现在改成Partition类型,就是getOrderedPartitions返回的List中的一个元素。
其他方法和之前版本都一致。
二、Trident Bolt
唯一显性Bolt接口:ITridentBatchBolt,但很少用。
Trident编程特点就是Stream。
Trident的topology会被编译成尽可能高效的Storm topology。只有在需要对数据进行repartition的时候(如groupby或者shuffle)才会把tuple通过network发送出去,
三、Trident 概念之Operation
在包storm.trident.operation 及子包下
Operation类相关概念有:
· Function :如BaseFunction,类如TridentWordCount中用的Split、
如BaseQueryFunction, TridentWordCount中用的MapGet,从State中查询
· Filter:如BaseFilter ,如TridentWordCount中的FilterNull
· 聚合类:
CombinerAggregator<T>
Aggregator<T>
ReducerAggregator<T>
Functions(函数)
假设有一个叫“mystream”输入流有[“a”,“b”,“c“]三个字段
[1, 2, 3]
[4, 1, 6]
[3, 0, 8]
运行:mystream.each(new Fields("b"), new MyFunction(), new Fields("d")))
运行的结果将会有4个字段[“a”,“b”,“c”,“d”],如下:
[1, 2, 3, 0]
[1, 2, 3, 1]
[4, 1, 6, 0]
Filters(过滤)
Filters接收一个元组(tuple),决定是否需要继续保留这个元组。比如:
假设有如下输入:
[1, 2, 3]
[2, 1, 1]
[2, 3, 4]
运行下面的代码:
mystream.each(new Fields("b","a"), new MyFilter())
结果将会如下:
[2, 1, 1]
聚合
聚合接口:
CombinerAggreator:在每个tuple上运行init,使用combine去联合结果 。如果批次没有数据,运行zero函数。
ReduceAggregator:在init()初始化的时候产生一个值,每个输入的元组在这个值的基础上进行迭代并输出一个单独的值。
Aggregate:功能最强大
1. Init函数在执行批次操作之前被调用,并返回一个state对象,这个对象将会会传入到aggregate和complete函数中。
2. Aggregate会对批次中每个tuple调用,这个方法可以跟新state也可以发射(emit)tuple。
3. 当这个批次分区的数据执行结束后调用complete函数。
aggregate和persistentAggregate函数对流做聚合。Aggregate在每个批次上独立运行,persistentAggregate聚合流的所有的批次并将结果存储下来。
ITridentSpout:最通用的Spout,可以支持事务或者不透明事务语义。
IBatchSpout: 一个非事务spout 。
IPartitionedTridentSpout: 分区事务spout,从数据源(比如一个Kafka集群)读分区数据
IOpaquePartitionedTridentSpout:不透明分区事务spout,从数据源读分区数据
接口变动
例如:
简单概括总体流程就是:
trident在执行时每批先调用 getPartitionsForBatch()如果发现返回的Partitions对象和上一批的不相等,则会先后调用 getOrderedPartitions(Integer allPartitionInfo) 和 refreshPartitions(List partitionResponsibilities) 方法,否则不会调用这两个方法。
getOrderedPartitions根据getPartitionsForBatch返回的Partitions对象生成一个Partition列表,refreshPartitions根据getOrderedPartitions返回的Partition列表做一些类似于connections to brokers的操作。
然后再调用emitPartitionBatchNew或者emitPartitionBatch方法。其中emitPartitionBatchNew的partition参数在0.9.0之前是int类型的,现在改成Partition类型,就是getOrderedPartitions返回的List中的一个元素。
其他方法和之前版本都一致。
二、Trident Bolt
唯一显性Bolt接口:ITridentBatchBolt,但很少用。
Trident编程特点就是Stream。
Trident的topology会被编译成尽可能高效的Storm topology。只有在需要对数据进行repartition的时候(如groupby或者shuffle)才会把tuple通过network发送出去,
三、Trident 概念之Operation
在包storm.trident.operation 及子包下
Operation类相关概念有:
· Function :如BaseFunction,类如TridentWordCount中用的Split、
如BaseQueryFunction, TridentWordCount中用的MapGet,从State中查询
· Filter:如BaseFilter ,如TridentWordCount中的FilterNull
· 聚合类:
CombinerAggregator<T>
Aggregator<T>
ReducerAggregator<T>
Functions(函数)
public class MyFunction extends BaseFunction { public void execute(TridentTuple tuple, TridentCollector collector) { for(int i=0; i < tuple.getInteger(0); i++) { collector.emit(new Values(i)); } } }
假设有一个叫“mystream”输入流有[“a”,“b”,“c“]三个字段
[1, 2, 3]
[4, 1, 6]
[3, 0, 8]
运行:mystream.each(new Fields("b"), new MyFunction(), new Fields("d")))
运行的结果将会有4个字段[“a”,“b”,“c”,“d”],如下:
[1, 2, 3, 0]
[1, 2, 3, 1]
[4, 1, 6, 0]
Filters(过滤)
Filters接收一个元组(tuple),决定是否需要继续保留这个元组。比如:
public class MyFilter extends BaseFilter{ public booleanisKeep(TridentTuple tuple) { return tuple.getInteger(0) == 1 && tuple.getInteger(1) == 2; } }
假设有如下输入:
[1, 2, 3]
[2, 1, 1]
[2, 3, 4]
运行下面的代码:
mystream.each(new Fields("b","a"), new MyFilter())
结果将会如下:
[2, 1, 1]
聚合
聚合接口:
CombinerAggreator:在每个tuple上运行init,使用combine去联合结果 。如果批次没有数据,运行zero函数。
ReduceAggregator:在init()初始化的时候产生一个值,每个输入的元组在这个值的基础上进行迭代并输出一个单独的值。
Aggregate:功能最强大
1. Init函数在执行批次操作之前被调用,并返回一个state对象,这个对象将会会传入到aggregate和complete函数中。
2. Aggregate会对批次中每个tuple调用,这个方法可以跟新state也可以发射(emit)tuple。
3. 当这个批次分区的数据执行结束后调用complete函数。
aggregate和persistentAggregate函数对流做聚合。Aggregate在每个批次上独立运行,persistentAggregate聚合流的所有的批次并将结果存储下来。
发表评论
-
ITridentSpout、FirstN(取Top N)实现、 流合并和join
2017-05-25 10:01 1029一、ITridentSpout 基于事务 static int ... -
Trident实战之计算网站PV
2017-05-24 13:24 6451、Trident实战之计算网站PV /** * ... -
Trident入门
2017-05-22 13:44 511英文原址:https://github.com/nathanm ... -
分布式远程调用drpc实例
2017-05-22 10:53 414一、DRPC定义 分布式dRPC(distributed RP ... -
不透明分区事务IOpaquePartitionedTransactional实例
2017-05-22 10:54 6751、spout public class MyOpaq ... -
分区事务IPartitionedTransactionalSpout实例
2017-05-21 11:02 5781.分区事务spout public class My ... -
普通事务ITransactionalSpout实例之按天统计数据
2017-05-20 16:56 4811、普通事务Spout /** * 普通事务Spou ... -
普通事务ITransactionalSpout实例
2017-05-20 15:45 8171、普通事务Spout /** * 普通事务Spou ... -
Storm事务API
2017-05-19 16:00 610Spout ITransactionalSpout<T& ... -
Storm批处理事务原理详解
2017-05-19 15:54 2093事务:Storm容错机制通 ... -
集群统一启动和停止shell脚本开发
2017-05-17 09:56 4461、cd 2、ls -al 显示隐藏目录 3、rm -rf ... -
storm高并发UV统计
2017-05-14 22:05 1125统计高并发UV可行的方案(类似WordCount的计算去重wo ... -
storm高并发PV统计,利用zookeeper锁输出汇总值
2017-05-14 14:42 891汇总型方案: 1、shuffleGrouping下,pv(单线 ... -
storm高并发PV统计
2017-04-16 17:54 681一、PV统计思考 方案需要考虑分析多线程下,注意线程安全问题。 ... -
Storm高并发运用WordSum
2017-04-16 14:21 10661、创建发射所有字符串统计总个数及去重个数处理类 pub ... -
storm分组策略介绍
2017-04-16 11:46 699一、storm数据来源 Spout的数据源: MQ:直接流数 ... -
Storm高并发介绍
2017-04-16 10:18 585并发度: worker:指的是component (spo ... -
Storm 字符统计Demo
2017-04-14 13:57 5311、数据源读取,字符发射spout类 /** * 字符 ... -
Storm 本地模式
2017-04-09 22:25 392本地模式,是在eclipse等编译器编写strom运行文件 ... -
Storm启动配置
2017-03-29 17:40 666一、安装Storm wget ...
相关推荐
一、Trident API 的核心概念 1. Stream:Stream 是 Trident 的基本数据结构,代表了一连串不断流入系统的事件。它们可以源自外部数据源,也可以由其他操作创建。每个 Stream 都由多个批次(Batch)组成,每个 Batch...
总结来说,Trident为大规模实时流数据处理提供了高效且可靠的解决方案,通过其高级的API和优化的处理模式,使得处理复杂的数据流变得更加简单,特别适合像雅虎这样需要实时分析用户行为的大公司。在大数据时代,...
4. **Emulsion概念**:这个概念可能体现在Trident的设计哲学上,即通过融合AI和其他先进技术,提供一个集成度高、用户体验优良的浏览器环境。 5. **浏览器扩展和API**:作为一款现代化的浏览器,Trident可能会提供...
Apache Storm 是一个开源的分布式...总结,Apache Storm-0.9.1 API 参考文档为开发者提供了详细指导,涵盖了从基本概念、组件实现、拓扑构建到集群管理和性能调优的全方位知识,帮助开发者高效地构建实时数据处理系统。
这个项目是 Storm's Trident 的游乐场。 在这个项目中,您可以找到我用于柏林的 Trident hackaton @ Big Data ... 包含 hackaton 会话内容的博客文章: ://www.datasalt.com/2013/04/an-storms-trident-api-overview/
Apache Storm的核心概念是拓扑(Topology),它由 bolts(处理组件)和 spouts(数据源)组成。Bolts 执行业务逻辑,而 Spouts 生成数据流。这些组件通过流(Stream)连接,形成一个有向无环图(DAG),在集群中...
Storm通过其Trident API支持微批处理,而Storm拓扑可以表达为有向无环图(DAG),这使它非常适合需要低延迟处理的流式数据场景。 Apache Samza是一个分布式流处理框架,它基于Kafka进行数据流的处理和任务的分发。...
综上所述,Apache Storm是一个强大的实时计算平台,通过理解和掌握其核心概念、API以及相关工具的使用,开发者可以构建出高效、可靠的实时数据处理系统。而源码阅读和pom.xml文件的解析,则是深入学习和优化项目的...
9. **进阶主题**:如多语言支持、 Trident API的使用、与其他大数据组件(如Hadoop、Kafka)的集成等。 通过这个压缩包的学习,用户可以从基础到进阶全面了解并掌握Apache Storm,从而在实际工作中有效地利用这一...
项目中讲解了Kafka的基本概念、集群搭建、Java API开发测试以及storm-kafka插件的使用,强调了Kafka的拉取(Pull)消费模式和分区与副本的概念。 3. **CDH5**:Cloudera Data Hub (CDH5) 是一个全面的Hadoop发行版...
对照学习能够帮助读者更好地理解和掌握Storm的核心概念和技术细节。 **标签解析:** "实时大数据"标签表明Storm主要用于处理大数据的实时分析。在大数据领域,实时性是关键,Storm能够实时处理数据流,这对于需要...
【标题】"Storm入门"指的是对Apache Storm这一分布式实时计算系统的...这份PDF文件对于初学者来说是一份宝贵的资源,可以帮助他们快速掌握Storm的基本概念和操作。建议读者结合实际操作,边学边练,以加深理解和应用。
Trident是Storm提供的高级API,它提供了更强大的状态管理和事务性保证。Trident将一个复杂的实时处理任务分解为一系列简单的操作,这些操作在数据流上以原子方式执行。 5. **容错机制** Storm通过检查点和故障...
此外,书中还介绍了Storm的内部工作原理和Trident API,Trident是Storm提供的高级抽象,它使得开发更为复杂的数据处理逻辑变得简单。 在资源分配方面,资源竞争是分布式系统中常见的问题。Storm通过资源管理来确保...
这个名为 "apache-storm-0.9.7.tar.gz" 的压缩包包含的是 Apache Storm 的0.9.7版本,它是软件的老版本,但仍然对理解Storm的核心概念和技术架构具有重要价值。 Storm 的核心理念是提供一种可靠且容错的数据流处理...
书中可能还涵盖了如何使用 Trident API 来实现状态管理和复杂的窗口操作。 4. **监控与故障排查**:Storm提供了强大的监控工具,如Nimbus(主控节点)、Supervisor(工作节点管理)和Zookeeper(协调服务)。书中会...
此外,理解并掌握Trident API,它是Storm提供的一种高级抽象,用于构建可靠且容错的实时处理应用,是企业级应用的关键。 接下来是“运维”部分。Storm集群的管理和维护包括节点监控、故障排查、资源调度等。使用...
OurJS 目前完全兼容 PC 端的 IE6 、Firefox、Chrome、Safari、Opera 以及其他使用 Trident 和 WebKit 内核的浏览器。稍后还会对移动设备提供支持。 设计思想: 不创造 JS 和 DOM 范畴之外的概念。它们本身就在不断...
此外,书中的实例部分将展示如何编写自定义的Spout和Bolt,以及如何使用 Trident API 实现更复杂的实时处理逻辑。Trident是Storm的一个高级接口,它提供了状态管理和事务性保证,使得实时处理更加稳定可靠。 书中还...
分布式协调框架 ZooKeeper 是分布式集群技术的基础,ZooKeeper 基本概念和体系结构、ZooKeeper 集群的安装、操作 ZooKeeper、ZooKeeper 编程 API 等内容将为读者提供了分布式协调框架 ZooKeeper 的基础知识。...