NFS網關支持NFSv3,並允許將HDFS作為客戶端本地文件系統進行掛載。目前,NFS Gateway支持並啟用以下使用模式:
- 用戶可以通過NFSv3客戶端兼容操作系統上的本地文件系統瀏覽HDFS文件系統。
- 用戶可以將文件從HDFS文件系統下載到其本地文件系統。
- 用戶可以將文件從本地文件系統直接上傳到HDFS文件系統。
- 用戶可以通過掛載點將數據直接傳輸到HDFS。支持文件追加,但不支持隨機寫入。
CDH部署NFS Gateway
可以在data01.bigdata-heboan.com(192.168.48.129)上驗證服務是否啟動
rpcinfo -p $nfs_server_ip
現在找一台客戶端機器(192.168.48.130)
安裝nfs
yum install rpcbind nfs-utils -y
驗證 HDFS命名空間是否已導入並可以掛載
showmount -e $ nfs_server_ip
掛載導出"/"
目前NFS v3僅使用TCP作為傳輸協議。不支持NLM,因此需要mount選項“nolock”。強烈建議使用掛載選項“sync”,因為它可以最小化或避免重新排序的寫入,從而產生更可預測的吞吐量。
上載大文件時,不指定sync選項可能會導致不可靠的行為。建議使用硬裝。這是因為,即使在客戶端將所有數據發送到NFS網關之后,當NFS客戶端內核重新排序寫入時,可能需要額外的時間將NFS網關傳輸到HDFS。
如果必須使用軟安裝,用戶應該給它一個相對較長的超時(至少不低於主機上的默認超時)。
用戶可以掛載HDFS命名空間,如下所示
mount -t nfs -o vers=3,proto=tcp,nolock,noacl,sync $server:/ $mount_point
經過測試使用, 掛載到本地讀寫不受kerberos認證影響, 但是需注意用戶權限。
比如使用heboan用戶對掛載的目錄進行上傳文件, 操作步驟如下:
- 在hdfs 集群主機,ndfs客戶端創建用戶heboan(最好使用ldap,如 freeipa管理,這樣可以確保uid一致,否則手動創建可能uid不一樣,這個要注意)
- 然后使用hdfs 創建/user/heboan (hdfs dfs -mkdir /user/heboan hdfs dfs -chown heboan:heboan /user/heboan)
- 最后使用用戶heboan登錄nfs客戶端,就可以對/data/user/heboan目錄進行讀寫了