RPC通信_远程调试——Hadoop

本文详细介绍了Hadoop中RPC通信机制的实现,通过示例代码展示了如何创建RPCServer和RPCClient,以及如何实现远程过程调用。此外,还深入解析了JPDA技术在Hadoop远程调试中的应用,包括如何配置JVM参数以启用远程调试,以及如何在Eclipse中进行远程调试。

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

1. 通信

RPCServer.java

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.Server;

public class RPCServer implements Bizable{

    public String sayHi(String name) {
        return "Hi~ " + name;              
    }           
    public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {

        Configuration conf = new Configuration();
        Server server = new RPC.Builder(conf).setProtocol(Bizable.class).setInstance(new RPCServer()).setBindAddress("100.168.1.182").setPort(9527).build();
        server.start();
    }
}

Bizable.java (定义接口)

public interface Bizable {  
    // 字段 任意 versionID 
    public static final long versionID = 100000;    
    public String sayHi(String name);
}

RPCClient.java

import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

public class RPCClient {
    public static void main(String[] args) throws IOException {
        // version      
        Bizable proxy = RPC.getProxy(Bizable.class, 10010, new InetSocketAddress("100.168.1.182",9527), new Configuration());
        String result = proxy.sayHi("tomcat");
        System.out.println(result);
        RPC.stopProxy(proxy);
    }
}

2. 远程调试——Hadoop

JPDA 简介
Sun Microsystem 的 Java Platform Debugger Architecture (JPDA) 技术是一个多层架构,使您能够在各种环境中轻松调试 Java 应用程序。JPDA 由两个接口(分别是 JVM Tool Interface 和 JDI)、一个协议(Java Debug Wire Protocol)和两个用于合并它们的软件组件(后端和前端)组成。它的设计目的是让调试人员在任何环境中都可以进行调试。
更详细的介绍,您可以参考使用 Eclipse 远程调试 Java 应用程序
JDWP 设置
JVM本身就支持远程调试,Eclipse也支持JDWP,只需要在各模块的JVM启动时加载以下参数:

dt_socket表示使用套接字传输。
address=8000
JVM在8000端口上监听请求,这个设定为一个不冲突的端口即可。
server=y
y表示启动的JVM是被调试者。如果为n,则表示启动的JVM是调试器。
suspend=y
y表示启动的JVM会暂停等待,直到调试器连接上才继续执行。suspend=n,则JVM不会暂停等待。

需要在$HADOOP_HOME/etc/hadoop/hadoop-env.sh文件的最后添加你想debug的进程
1. 远程调试namenode
export HADOOP_NAMENODE_OPTS=”-agentlib:jdwp=transport=dt_socket,address=8888,server=y,suspend=y”

  1. 远程调试datanode
    export HADOOP_DATANODE_OPTS=”-agentlib:jdwp=transport=dt_socket,address=9888,server=y,suspend=y”

  2. 远程调试RM
    export YARN_RESOURCEMANAGER_OPTS=”-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y”

  3. 远程调试NM
    export YARN_NODEMANAGER_OPTS=”-agentlib:jdwp=transport=dt_socket,address=10888,server=y,suspend=y”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值