Hadoop RPC實例

本文發表于本人博客

????上次寫了個hadoop偽分布環境搭建的筆記了,今天來說下hadoop分布式構建的基礎RPC,這個RPC在提交Job任務的時候底層就是創建了RPC來實現遠程過程調用服務端。

????我們首先可以通過Job的waitForCompletion(boolean verbose)方法來跟蹤代碼,按照順序往下查看源碼,在JobClient中發現了:

      this.rpcJobSubmitClient = createRPCProxy(JobTracker.getAddress(conf), conf);this.jobSubmitClient = createProxy(this.rpcJobSubmitClient, conf);

我們可以發現createProxy()方法返回的是JobSubmissionProtocol接口,而這個接口實際上繼承VersionedProtocol接口,可以查看這個接口的說明:

/*** Superclass of all protocols that use Hadoop RPC.* Subclasses of this interface are also supposed to have* a static final long versionID field.*/

可以看到是所有hadoopRPC的協議超類。那我們來使用這個接口實現在server以及client中RPC。看下面代碼:

conf文件類:

/*** RPC 配置* @author Administrator**/
public class conf {public static final String ADDR = "localhost";public static final int PORT = 9000;public static final long version = 123456L;
}

Operator文件類:

interface OperatorAble extends VersionedProtocol {/*** 說話* @param name* @return*/public String Talk(String name);
}
public class Operator implements OperatorAble {/*** 說話* @param name* @return*/@Overridepublic String Talk(String name){System.out.println("Operator is call......");return "hello:" + name;}@Overridepublic long getProtocolVersion(String protocol, long clientVersion) throws IOException{return conf.version;}
}

Server文件類:

/*** RPC 服務端* @author Administrator**/
public class Server {public static void main(String[] args) throws Exception {org.apache.hadoop.ipc.RPC.Server server = RPC.getServer(new Operator(), conf.ADDR, conf.PORT, new Configuration());server.start();}
}

Client文件類:

/*** RPC 客戶端* @author Administrator**/
public class Client {public static void main(String[] args) throws Exception  {OperatorAble proxy = (OperatorAble)RPC.waitForProxy(OperatorAble.class, conf.version, new InetSocketAddress(conf.ADDR, conf.PORT), new Configuration());for (int i = 0; i < 100000; i++) {String talk = proxy.Talk("luoliang.me");System.out.println(talk);}RPC.stopProxy(proxy);}}

這里特別需要注意一下的就是實現VersionedProtocol接口的時候,如果直接實現這個接口那么我可以想想在客戶端怎么來通過接口調用啊,而這個VersionedProtocol接口是沒有我們需要的功能,那只有重新創建一個OperatorAble接口再繼承次VersionedProtocol接口了,在客戶端那邊使用OperatorAble來遠程過程調用!當執行

String talk = proxy.Talk("luoliang.me");

時,在服務端就會輸出

Operator is call......

這樣表示服務端已經調用了!大家可以按照剛才的思路跟蹤下去看看他們是怎么做的,這里就不說了。

這次先到這里。堅持記錄點點滴滴!



轉載于:https://www.cnblogs.com/luoliang/p/4166532.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248380.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248380.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django 模板語言 標簽

前言&#xff1a;django的模板語法基本和flask的jinja2基本一樣。下面比較一下兩個模板語法的區別。 &#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;深度變量的查找&#xff08;萬能的句點號&#xff09; 在 Django 模板中遍歷復雜數據結構的關鍵是…

電子書下載:Illustrated C# 2012 4th

下載&#xff1a;http://www.ctdisk.com/file/9015906轉載于:https://www.cnblogs.com/MaxWoods/archive/2012/08/26/2657752.html

關于83版射雕英雄傳

今天無意中看到網上一群人關于83版射雕的一些爭論.或許一些現在的年輕人不喜歡83版射雕,說那太老土了,但想想那個時代的條件,能拍出這樣的片子,是非常不錯的,而且我覺得83版射雕也是最忠于原著的,跟后來的翻版比較,雖然從畫面效果,人物服裝方面存在差距,但這都是由于歷史原因和…

ZOJ 3735 Josephina and RPG

思路&#xff1a;dp[i][j]:第i輪打完后&#xff0c;決定以j陣容打下一輪 保持原有陣容&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ] * p [ j ][ s [ i ] ] 換成第i輪怪的陣容: for(int k0;k<r;k)dp[i][j]max(dp[i][j],dp[i-1][k]*p[k][s[i]]) 優化&#xff1a;用滾動數組&am…

4~20mA電流輸出芯片XTR111完整電路(轉)

源&#xff1a; 4~20mA電流輸出芯片XTR111完整電路轉載于:https://www.cnblogs.com/LittleTiger/p/10511115.html

電子書下載:Programming Microsoft LINQ in Microsoft .NET Framework 4

Book DescriptionDig into LINQ — and transform the way you work with data. With LINQ, you can query data from a variety of sources — including databases, objects, and XML files — directly from Microsoft Visual Basic or C#. Guided by data-access experts w…

原型模式 —— Java的賦值、淺克隆和深度克隆的區別

賦值 直接 &#xff0c;克隆 clone 假如說你想復制一個簡單變量。很簡單&#xff1a; int a 5; int b a; b 6;這樣 a 5, b 6 不僅僅是int類型&#xff0c;其它七種原始數據類型(boolean,char,byte,short,float,double.long)同樣適用于該類情況。 但是如果你復制的是一個…

