
Storm框架
netcobol
这个作者很懒,什么都没留下…
展开
-
Storm 从入门到精通 第二十四讲 Storm 批处理事务 - Storm自带的例子TransactionalGlobalCount
TransactionalGlobalCount :统计多个分区的单词数总和。此处3个分区,共计19个单词。分区的概念:学习MQ,kafka分区等等,主要用于提高消息read吞吐量。MemoryTransactionalSpout MemoryTransactionalSpout spout = new MemoryTransactionalSpout(DATA, new Fields("word...原创 2018-04-07 14:43:28 · 634 阅读 · 0 评论 -
Storm 从入门到精通 第十三讲 Stream Grouping-Custom Grouping
除了以上几种分组方式之外,我们还可以自己自定义分组,自己DIY去控制哪些Blot来接收Tuple;实现自定义分组需要继承backtype.storm.grouping.CustomStreamGrouping 接口我们现在业务中遇到一个问题想让用户的uid按照分段的规则grouping到对应的task上面,于是采用uid%k的方法将相同模值的记录在一个task进行业务处理,自己实现了ModStre...原创 2018-04-03 14:55:15 · 491 阅读 · 0 评论 -
Storm 从入门到精通 第十四讲 Storm Word Count 示例讲解
统计的问题1. 解决统计单词在文章中出现的频率问题? 例如:Apache Storm is a free and open source distributed realtime computation system. Storm makes it easy to reliably process unbounded streams of data, doing for realtime pro...原创 2018-04-03 18:26:55 · 581 阅读 · 0 评论 -
Storm 从入门到精通 第十五讲 Storm Word Count 示例代码
1. CountWordTopologypackage com.john.learn.storm.countword;import org.apache.storm.Config;import org.apache.storm.LocalCluster;import org.apache.storm.topology.TopologyBuilder;import org.apache.s...原创 2018-04-03 18:35:10 · 666 阅读 · 0 评论 -
Storm 从入门到精通 第十六讲 Storm 可靠性 - ack 与 fail 及 数据拆分(多Bolt处理),事务不一致
Spout是 Storm数据流的入口,在设计拓扑时,一件很重要的事情就是需要考虑消息的可靠性,如果消息不能被处理而丢失是很严重的问题。以一个传递消息并且实时处理的例子,来说明这个问题。Message Spout: 发送一批数据, 格式使用逗号分隔, 共计4条Subject,每个Subject 包含两个单词。private static final String[] Subjects = new S...原创 2018-04-04 13:42:29 · 1167 阅读 · 1 评论 -
Storm 从入门到精通 第十七讲 Storm 可靠性 - ack 与 fail 及 事务一致性
上一章,讲解ack 与 fail的使用, 到由于数据拆分到多个Bolt 导致数据事务不一致性问题,如何解决呢?1. 使用Batch 处理,比较简单,但无法享受分布式计算带来的好处,高性能。2. 手工记录 成功数据 (Message Id + Data ID) 避免重复。程序代码:DatabaseSimulatorDataStoragepackage com.john.learn.storm.rel...原创 2018-04-04 13:49:04 · 565 阅读 · 0 评论 -
Storm 从入门到精通 第十八讲 Storm 可靠性 - 机制讲解
一个tuple被”完全处理”是什么意思?就如同蝴蝶效应一样,从spout发射的一个tuple可以引起其它成千上万个tuple因它而产生, 想想那个计算一篇文章中每个单词出现次数的topology.TopologyBuilder builder = new TopologyBuilder();builder.setSpout(1, new KestrelSpout("kestrel.backtyp...原创 2018-04-05 16:27:41 · 615 阅读 · 0 评论 -
Storm 从入门到精通 第十九讲 Storm DRPC 简介及设计思想
1. DRPC 简介分布式RPC( distributed RPC,DRPC)Storm里面引入DRPC主要是利用 Storm的实时计算能力来并行化CPU密集型( CPU Intensive)的计算任务。DRPC的 Storm Topology以函数的参数流作为输入,而把这些函数调用的返回值作为 Topology的输出流。DRPC其实不能算是Storm本身的一个特性,它是通过组合Storm的Str...原创 2018-04-06 21:19:04 · 2384 阅读 · 0 评论 -
Storm 从入门到精通 第二十讲 Storm DRPC 简单示例
这里简单Echo程序:1. BasicDRPCTopologypackage com.john.learn.storm.drpc.basic;import java.util.Arrays;import java.util.Scanner;import org.apache.storm.Config;import org.apache.storm.LocalCluster;impor...原创 2018-04-06 21:24:34 · 1043 阅读 · 0 评论 -
Storm 从入门到精通 第二十一讲 Storm DRPC 之 官方复杂示例 TiwtterReachTopology
1. 示例需求解决在微博、论坛进行转发帖子的时候, 是对URL进行转发,分析给粉丝(关注我的人),那么每一个人的粉丝(关注者可能会有重复的情况),需求就是统计一下帖子(URL)的转发人数2. 解决方案实现步骤如下: 第一:获取当前转发帖子的人。 GetTweetersBolt 第二:获取当前人的粉丝(关注者)。GetFollowersBolt 第三:进行粉丝去重。PartialUniq...原创 2018-04-06 21:46:45 · 743 阅读 · 0 评论 -
Storm 从入门到精通 第二十二讲 Storm 批处理事务-原理详解
1. 批处理对于容错机制,Storm通过一个系统级别的组件acker,结合xor校验机制判断一个tuple是否发送成功,进而spout可以重发该tuple ,保证一个tuple在出错的情况下至少被重发一次。但是在需要精确统计tuple的数量如销售金额场景时,希望每个tuple”被且仅被处理一次” 。Storm 0.7.0引入了Transnational Topology, 它可以保证每个tupl...原创 2018-04-07 11:06:32 · 650 阅读 · 0 评论 -
Storm 从入门到精通 第二十三讲 Storm 批处理事务 - 事务API
1. 事务APISpout (难点)ITransactionalSpout<T>,同BaseTransactionalSpout<T>,普通事务SpoutIPartitionedTransactionalSpout<T> --分区事务,增加消息队列吞吐量,同BasePartitionedTransactionalSpout<T>,分区事务SpoutI...原创 2018-04-07 12:59:48 · 729 阅读 · 0 评论 -
Storm 从入门到精通 第十二讲 Stream Grouping-None Grouping、Direct Grouping 和LocalOrShuffle Grouping
None Grouping、Direct Grouping 和LocalOrShuffle Grouping 最不常用三种分组None Grouping: 不关注并行处理负载均衡策略时使用该方式,目前等同于Shuffle Grouping,另外Storm将会把bolt任务和他的上游提供数据的任务安排在同一个线程下。Direct Grouping:由Tuple的发射单元直接决定Tuple将发射给那...原创 2018-04-03 14:53:41 · 2039 阅读 · 0 评论 -
Storm 从入门到精通 第十一讲 Stream Grouping - Global Grouping
Global Grouping全局分组:这个Tuple被分配到Storm中的一个Bolt的其中一个Task, 再具体一点就是分配给task_id值最低的那个TaskPrintWriterToplogyOnGlobalGroupConfig 示例运行结果:有且仅有1个WriterBolt文件(尽管 WriterBolt 8个Executors)...原创 2018-04-03 14:50:32 · 559 阅读 · 0 评论 -
Storm 从入门到精通 第二十五讲 Storm 批处理事务 - TweetsTransactionalSpout (Base) 【实战运行】《Getting Started With Storm》
问题: 创建一个Twitter分析工具, 要求从一个Redis数据库读取tweets,通过几个bolt处理它们,最后把结果保存在另一个Redis数据库的列表中。处理结果就是所有话题和它们的在tweets中出现的次数列表,所有用户和他们在tweets中出现的次数列表,还有一个包含发起话题和频率的用户列表。1. 题目解释:测试用例Tweet 如下: @John @alex 3. Apache #Sto...原创 2018-04-09 10:30:43 · 452 阅读 · 0 评论 -
Storm 从入门到精通 第一讲 Storm 简介
1. Storm是Twitter开源的一个分布式的实时计算系统,用于数据的实时分析,持续计算,分布式RPC等等官网地址: http://storm.apache.org/index.html2.实时计算用于解决哪些问题a. 最显而易见的就是实时推荐系统,比如我们在淘宝等电商购物网站去买东西我们会在网页旁边或者底端看到与自己所需要商品相关的系列产品。这就是使用类似 Storm实时计算去做的,我们非常...原创 2018-04-02 15:15:43 · 2552 阅读 · 0 评论 -
Storm 从入门到精通 第二讲 Storm体系结构
1. Storm Vs HadoopHadoop上运行的是MapReduce的作业(Job),而在Storm上运行的是TopologyStorm和 Hadoop 关键的区别是:Hadoop的MapReduce作业最终会结束,而Storm的Topology会一直运行(除非显式地杀掉它)如果说批处理的 Hadoop需要一桶桶地搬走水,那么 Storm就好比自来水水管,只要预先接好水管,然后打开水龙头,...原创 2018-04-02 16:10:03 · 1103 阅读 · 0 评论 -
Storm 从入门到精通 第三讲 Storm环境搭建 - Zookeeper 安装
介绍Zookeeper的安装部署。安装部署分三种模式:单机模式、伪分布式模式和分布式模式。单机模式和为分布式比较简单,多用于本地测试调试,下面介绍分布式模式安装部署。注意:3台机器都需要安装zk。对于Zookeeper集群的话,官方推荐的最小节点数为3个。1. 环境信息2. 安装jdk1.73台机器都需要安装jdk1.7[root@log1 local]# mkdir /usr/java[roo...原创 2018-04-02 16:26:38 · 801 阅读 · 0 评论 -
Storm 从入门到精通 第四讲 Storm环境搭建 - Storm 安装
1. 环境信息2. 安装Zookeeper集群参考上一节3. 安装Storm集群log1、log2和log3部署storm集群,log1作为Nimbus节点,log2和log3作为surpervisor节点。(1)下载安装软件并解压 [root@log1 local]# wget https://www.apache.org/dyn/closer.lua/storm/apache-...原创 2018-04-02 16:48:25 · 869 阅读 · 0 评论 -
Storm 从入门到精通 第五讲 Storm 示例 之 Storm API
1. Storm 组件回顾2. Storm API1. 首先编写数据源类: Spout。 a. 继承 BaseRichSpout类 b. 实现 IRichSpout接口 c. 重点需要几个方法进行重写或实现:open、nextTuple 和 DeclareOutputFields 方法2. 继续编写数据处理类:Bolt a. 继承 BaseBasicBolt类 b. ...原创 2018-04-02 17:02:06 · 1362 阅读 · 1 评论 -
Storm 从入门到精通 第六讲 Storm 示例 之 第一个简单实例
1. 第一个简单例子: Spout 将随机发送目前流行的编程语言, Console 输出 及 使用 File 保存出现的语言日志。2. Topology 流程图3. 程序结构4. 程序示例1. PrintWriterSpout: fieldsDeclarer.declare(new Fields("PrintWord"));package com.john.learn.storm.ch01.spo...原创 2018-04-03 09:01:49 · 1343 阅读 · 0 评论 -
Storm 从入门到精通 第七讲 Storm 示例 之 Storm Topology配置说明 -工作进程、平行度、任务数(重要)
工作进程、平行度就、任务数解释1. 第一种情况如上使用默认模式,Node 中运行情况: 1个 JVM 每个Spout、Bolt 一个Executors 一个Task2. 第二种情况说明如下:1. 独立JVM Worker:2 printWriterTopologyBuilder.setNumWorkers(2); public void setN...原创 2018-04-03 09:02:43 · 729 阅读 · 0 评论 -
Storm 从入门到精通 第八讲 Storm Stream Grouping 7 种策略
Topology:一个实时计算应用程序逻辑上被封装在Topology对象中,类似Hadoop中的作业与作业不同的是, Topology会一直运行直到显式地杀死它Storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的一个拓扑结构。一个 Topology是Spouts和Bolts组成的流程图,通过Stream Groupings将图中的 Spouts和Bolts连接起来,完成实时流业...原创 2018-04-03 09:11:09 · 666 阅读 · 0 评论 -
Storm 从入门到精通 第九讲 Stream Grouping -Shuffle Grouping
随机分组(Shuffle Grouping)是最常用的流分组方式,它随机地分发元组到Bolt上的任务,这样能保证每个任务得到相同数量的元组。将流分组定义为混排。这种混排分组意味着来自Spout的输入将混排,或随机分发给此Bolt中的任务。shuffle grouping对各个task的tuple分配的比较均匀。随机分组执行原子操作,这是非常有用的,例如数学运算。但是,如果操作不能被随机分发的话,应...原创 2018-04-03 09:35:06 · 2773 阅读 · 0 评论 -
Storm 从入门到精通 第十讲 Stream Grouping - Fields Grouping
Fields Grouping按字段分组:比如按 UserId来分组,具有同样UserId来分组的Tuple会被发送到到相同的Bolts,而不同的UserId则会被分配到不同的Bolts。应用场景:用于数据分组统计,非常类似于 SQL Group By 关键字, 主要用于分组求和、统计、Avg、Min、Max等等。例如: 求一个学生的总分(Storm 实现)?Student: ID Name ...原创 2018-04-03 09:46:43 · 842 阅读 · 0 评论 -
Storm 从入门到精通 第二十六讲 Storm 批处理事务 - 多PartitionedTransaction(Base) 【实战运行】《Getting Started With Storm》
上一讲 我们讲过了 BaseTransactionalSpout 如何实现 Tweet Transactional Topology, 这讲使用多Partition redis。对一个spout来说,从一个分区集合中读取批次是很普通的。接着这个例子,你可能有很多redis数据库,而tweets可能会分别保存在这些redis数据库里。通过实现IPartitionedTransactionalSpou...原创 2018-04-23 21:29:09 · 416 阅读 · 0 评论