溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

HDFS進階應(yīng)用 配置 NFS 網(wǎng)關(guān)

發(fā)布時間:2020-06-03 16:46:58 來源:網(wǎng)絡(luò) 閱讀:2270 作者:Xuenqlve 欄目:大數(shù)據(jù)

HDFS進階應(yīng)用 配置NFS 網(wǎng)關(guān)

? NFS 網(wǎng)關(guān)用途

    – 1.用戶可以通過操作系統(tǒng)兼容的本地NFSv3客戶端來閱覽HDFS文件系統(tǒng)

    – 2.用戶可以從HDFS文件系統(tǒng)下載文檔到本地文件系統(tǒng)

    – 3.用戶可以通過掛載點直接流化數(shù)據(jù)。支持文件附加,但是不支持隨機寫

    – NFS 網(wǎng)關(guān)支持NFSv3和允許HDFS 作為客戶端文件系統(tǒng)的一部分被掛載


? 特性與注意事項

    – 不支持隨機寫

    – 在非安全模式,運行網(wǎng)關(guān)的用戶是代理用戶

    – 在安全模式時,Kerberos keytab中的用戶是代理用戶

    – AIX NFS有一些知道的問題,不能讓默認的HDFS NFS網(wǎng)關(guān)正常工作,如果想在 AIX 訪問 NFS 網(wǎng)關(guān)需要配置下面的參數(shù)

    <property>

        <name>nfs.aix.compatibility.mode.enabled</name>

        <value>true</value>

    </property>

? 特性與注意事項

– HDFS超級用戶是與NameNode進程本身具有相同標識的用戶,超級用戶可以執(zhí)行任何操作,因為權(quán)限檢查永遠不會為超級用戶失敗。

    <property>

        <name>nfs.superuser</name>

        <value>the_name_of_hdfs_superuser</value>

    </property>

– 如果客戶端安裝允許訪問時間更新,在某些Unix系統(tǒng)上,用戶可以通過使用“noatime”安裝來禁用訪問時間更新

<property>

    <name>dfs.namenode.accesstime.precision</name>

    <value>0</value>

</property>

– nfs.dump.dir

– 用戶需要更新文件轉(zhuǎn)儲目錄參數(shù)。NFS客戶端經(jīng)常重新安排寫操作,順序的寫操作會以隨機到達NFS網(wǎng)關(guān)。這個目錄常用于臨時存儲無序的寫操作。對于每個文件,無序的寫操作會在他們積累在內(nèi)存中超過一定閾值(如。1 mb)被轉(zhuǎn)儲。需要確保有足夠的空間的目錄。例如,如果應(yīng)用上傳10個100M,那么這個轉(zhuǎn)儲目錄推薦有1GB左右的空間,以便每個文件都發(fā)生最壞的情況。只有NFS網(wǎng)關(guān)需要在設(shè)置該屬性后重啟。

– nfs.exports.allowed.hosts

– 默認情況下,export可以被任何客戶端掛載。為了更好的控制訪問,可以設(shè)置屬性。值字符串為機器名和訪問策略,通過空格來分割。機器名的格式可以是單一的主機,Java的正則表達式或者IPv4地址。訪問權(quán)限使用rw或ro來指定導出目錄的讀/寫或機器只讀訪問。如果訪問策略沒被提供,默認為只讀的。每個條目使用“;”來分割。


? 調(diào)試與日志排錯

– 在配置 NFS 網(wǎng)關(guān)過程中經(jīng)常會碰到各種各樣的錯誤,如果出現(xiàn)了錯誤,打開調(diào)試日志是一個不錯的選擇

? log4j.property

– log4j.logger.org.apache.hadoop.hdfs.nfs=DEBUG

– log4j.logger.org.apache.hadoop.oncrpc=DEBUG


? core-site.xml

– hadoop.proxyuser.{nfsuser}.groups

– hadoop.proxyuser.{nfsuser}.hosts

– 這里的 nfsuser 是你機器上真實運行 nfsgw 的用戶