一個醫院院長電視機壞了,拿到一個大修理店去修

一個醫院院長電視機壞了&#xff0c;拿到一個大修理店去修。修理店接待人員:“OK&#xff0c;開機費50元”醫院院長: “為什么還沒修理就要先交費”&#xff1f;修理店接待人員: “我們修理店的制度就是這樣&#xff0c;你們醫院的掛號費&#xff0c;不是沒看病之前就要交嗎”&…

[scrum]2011/9/24-----第四天

scrum 總結&#xff1a; Team member Yesterday’s Work Today’s Work Issue R X Task201&#xff1a;Active Agenda Page的重寫&#xff0c;界面設置 Task201&#xff1a;Active Agenda Page 界面的美化&#xff0c;收縮折疊&#xff0c;并添加一些動畫效果 Task 243:…

c# 前后日期設置

List<string> list new List<string>(); //根據當月 顯示前6個月 for(int i0;i<6;i) { list.add(DateTime.Now.AddMonths(i*-1).Tostring()); }轉載于:https://www.cnblogs.com/Dcz1996/p/10515429.html

jq-AJAX 初步了解

js的異步操作(1) 定時器 (2) 事件 (3) 回調 (4) ajax Ajax優點 可以局部更新網頁內容。 ajax的本質就是xmlHttpRequest對象控制臺出現三個屬性 readyState 請求的五個階段 0 1 2 3 4 responseText 返回的文件內容 Status 狀態嗎 返回的狀態信息 在__proto__有三個方法 …

ARM學習筆記7——乘法指令

ARM乘法指令完成兩個數據的乘法&#xff0c;兩個32位二進制數相乘的結果是64位的4積。 其中&#xff1a; 1、“RadHi:RdLo”是由RdHi(最高有效32位)和RdLo(最低有效32位)鏈接形成的64位數&#xff0c;“[31:0]”只選取結果的最低有效32位 2、簡單的賦值由“&#xff1a;”表示…

《劍指offer》第四十三題(從1到n整數中1出現的次數)

// 面試題43&#xff1a;從1到n整數中1出現的次數 // 題目&#xff1a;輸入一個整數n&#xff0c;求從1到n這n個整數的十進制表示中1出現的次數。例如 // 輸入12&#xff0c;從1到12這些整數中包含1 的數字有1&#xff0c;10&#xff0c;11和12&#xff0c;1一共出現了5次。#in…

回調函數

又稱callback函數。意思是指&#xff1a;在你的程序中&#xff0c;被windows系統調用的函數。 這些函數雖然由你設計&#xff0c;但是永遠不會也不該被你調用&#xff0c;它們是為windows系統準備的。 窗口函數設計為callback形式&#xff0c;才能開放出一個接口給操作系統調用…

固態硬盤Ghost安裝Windows 10無法引導的問題

機器配置如下&#xff1a; 電腦型號 技嘉 B360M POWER 臺式電腦操作系統 Windows 10 64位 ( DirectX 12 )處理器 英特爾 Core i7-8700 3.20GHz 六核主板 技嘉 B360M POWER ( 英特爾 PCI 標準主機 CPU 橋 - CannonLake - A3…

Linux shell 內部命令與外部命令有什么區別以及怎么辨別

內部命令實際上是shell程序的一部分&#xff0c;其中包含的是一些比較簡單的linux系統命令&#xff0c;這些命令由shell程序識別并在shell程序內部完成運行&#xff0c;通常在linux系統加載運行時shell就被加載并駐留在系統內存中。內部命令是寫在bashy源碼里面的&#xff0c;其…

[轉]矩陣分解在推薦系統中的應用

矩陣分解是最近幾年比較火的算法&#xff0c;經過kddcup和netflix比賽的多人多次檢驗&#xff0c;矩陣分解可以帶來更好的結果&#xff0c;而且可以充分地考慮各種因素的影響&#xff0c;有非常好的擴展性&#xff0c;因為要考慮多種因素的綜合作用&#xff0c;往往需要構造cos…

iPhone 系統刷機

1. 下載好固件(愛思 或者 pp助手) e.g. http://jailbreak.25pp.com/gujian/ 2. 將電腦與手機連接上&#xff0c;彈出iTunes軟件即可 3. 長按手機電源鍵 關閉手機 4. 按住電源健&#xff0c;出現屏幕亮出現蘋果標志后再按住Home健 5. 屏幕黑屏時松開電源健&#xff0c;繼續按照H…

hdu4044

題意&#xff1a;給你一顆樹有n個節點&#xff0c;樹的根節點為1&#xff0c;表示為敵人的基地&#xff0c;其他葉子節點為你的基地&#xff0c;你一開始有m元&#xff0c;給你每個節點可以建造的塔的數量和塔的價格和可以照成的傷害&#xff0c;每個節點至多建立一座塔。敵人的…

RS100項目進展更新

1. 添加手機界面訪問網頁&#xff0c;畢竟PDA的屏幕大小和PC機大小不一致&#xff0c;完成了一自適應網頁&#xff0c;便于在手機上觀看實時畫面&#xff1b; 2. 此項目為一個遠程視頻監控遠程開關項目&#xff0c;遠程PC機或者手機能操作到監控端的開關&#xff0c;所以在遠程…