分布式系统详解--框架(Hadoop--RPC协议)

简介: 分布式系统详解--框架(Hadoop--RPC协议)

 分布式系统详解--框架(Hadoop--RPC协议)

      在之前的一篇文章当中已经写过一篇文章是关于RPC通信协议的文章,是    分布式系统详解--基础知识(通信)是讲的关于网络通信的最基本的知识。这篇文章也简单讲一下关于hadoop内部的网络通信。

一、hadoop的RPC模式

C/S模式

基于传输层模式。(TCP/IP)

事件处理模型。(请求、计算、协议)

二、RPC设计目的

调用非本机方法。

不同语言程序之间通讯。

不了解底层通讯,向本地方法一样调用。

三、RPC作用

分布式程序基础(分布式操作系统、分布式计算、分布式软件设计)

垂直应用服务化拆分。

四、RPC特点

封装网络交互

远程调用对象代理

支持容器(Spring、Jetty)

可配置,可扩展

五、hadoop 主要协议

NameNode主要实现了ClientProtocol、DataNodeProtocol、NameNodeProtocol。

Hadoop2.0中存在两个ipc包,分别在hadoop-common和hadoop-yarncommom项目下。分别是hadoop RPC和新的yarn RPC。

六、JAVA代码实现简单hadoop-RPC简单实现测试

6.1 协议接口

/**
 * 
 */
package com.yuyi.rpc;
 
/**
 * @author mcb 
 *
 * 2018年10月15日 上午11:08:02 
 *  RPC中的协议
 */
public interface SayHello {
  
  public static final long versionID=1;
  //协议
  public String sayHello(String words);
 
}

6.2 服务端接口

/**
 * 
 */
package com.yuyi.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.Server;
 
/**
 * @author mcb 
 *
 * 2018年10月15日 上午11:10:50 
 *  RPC中的服务端 实现协议
 * 
 */
public class RPCServer implements SayHello{
 
  
  public String sayHello(String words) {
    // TODO 自动生成的方法存根
    System.out.println("客户端说的话是: "+words);
    
    return "OK~我知道你没有挂掉了~~~";
  }
  
  public static void main(String[] args) {
    
    try {
      Server server = new RPC.Builder(new Configuration())
      .setInstance(new RPCServer())
      .setProtocol(SayHello.class)
      .setBindAddress("127.0.0.1")
      .setPort(6666)
      .build();
      
      server.start();
      System.out.println("server is started... ");
      
    } catch (HadoopIllegalArgumentException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } catch (IOException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    }
    
  }
  
  
  
}

6.3 客户端接口

/**
 * 
 */
package com.yuyi.rpc;
 
import java.io.IOException;
import java.net.InetSocketAddress;
 
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
 
/**
 * @author mcb 
 *
 * 2018年10月15日 上午11:20:11 
 */
 
public class RPCClient {
  private static String sayHello;
 
  public static void main(String[] args) {
    //第一个参数:协议 第二份参数:版本(long整数),第三个参数:地址,第四个参数:configuration。
    try {
      while (true) {
      SayHello sayH = RPC.getProxy(SayHello.class, 1, new InetSocketAddress("127.0.0.1",6666), new Configuration());
      sayHello = sayH.sayHello("我现在活着,心跳正在进行~~~");
      System.out.println(sayHello);
      Thread.sleep(2000);
      }
      
    } catch (IOException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } catch (InterruptedException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    }
    
  }
  
}

启动后结果:

目录
相关文章
|
11天前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
50 1
|
23天前
|
存储 分布式计算 算法
探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
在配置Hadoop集群之前,了解这三种模式的特点、适用场景和配置差异是非常重要的。这有助于用户根据个人需求和资源情况,选择最适合自己的Hadoop运行模式。在最初的学习和开发阶段,单机模式和伪分布式模式能为用户提供便利和成本效益。进而,当用户要处理大规模数据集时,完全分布式模式将是理想的选择。
57 2
|
23天前
|
数据采集 分布式计算 并行计算
Dask与Pandas:无缝迁移至分布式数据框架
【8月更文第29天】Pandas 是 Python 社区中最受欢迎的数据分析库之一,它提供了高效且易于使用的数据结构,如 DataFrame 和 Series,以及大量的数据分析功能。然而,随着数据集规模的增大,单机上的 Pandas 开始显现出性能瓶颈。这时,Dask 就成为了一个很好的解决方案,它能够利用多核 CPU 和多台机器进行分布式计算,从而有效地处理大规模数据集。
48 1
|
18天前
|
分布式计算 资源调度 Hadoop
在YARN集群上运行部署MapReduce分布式计算框架
主要介绍了如何在YARN集群上配置和运行MapReduce分布式计算框架,包括准备数据、运行MapReduce任务、查看任务日志,并启动HistoryServer服务以便于日志查看。
31 0
|
21天前
|
自动驾驶 5G 调度
|
21天前
|
缓存 分布式计算 Java
详细解读MapReduce框架中的分布式缓存
【8月更文挑战第31天】
12 0
|
26天前
|
机器学习/深度学习 编译器 PyTorch
自研分布式训练框架EPL问题之吸引社区参与共建如何解决
自研分布式训练框架EPL问题之吸引社区参与共建如何解决
|
4月前
|
负载均衡 Dubbo Java
Dubbo 3.x:探索阿里巴巴的开源RPC框架新技术
随着微服务架构的兴起,远程过程调用(RPC)框架成为了关键组件。Dubbo,作为阿里巴巴的开源RPC框架,已经演进到了3.x版本,带来了许多新特性和技术改进。本文将探讨Dubbo 3.x中的一些最新技术,包括服务注册与发现、负载均衡、服务治理等,并通过代码示例展示其使用方式。
250 9
|
4月前
|
设计模式 负载均衡 网络协议
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
【分布式技术专题】「分布式技术架构」实践见真知,手把手教你如何实现一个属于自己的RPC框架(架构技术引导篇)
186 0
|
1月前
|
Dubbo 网络协议 Java
RPC框架:一文带你搞懂RPC
这篇文章全面介绍了RPC(远程过程调用)的概念、原理和应用场景,解释了RPC如何工作以及为什么在分布式系统中广泛使用,并探讨了几种常用的RPC框架如Thrift、gRPC、Dubbo和Spring Cloud,同时详细阐述了RPC调用流程和实现透明化远程服务调用的关键技术,包括动态代理和消息的编码解码过程。
RPC框架:一文带你搞懂RPC