– 在非安全模式,運行nfs網(wǎng)關(guān)的用戶為代理用戶

– groups 為掛載點用戶所使用的組

– hosts 為掛載點主機地址

? hdfs-site.xml

– nfs.exports.allowed.hosts

– 設(shè)置允許訪問 NFS 主機列與權(quán)限,默認 “ro”

    <property>

        <name>nfs.exports.allowed.hosts</name>

        <value>* rw</value>

    </property>

– dfs.namenode.accesstime.precision

– 關(guān)閉 access time

    <property>

        <name>dfs.namenode.accesstime.precision</name>

        <value>3600000</value>

    </property>

– nfs.dump.dir

– 設(shè)置轉(zhuǎn)儲目錄

<property>

    <name>nfs.dump.dir</name>

    <value>/tmp/.hdfs-nfs</value>

</property>

– nfs.rtmax & nfs.wtmax

– 用戶可以像訪問本地文件系統(tǒng)的一部分一樣訪問HDFS,但硬鏈接和隨機寫還不支持。對于大文件I/O的優(yōu)化,可以在mount的時候增加NFS傳輸?shù)拇笮?rsize和wsize)。在默認情況下,NFS網(wǎng)關(guān)支持1MB作為最大的傳輸大小。更大的數(shù)據(jù)傳輸大小,需要在hdfs-site.xml中設(shè)置“nfs.rtmax” 和“nfs.wtmax”

– nfs.rtmax & nfs.wtmax

    <property>

        <name>nfs.rtmax</name>

        <value>4194304</value>

    </property>

    <property>

        <name>nfs.wtmax</name>

        <value>1048576</value>

    </property>

– nfs.port.monitoring.disabled

– 允許從沒有權(quán)限的客戶端掛載 nfs

    <property>

        <name>nfs.port.monitoring.disabled</name>

        <value>false</value>

    </property>

? nfs.map

– 系統(tǒng)管理員必須確保在NFS客戶端的用戶和在HDFS網(wǎng)關(guān)主機上的用戶有相同的名稱和UID。不同主機上創(chuàng)建的用戶需要修改UID(例如使用“usermod -u 123myusername”),在NFS客戶端或者NFS網(wǎng)關(guān)主機來進行。如果客戶端的用戶和NFS網(wǎng)關(guān)的用戶 uid 不能保持一致需要我們配置 nfs.map 的靜態(tài)映射關(guān)系





實驗環(huán)境準備參考 https://blog.51cto.com/13558754/2066708

配置 NFS 網(wǎng)關(guān)

# cd /usr/local/hadoop/

# ./sbin/stop-all.sh

# jps

6598 Jps

# vim /etc/hosts

192.168.4.1     master

192.168.4.2     node1

192.168.4.3     node2

192.168.4.4     node3

192.168.4.5     nfsgw            //添加新的主機

# for i in {1..5}

> do

> rsync -a /etc/hosts 192.168.4.${i}:/etc/hosts

> done

# scp /etc/yum.repos.d/yum.repo nfsgw:/etc/yum.repos.d/

yum.repo                                                                        100%   61     0.1KB/s   00:00    

# ssh nfsgw 

Last login: Wed Jan 31 08:20:55 2018 from master

# sed -ri "s/^(SELINUX=).*/\1disabled/" /etc/selinux/config ; yum -y remove firewalld

# reboot



// 添加用戶

[root@nfsgw ~]# adduser -g 10 -u 1001 nfsuser

[root@nfsgw ~]# id nfsuser

uid=1001(nfsuser) gid=10(wheel) 組=10(wheel)

[root@master ~]# adduser -g 10 -u 1001 nfsuser

[root@master ~]# id nfsuser

[root@master ~]# cd /usr/local/hadoop/

[root@master hadoop]# cd etc/hadoop/

[root@master hadoop]# vim core-site.xml

  <property>

    <name>hadoop.proxyuser.nfsuser.groups</name>

    <value>*</value>

  </property>

  <property>

    <name>hadoop.proxyuser.nfsuser.hosts</name>

    <value>*</value>

  </property>

