目錄java
hdfs-mount
是一個將HDFS掛載爲本地Linux
文件系統的工具,使用go語言開發,不依賴libdfs和java虛擬機。它容許將遠程HDFS做爲本地Linux文件系統掛載,並容許任意應用程序或shell腳本以高效和安全的方式訪問HDFS做爲普通文件和目錄。git
如下翻譯自 hdfs-mount/README.mdgithub
個人系統環境是CentOS 7.0 x86_64
,如下全部操做都是基於此。golang
先安裝編譯所需的必要工具軟件:shell
yum install make golang
而後下載hdfs-mount
的源碼回來,源碼倉庫地址:https://github.com/microsoft/hdfs-mount.git緩存
git clone https://github.com/microsoft/hdfs-mount.git
而後就能夠編譯了,先進入源碼目錄安全
# 進入源碼根目錄 cd hdfs-mount # 執行構建 make
編譯的過程當中由於要下載依賴(bazil/fuse、x/net/context、protobuf/proto),因此須要保持網絡通暢。bash
由於hdfs-mount
基於FUSE(用戶空間文件系統)框架設計,因此須要先安裝fuse
內核模塊,並加載(若是沒有加載fuse
內核模塊,則沒法hdfs-mount操做時候將失敗,並提示加載)。網絡
# 安裝fuse模塊 sudo yum install fuse # 加載fuse模塊 sudo modprobe fuse
而後就可使用hdfs-mount
進行HDFS的掛載了,掛載後可使用dd
命令進行一下讀寫速度測試。併發
# 掛載,由於hdfs-mount並不會後臺運行,因此使用&放入後臺 sudo ./hdfs-mount 192.168.0.32:9000 /mnt/hdfs & # 測試一下讀取速度 dd bs=64k if=/mnt/hdfs/test.img of=/dev/null 記錄了24421+1 的讀入 記錄了24421+1 的寫出 1600485903字節(1.6 GB)已複製,9.56565 秒,167 MB/秒
hdfs-mount
的一些命令行參數以下,更多細節可執行hdfs-mount --help
查看。
# 查看使用幫助信息 ./hdfs-mount --help # 掛載必要選項: HDFS名字節點 端口 掛載位置 ./hdfs-mount NameNode:Port MountPoint # 下面是一些可選參數 -allowedPrefixes string # 容許的前綴字符串,以逗號分隔的遠程HDFS上容許訪問的路徑前綴列表,若是指定了,掛載點將僅公開對這些前綴路徑的訪問(默認*) -expandZips # 實現zip文件的自動展開(訪問zip包內部文件) -fuse.debug # 日誌輸出FUSE處理的線性信息 -lazy # 延遲加載,容許在HDFS就緒前掛載HDFS文件系統 -logLevel int # 日誌輸出級別控制。0:僅fatal/err日誌;1:+warning日誌;2:+info日誌 -readOnly # 啓用只讀掛載 -retryMaxAttempts int # 失敗操做的最大重試次數(默認99999999) -retryMaxDelay duration # 兩次重試之間的最大延時(默認1分0秒) -retryMinDelay duration # 兩次重試之間的最小延時(注意,第一次重試老是當即進行)(默認爲1秒) -retryTimeLimit duration # 失敗操做的全部重試嘗試的時間限制 (默認爲 5分0秒)