您好,登錄后才能下訂單哦!
怎么實現hadoop中RPC通信文件上傳原理分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
//APP2中調用的代碼 public static final String HDFS_PATH = "hdfs://hadoop:9000/hello"; public static final String DIR_PATH = "/d1000"; public static final String FILE_PATH = "/d1000/f10000"; public static void main(String[] args) throws Exception { FileSystem fileSystem = FileSystem.get(new URI(HDFS_PATH), new Configuration()); // //創建文件 // fileSystem.mkdirs(new Path(DIR_PATH)); // //上傳文件 // FSDataOutputStream out = fileSystem.create(new Path(FILE_PATH)); // FileInputStream in = new FileInputStream("c:/hello.txt"); // IOUtils.copyBytes(in, out, 1024,true); // //下載數據 // FSDataInputStream in1 = fileSystem.open(new Path(FILE_PATH)); // IOUtils.copyBytes(in1, System.out, 1024,true); // 刪除文件夾 deleteFile(fileSystem); } private static void deleteFile(FileSystem fileSystem) throws IOException { fileSystem.delete(new Path(FILE_PATH), true); }
注:RPC(remote procedure call)
不同java進程間的對象方法的調用。一方稱作服務端(server),一方稱作客戶端(client)。
server端提供對象,供客戶端調用的,被調用的對象的方法的執行發生在server端。
RPC是hadoop框架運行的基礎。
上圖為RPC通信調用的一系列方法最終達到把文件寫入到linux文件系統中的過程,但是由于hadoop中hdfs分布式文件系統的API封裝的特別好,讓調用者感覺不到這個復雜的過程,對用戶或者程序而言實際是通過網絡來訪問文件的動作,但對用戶看來就像訪問本地磁盤一樣,充分體現了通透性....
對于HDFS的操作在應用中只需掌握FileSystem,而不需要關注數據是存放在DataNode的哪個塊中(因為這個工作時交給NameNode的)。
注意:雖然客戶端上傳數據的時候是通過DataStreamer向NameNode申請block塊和blockid,但是數據的傳輸行為并不是通過NameNode轉的,而是與DataNode直接連接!
看完上述內容,你們掌握怎么實現hadoop中RPC通信文件上傳原理分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。