爲了測試從java程序到HDFS的連接,是否足夠依賴FileSystem.get(配置)或者應該執行額外的完整性檢查來完成此操作?(例如:某些文件 - 例如列表,複製,刪除)測試與HDFS的連接
1
A
回答
0
FileSystem.get(Configuration)創建一個DistrubutedFileSystem對象,該對象依次依賴於DFSClient與NameNode進行通信。深埋在源代碼中(1.0.2是我正在查看的版本),是爲NameNode創建RPC的調用,它爲ClientProtocol接口創建一個代理。
在創建這個代理,(org.apache.hadoop.ipc.RPC.getProxy(Class<? extends VersionedProtocol>, long, InetSocketAddress, UserGroupInformation, Configuration, SocketFactory, int)
),一個調用,以確保服務器和客戶端都講相同的「版本」,所以此確認申明一個NameNode會在配置的地址上運行:
VersionedProtocol proxy =
(VersionedProtocol) Proxy.newProxyInstance(
protocol.getClassLoader(), new Class[] { protocol },
new Invoker(protocol, addr, ticket, conf, factory, rpcTimeout));
long serverVersion = proxy.getProtocolVersion(protocol.getName(),
clientVersion);
if (serverVersion == clientVersion) {
return proxy;
} else {
throw new VersionMismatch(protocol.getName(), clientVersion,
serverVersion);
}
當然,此版本匹配檢查不會報告NameNode是否有足夠的數據節點運行以執行某些操作(如創建/打開文件)。
相關問題
- 1. 與Java的測試套接字連接
- 2. 如何測試與Exchange Server的連接?
- 3. 測試與WebLogic服務器的連接
- 4. 與db連接的Java測試類
- 5. 測試與外部服務的連接
- 6. 測試連接UploadedFile的形成與PhpSpec
- 7. HPCC/HDFS連接器
- 8. CakePHP連接測試
- 9. Winsock連接測試
- 10. PDO連接測試
- 11. 測試Memcached連接
- 12. SSL連接測試
- 13. 測試SVN連接
- 14. SMTP連接測試
- 15. Facebook與django-facebook連接測試錯誤?
- 16. scala的hdfs連接錯誤
- 17. 的VBScript測試FTP連接
- 18. 測試連接工作,實際連接結束與ORA-12154
- 19. 測試火力點連接連接
- 20. 測試SQL Db連接
- 21. Ektorp CouchDB測試連接
- 22. Rspec測試SMTP連接
- 23. 在Mocha測試MySQL連接
- 24. 單元測試連接/ C#
- 25. 測試url連接java html
- 26. Python ldap連接測試
- 27. 測試谷歌Firebase連接
- 28. Pytest:測試WebSocket連接
- 29. 測試Pyodbc連接對象
- 30. 如何測試jpa連接?
感謝您的詳細解釋克里斯。 因此,由於作爲創建FileSystem對象的一部分涉及對namenode的RPC調用,因此不會拋出IOException的此方法應該是一個很好的檢查,以確保我們可以與namenode進行通信。正確? – Swarnim
我會這麼說 –