学习途径

作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: 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例子

新建一个Bolat作为数据处理
/**
* 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学习相关推荐

  1. storm drpc学习

    storm drpc 是什么?咋一听觉得挺高大上的,其实也就是那么一回事.就是storm的topology 提供了很多函数,并且函数名唯一,函数里面封装了一些算法操作.只需要在调用的时候指定函数名和传 ...

  2. storm drpc

    转 http://www.cnblogs.com/panfeng412/archive/2012/07/02/storm-common-patterns-of-distributed-rpc.html ...

  3. 在archlinux上搭建twitter storm cluster

    本文详细描述如何在archlinux上搭建twitter storm cluster,转载请注明出处,谢谢. 有关archlinux基本系统安装,请参照archlinux简明安装指南一文,下面以上述为 ...

  4. Storm入门学习随记

    推荐慕课网视频:http://www.imooc.com/video/10055 ====Storm的起源. Storm是开源的.分布式.流式计算系统 什么是分布式呢?就是将一个任务拆解给多个计算机去 ...

  5. Storm专题一、Storm DRPC 分布式计算

    本文译自:https://storm.incubator.apache.org/documentation/Distributed-RPC.html Storm里面引入DRPC主要是利用storm的实 ...

  6. Storm DRPC 介绍

    原文链接:http://blog.csdn.net/jmppok/article/details/16827837,转载请注明原文出处 问题导读: 1.DRPC的作用是什么? 2.DRPC工作流是怎样 ...

  7. twitter storm常用命令

    1.提交Topologies 命令格式:storm jar [jar路径] [拓扑包名.拓扑类名][stormIP地址][storm端口][拓扑名称][参数] eg: storm jar /home/ ...

  8. twitter storm源码走读之2 -- tuple消息发送场景分析

    欢迎转载,转载请注明出处源自徽沪一郎.本文尝试分析tuple发送时的具体细节,本博的另一篇文章<bolt消息传递路径之源码解读>主要从消息接收方面来阐述问题,两篇文章互为补充. worke ...

  9. Storm DRPC环境搭建笔记

    Storm DRPC环境搭建笔记 By Mickey.Pro 1. 安装系统 CentOS 6.3 64bit minimal http://www.osyunwei.com/archives/475 ...

最新文章

  1. idea数字栏符号含义_关于铂金钻戒的几个常见数字符号含义,你都了解吗
  2. C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决
  3. vim 块操作、多文件操作、多窗口操作命令
  4. cl_ibase_ibintx_buf buffer class
  5. python中的递归函数是什么_讲解Python中的递归函数
  6. 教你十分钟快速搭建springBoot项目实战
  7. DllImport 自动选择x64或x86 dll
  8. Javascript实现合并单元格
  9. web安全测试---WebScarab工具介绍(中间攻击,可以修改请求参数)
  10. 日常一记(11)--word公式输入任意矩阵
  11. 微信小程序————样式
  12. 【数据结构】无向图的遍历(广度搜索和深度搜索)
  13. 数值图形处理软件活图简介
  14. 小企业仓库管理软件设计开发
  15. 红光光浴抗衰机制#大健康#红光光浴#红光#种光光学
  16. 数据结构之链表(LinkedList详解)
  17. nginx动态黑名单配置2
  18. VGG16-好莱坞明星识别
  19. 关于开展我市2012年度专业技术资格评审工作的通知
  20. 【项目实战课】基于Pytorch的Semantic_Human_Matting(人像软分割)实战

热门文章

  1. Android应用开发获取手机电池电量的简单方法
  2. 算法竞赛入门经典 例题6-21
  3. (转)Linux下管道的原理
  4. Linux管道通信【操作系统】利用pipe
  5. Spring @Scheduled定时任务的fixedRate,fixedDelay,cron的作用和不同
  6. CSS实现图片自适应布局
  7. 定义一个名为Cylinder类表示圆柱,它继承Circle类
  8. 卷积与反卷积(转置卷积)关系的公式推导 及其各自的形式
  9. 进程与程序的联系与区别
  10. socket编程之accept()函数