Twitter Storm: DRPC学习
学习途径
网址: http://xumingming.sinaapp.com/756/twitter-storm-drpc/
本文翻译自:https://github.com/nathanmarz/storm/wiki/Distributed-RPC。
Storm里面引入DRPC主要是利用storm的实时计算能力来并行化CPU intensive的计算。DRPC的storm topology以函数的参数流作为输入,而把这些函数调用的返回值作为topology的输出流。
DRPC其实不能算是storm本身的一个特性, 它是通过组合storm的原语spout,bolt, topology而成的一种模式(pattern)。本来应该把DRPC单独打成一个包的, 但是DRPC实在是太有用了,所以我们我们把它和storm捆绑在一起。
DRPC例子
/**
* ExclaimBolt.java
* 版权所有(C) 2013
* 创建:cuiran 2013-01-15 17:26:42
*/
package com.stormdemo.drpc;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.stormdemo.demo.DemoTopology;
import junit.framework.TestCase;
import backtype.storm.drpc.LinearDRPCTopologyBuilder;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.BasicOutputCollector;
import backtype.storm.topology.IBasicBolt;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
/**
* TODO
* @author cuiran
* @version TODO
*/
public class ExclaimBolt implements IBasicBolt {
private static Log log = LogFactory.getLog(ExclaimBolt.class.getName());
/* (non-Javadoc)
* @see backtype.storm.topology.IBasicBolt#cleanup()
*/
@Override
public void cleanup() {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see backtype.storm.topology.IBasicBolt#execute(backtype.storm.tuple.Tuple, backtype.storm.topology.BasicOutputCollector)
*/
@Override
public void execute(Tuple tuple, BasicOutputCollector collector) {
// TODO Auto-generated method stub
log.debug("处理数据");
String input = tuple.getString(1);
log.debug("接收到的数据为:"+input);
collector.emit(new Values(tuple.getValue(0), input + "!"));
}
/* (non-Javadoc)
* @see backtype.storm.topology.IBasicBolt#prepare(java.util.Map, backtype.storm.task.TopologyContext)
*/
@Override
public void prepare(Map stormConf, TopologyContext context) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see backtype.storm.topology.IComponent#declareOutputFields(backtype.storm.topology.OutputFieldsDeclarer)
*/
@Override
public void declareOutputFields(OutputFieldsDeclarer declarer) {
// TODO Auto-generated method stub
declarer.declare(new Fields("id", "result"));
}
/* (non-Javadoc)
* @see backtype.storm.topology.IComponent#getComponentConfiguration()
*/
@Override
public Map<String, Object> getComponentConfiguration() {
// TODO Auto-generated method stub
return null;
}
}
然后写一个测试类
/**
* DRPCTest.java
* 版权所有(C) 2013
* 创建:cuiran 2013-01-15 17:25:37
*/
package com.stormdemo.drpc;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.LocalDRPC;
import backtype.storm.drpc.LinearDRPCTopologyBuilder;
import backtype.storm.topology.TopologyBuilder;
import junit.framework.TestCase;
/**
* TODO
* @author cuiran
* @version TODO
*/
public class DRPCTest extends TestCase {
private static Log log = LogFactory.getLog(DRPCTest.class.getName());
public void testDrpc(){
log.debug("testDrpc开始");
Config conf = new Config();
conf.setDebug(true);
conf.setNumWorkers(2);
conf.setMaxSpoutPending(1);
LocalDRPC drpc=new LocalDRPC();
LocalCluster cluster=new LocalCluster();
LinearDRPCTopologyBuilder builder = new LinearDRPCTopologyBuilder("exclamation");
builder.addBolt(new ExclaimBolt(), 3);
cluster.submitTopology("DRPCTest", conf, builder.createLocalTopology(drpc));
log.debug("传入参数返回的结果:"+drpc.execute("exclamation", "hello"));
cluster.shutdown();
drpc.shutdown();
}
}
运行结果如图:
Twitter Storm: DRPC学习相关推荐
- storm drpc学习
storm drpc 是什么?咋一听觉得挺高大上的,其实也就是那么一回事.就是storm的topology 提供了很多函数,并且函数名唯一,函数里面封装了一些算法操作.只需要在调用的时候指定函数名和传 ...
- storm drpc
转 http://www.cnblogs.com/panfeng412/archive/2012/07/02/storm-common-patterns-of-distributed-rpc.html ...
- 在archlinux上搭建twitter storm cluster
本文详细描述如何在archlinux上搭建twitter storm cluster,转载请注明出处,谢谢. 有关archlinux基本系统安装,请参照archlinux简明安装指南一文,下面以上述为 ...
- Storm入门学习随记
推荐慕课网视频:http://www.imooc.com/video/10055 ====Storm的起源. Storm是开源的.分布式.流式计算系统 什么是分布式呢?就是将一个任务拆解给多个计算机去 ...
- Storm专题一、Storm DRPC 分布式计算
本文译自:https://storm.incubator.apache.org/documentation/Distributed-RPC.html Storm里面引入DRPC主要是利用storm的实 ...
- Storm DRPC 介绍
原文链接:http://blog.csdn.net/jmppok/article/details/16827837,转载请注明原文出处 问题导读: 1.DRPC的作用是什么? 2.DRPC工作流是怎样 ...
- twitter storm常用命令
1.提交Topologies 命令格式:storm jar [jar路径] [拓扑包名.拓扑类名][stormIP地址][storm端口][拓扑名称][参数] eg: storm jar /home/ ...
- twitter storm源码走读之2 -- tuple消息发送场景分析
欢迎转载,转载请注明出处源自徽沪一郎.本文尝试分析tuple发送时的具体细节,本博的另一篇文章<bolt消息传递路径之源码解读>主要从消息接收方面来阐述问题,两篇文章互为补充. worke ...
- Storm DRPC环境搭建笔记
Storm DRPC环境搭建笔记 By Mickey.Pro 1. 安装系统 CentOS 6.3 64bit minimal http://www.osyunwei.com/archives/475 ...
最新文章
- idea数字栏符号含义_关于铂金钻戒的几个常见数字符号含义,你都了解吗
- C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决
- vim 块操作、多文件操作、多窗口操作命令
- cl_ibase_ibintx_buf buffer class
- python中的递归函数是什么_讲解Python中的递归函数
- 教你十分钟快速搭建springBoot项目实战
- DllImport 自动选择x64或x86 dll
- Javascript实现合并单元格
- web安全测试---WebScarab工具介绍(中间攻击,可以修改请求参数)
- 日常一记(11)--word公式输入任意矩阵
- 微信小程序————样式
- 【数据结构】无向图的遍历(广度搜索和深度搜索)
- 数值图形处理软件活图简介
- 小企业仓库管理软件设计开发
- 红光光浴抗衰机制#大健康#红光光浴#红光#种光光学
- 数据结构之链表(LinkedList详解)
- nginx动态黑名单配置2
- VGG16-好莱坞明星识别
- 关于开展我市2012年度专业技术资格评审工作的通知
- 【项目实战课】基于Pytorch的Semantic_Human_Matting(人像软分割)实战