java hadoop rpc_介绍hadoop中rpc协议,底层用什么封装的

展开全部

0、内容

095ff7153a218268cc428ea63ea30883.png

1、hadoop中的RPC框架封装思想

24a662e8ddae083a50622e4e54f163a6.png

2、Hadoop RPC 实现32313133353236313431303231363533e59b9ee7ad9431333363393733方法

69fb30028e180898e83dab9cc5a59212.png

3、服务调用动态转发和负载均衡的实现思考

22dd952e0c6376741c1d658f45db1e7f.png

4、协议代码:

58b9b22eb0347c16478e7aa47c382562.gif

package com.ares.hadoop.rpc;public interface HelloProtocol {    public static final long versionID = 1L;

public String helloMethod(String name);

}

c0fbc029f13ffe807acc9d2fece739ae.gif

5、服务端代码:

5c20ba8e137b1ed31d76b1dfd0c11f6b.gif

package com.ares.hadoop.rpc;

import java.io.IOException;

import org.apache.hadoop.HadoopIllegalArgumentException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.ipc.RPC;

import org.apache.hadoop.ipc.RPC.Builder;

import org.apache.hadoop.ipc.RPC.Server;

import org.apache.log4j.Logger;public class HelloServer implements HelloProtocol {

private static final Logger LOGGER = Logger.getLogger(HelloServer.class);

@Override    public String helloMethod(String name) {        // TODO Auto-generated method stub

LOGGER.debug("name: " + name);        return "Hello, " + name;

}

public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {

Builder builder = new RPC.Builder(new Configuration());

String bindAddress = "HADOOP-NODE1";        int port = 8888;

builder.setBindAddress(bindAddress)

.setPort(8888)

.setProtocol(HelloProtocol.class)

.setInstance(new HelloServer());

Server server = builder.build();

LOGGER.debug("Server start to listen on " + port);

server.start();

}

}

5e19ca725574ff59b79c78f65bb1e53a.gif

6、客户端代码:

33a76fce9c9802a9a28424bfd77f9f15.gif

package com.ares.hadoop.rpc;

import java.io.IOException;

import java.net.InetSocketAddress;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.ipc.RPC;

import org.apache.log4j.Logger;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;public class HelloClientTest {    private static final Logger LOGGER = Logger.getLogger(HelloClientTest.class);

@Before    public void setUp() {

}

@After    public void tearDown() {

}

@Test    public void testHello() throws IOException {        // TODO Auto-generated method stub

LOGGER.debug("RPCClientTest: testHello");

String bindAddress = "HADOOP-NODE1";        int port = 8888;

InetSocketAddress addr = new InetSocketAddress(bindAddress, port);

HelloProtocol proxy = RPC.getProxy(

HelloProtocol.class, HelloProtocol.versionID,

addr, new Configuration());

String resp = proxy.helloMethod("JunneYang");

LOGGER.debug(resp);

resp = proxy.helloMethod("Ares");

LOGGER.debug(resp);

}

}

11fe6841e652fe610435a518620de987.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值