Hadoop筆記一之Java中Rpc通訊__hadoop

來源:互聯網
上載者:User

前言:

       本例中預設已經在eclipse中建立一個maven工程並配置hadoop資源。以下是pom.xml的配置資訊

       

概述:

      1: 在一個jvm中一個對象可以調用另一個對象的資源,但是如果是多個jvm,jvmA中的對象調用jvmB中的對象則需要藉助於RPC協議來完成此操作。

      :2:Rpc協議採用的是CS結構,請求方相當於一個客戶機被請求方相當於伺服器。

       3:Java在使用Rpc協議通訊時需使用介面org.apache.hadoop.ipc.VersionedProtocol來完成此功能。此介面中聲明了兩個方法:getProtocolVersion返回版本號碼,getProtocolSignature返回簽名。

例子:

 例子中代碼分四部分。client、server、server的自訂協議,server自訂協議的實現

 圖1、client代碼

  

   

  圖 2、server代碼

        

       

    圖 3、 server端繼承的VersionedProtocol介面

       


       圖4、server端介面的實現

       


    運行結果

      啟動server端,啟動client端,分別查看server和client控制台

  圖5  client控制台


   圖6   server控制台,server一直沒有結束處於監聽狀態


       

代碼總結:

       圖1:Client配置了要訪問的ip地址和連接埠然後得到了一個代理,當調用heartBeat方法時向伺服器端發送一個請求將簽名資訊以及其他的參數傳遞過去,接受返回後結束。圖5就是client的輸出。

       圖2:Server配置了需要監聽的ip地址和連接埠並實現了org.apache.hadoop.ipc.VersionedProtocol介面完成自己的邏輯,當請求發送過來後他會接收Client發送過來的參數然後執行自己的邏輯,之後將傳回值返回給Client。然後Client接收到傳回值後就結束而Server則繼續監聽狀態等待下一次的訪問。

       實際應用中Client可以把自己的狀態資訊發送給Server由Server對所有的Client進行處理。


總結:

       Server實現一個聲明了很多方法的介面並對外暴露此介面,Client通過調用此介面中聲明的方法向server發送資訊從而實現了與server的通訊。而我們就稱此介面為RPC通訊協定,當然這是我的理解。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.