Hadoop的RPC调用示例

本文介绍了一个简单的Hadoop RPC服务实现案例,包括定义通讯协议接口、实现类、服务发布类及客户端访问类等核心部分,并提供了启动服务的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义一个通讯协议的接口

public interface ClientNamenodeProtocal {

    long versionID = 1L;

    String getMetaData(String path);

}

实现类

public class MyNameNode implements ClientNamenodeProtocal{

    @Override
    public String getMetaData(String path){

        return path+":3 - {blk_1,blk_2,blk_3}";
    }
}

服务发布类

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

import java.io.IOException;

/**
 * @author snow
 */
public class PublishServiceUtil {

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

        //建造者
        RPC.Builder builder = new RPC.Builder(new Configuration());

        builder.setBindAddress("localhost")
                .setPort(8888)
                .setProtocol(ClientNamenodeProtocal.class)
                .setInstance(new MyNameNode());

        //获取服务端对象
        RPC.Server server = builder.build();

        //启动服务器
        server.start();
    }
}

客户端访问类

import com.ghq.rpc.ClientNamenodeProtocal;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

import java.io.IOException;
import java.net.InetSocketAddress;

/**
 * @author snow
 */
public class MyHdfsClient {

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

        ClientNamenodeProtocal proxy = RPC.getProxy(ClientNamenodeProtocal.class, 1L,
                new InetSocketAddress("localhost", 8888), new Configuration());


        String metaData = proxy.getMetaData("test01");

        System.out.println(metaData);
    }
}

执行步骤:

  1. 启动PublishServiceUtil类
  2. 启动MyHdfsClient类,即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值