hadoop雲盤client的設計與實現(一)
近期在hadoop雲盤client項目。在做這個項目曾經對hadoop是一點都不了解呀,在網上查了好久。將client開發的是非常少的,在做這個項目的過程中遇到非常多奇葩的問題。
並且試圖換過好多方案,曾陷入深淵準備放棄。最後還是堅持下來了。
在這裏寫篇博文。把我近期的遇到的困難和做client 的基本思路列出來,希望可以幫助哪些做相似項目的開發人員們!
以下是hadoopclient簡單的需求:
1、可以實現主要的文件存儲操作,上傳、下載、刪除、重命名、分類、創建目錄、分享等功能。
2、可以執行在多操作系統下:Windows 、Linux、Mac os 以及類Unix操作系統。
3、可以有實現上千client同一時候操作,實現高並發server。
4、實現夠有良好的用戶體驗,可以參考百度雲盤、360雲盤界面。
5、client要簡潔明了最好不要依賴其它的軟件。
選擇開發語言:
java開發語言:
搭建見過hadoop分布式文件系統的開發人員都知道,hadoop是基於java語言開發的,對java 的支持非常好。假設能用java開發豈不是最簡單的方法嗎?看是這種,在網上找著了,hadoop 提供的Java API確實非常全面。用起來也非常方便,包含java第三方的java包也非常多。很多東西都不須要自己實現。
經過兩天的實驗Java有個致命的弱點,就是對桌面應用的支持不是非常好。開發出來的界面非常不美觀,並且還依賴
龐大的java虛擬機。用雲盤client用戶來說是一個不小的挑戰。
java開發語言直接宣告失敗!
C++開發語言:
用C++開發語言還是一個不錯的選擇,C++可以做非常漂了GUI。跨平臺當仁不讓的要選擇QT了。就是C++怎麽操作hadoop分布式文件系統呢?這是一個非常大的問題,在網上查了好久。找到了libhdfs,通過c、c++訪問hdfs的API。
不查不知道一查下一跳。libhdfs有非常大的局限性:
首先libhdfs是不支持在Windows下開發的。
其次libhdfs是基於java JNI技術的。用的是用C、C++調用java。也就是說libhdfs底層還是調用的java。僅僅只是是對java的api安裝C語言的方式又封裝了一次。看不到java 的哪些東西了,可是還是要依賴java虛擬機,還要配置一大堆的環境變量。
這樣看來似乎不能找到解決方式了 。。
。
hadoop雲盤client的設計與實現(一)