[root@master hadoop]# for i in node{1..3}

> do

> rsync -a /usr/local/hadoop/etc/hadoop/ ${i}:/usr/local/hadoop/etc/hadoop/ -e "ssh"

> done


[root@master ~]# ssh nfsgw

[root@nfsgw ~]# yum -y install java-1.8.0-openjdk-devel.x86_64    

[root@nfsgw ~]# cd /usr/local/

[root@nfsgw ~]# rsync -azSH --delete master:/usr/local/hadoop ./ -e "ssh"       //同步hadoop

[root@nfsgw ~]# yum -y remove rpcbind nfs-util


[root@master ~]# cd /usr/local/hadoop/

[root@master hadoop]# ./sbin/start-dfs.sh         //啟動集群

[root@master hadoop]# jps

6755 NameNode

7062 Jps

6953 SecondaryNameNode

[root@master hadoop]# ./bin/hdfs dfsadmin -report    //檢查節(jié)點


[root@master hadoop]# ssh nfsgw 

Last login: Wed Jan 31 08:26:48 2018 from master

[root@nfsgw ~]# cd /usr/local/hadoop/

[root@nfsgw hadoop]# cd etc/hadoop/

[root@nfsgw hadoop]# vim hdfs-site.xml 

...

  <property>

    <name>nfs.exports.allowed.hosts</name>            

    <value>* rw</value>            //允許那些主機訪問權(quán)限

  </property>

  <property>

    <name>dfs.namenode.accesstime.precision</name>

    <value>3600000</value>        //accesstime 更新時間

  </property>

  <property>

    <name>nfs.dump.dir</name>    

    <value>/var/nfstemp</value>            //轉(zhuǎn)儲目錄

  </property>

  <property>

    <name>nfs.rtmax</name>

    <value>4194304</value>               // 讀文件 傳輸大小

  </property>

  <property>

    <name>nfs.wtmax</name>

    <value>1048576</value>            //寫文件 傳輸大小

  </property>

  <property>

    <name>nfs.port.monitoring.disabled</name>

    <value>false</value>            // 允許客戶端掛載

  </property>

...

[root@nfsgw ~]# mkdir /var/nfstemp

[root@nfsgw ~]# chown 1001.10 /var/nfstemp/

[root@nfsgw ~]# setfacl -m u:nfsuser:rwx  /usr/local/hadoop/logs/

[root@nfsgw ~]# cd /usr/local/hadoop/

– 啟動 portmap 服務(wù)

[root@nfsgw hadoop]# ./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap

starting portmap, logging to /usr/local/hadoop/logs/hadoop-root-portmap-nfsgw.out

[root@nfsgw hadoop]# su nfsuser

– 啟動 nfs3

[nfsuser@nfsgw hadoop]$ ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3

starting nfs3, logging to /usr/local/hadoop/logs/hadoop-nfsuser-nfs3-nfsgw.out

[nfsuser@nfsgw hadoop]$ jps

2728 Jps

2671 Nfs3

[nfsuser@nfsgw hadoop]$ exit

exit

[root@nfsgw hadoop]# jps

2738 Jps

2588 Portmap

2671 -- process information unavailable

– 這里要特別注意:

– 啟動 portmap 需要使用 root 用戶

– 啟動 nfs3 需要使用 core-site 里面設(shè)置的用戶


掛載 nfs

– 目前NFS v3僅使用TCP作為傳輸協(xié)議。 不支持NLM,因此需要安裝選項“nolock”。 強烈建議使用安裝選項“sync”,因為它可以最小化或避免重新排序?qū)懭?這將導致更可預測的吞吐量。 未指定同步選項可能會導致上傳大文件時出現(xiàn)不可靠的行為

– 如果必須使用軟安裝,用戶應(yīng)該給它一個相對較長的超時(至少不小于主機上的默認超時)


# mount -t nfs -o vers=3,proto=tcp,nolock,sync,noatime,noacl 192.168.4.5:/ /mnt/

# ls /mnt/

input  output  tmp




向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI