hdfs節點管理
1)增加節點
- 啓動一個新的系統,設置SSH免密碼登錄
- 在所有節點修改/etc/hosts,增加新節點的主機信息
- 安裝java運行環境(java-1.8.0-openjdk)
- 修改 NameNode slaves的文件增加該節點
- 拷貝 NamNode的/usr/local/hadoop到本機
- 在該節點啓動DataNode
[root@node4 hadoop] ./sbin/hadoop-daemon.sh start datanode
- 設置同步帶寬並同步數據
[root@node4 hadoop] ./bin/hdfs dfsadmin -setBalancerBandwidth 60000000 #設置同步帶寬
[root@node4 hadoop] ./sbin/start-balancer.sh #同步數據
- 在NameNode檢查DataNode
./bin/hdfs dfsadmin -report
如果使用playbook,則修改文件/etc/hosts/
、ansible的主機列表文件hosts
、hadoop的slaves
,運行playbook就可以完成添加,在新節點啓動DataNode即可。
2)修復節點
- 修復節點與增加節點基本一致
- 新節點的ip和主機名要與損壞節點的一致
- 啓動服務
/sbin/hadoop-daemon.sh start datanode
- 數據恢復是自動的
- 上線以後會自動恢復數據,如果數據量非常巨大,可能需要一定的時間
3)刪除節點
- 配置NameNode的hdfs-site.xml
- 增加dfs.hosts.exclude配置
] vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/usr/local/hadoop/etc/hadoop/exclude</value>
</property>
- 增加exclude配置文件,寫入要刪除的節點主機名
] vim /usr/local/hadoop/etc/hadoop/exclude
node4
-
更新數據
./bin/hdfs dfsadmin -refreshNodes
-
查看狀態
./bin/hdfs dfsadmin -report
Normal
:正常狀態Decommissioned in Program
:數據正在遷移Decommissioned
:數據遷移完成- 注意:僅當狀態變成Decommissioned才能down機下線
- 修改文件
/etc/hosts/
、ansible的主機列表文件hosts
、hadoop的slaves
,運行playbook
yarn節點管理
- 增加節點:安裝服務,配置/etc/hosts,啓動nodemanager
[root@node4 hadoop] ./sbin/yarn-daemon.sh start nodemanager #在yarn添加該節點
- 刪除節點:關閉服務就行
[root@node4 hadoop] ./sbin/yarn-daemon.sh stop nodemanager #刪除節點
NFS網關
1)介紹
nfs網關用途
- 用戶可以通過操作系統兼容的本地NFSv3客戶端來瀏覽HDFS文件系統
- 用戶可以從HDFS文件系統下載文檔到本地文件系統
- 用戶可以通過掛載點直接流化數據,支持文件附加, 但是不支持隨機寫
- NFS網關支持NFSv3和允許HDFS作爲客戶端文件系統的一部分被掛載
特性 注意事項
- HDFS超級用戶NameNode是與進程本身具有相同標識的用戶,超級用戶可以執行任何操作,因爲權限檢查永遠不會認爲超級用戶失敗
注意事項
- 在非安全模式下,運行網關進程的用戶是代理用戶
- 在安全模式下, Kerberos keytab中的用戶是代理用戶
配置代理用戶
- 在 Namenode和 NFSGW上添加代理用戶
- 代理用戶的UID,GID,用戶名必須完全相同
- 如果因特殊原因客戶端的用戶和NFS網關的用戶UID不能保持致,需要我們配置ηfs.map的靜態映射關係
- nfs map
uid 10 100 # Map the remote uid 10 the local UID 100
gid 11 101 # Map the remote GID 1l to the local GID 101
2)環境準備
- 在NameNode和nfsgw上添加用戶和組
groupadd -g 800 nfsuser #兩臺主機的用戶必須一樣
useradd -u 800 -g 800 -r -d /var/hadoop nfsuser
- 修改配置文件core-site.xml
- 這裏的{代理用戶}是主機上真實運行的nfs3的用戶
- 在非安全模式下,運行nfs網關的用戶爲代理用戶
- groups爲掛載點用戶所使用的組
- hosts爲掛載點主機地址
] vim core-site.xml
<property>
<name>hadoop.proxyuser.nfsuser.groups</name> #授權代理用戶組,*代表所有
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.nfsuser.hosts</name> #授權代理主機,*代表所有
<value>*</value>
</property>
使用playbook爲所有hadoop主機同步配置文件
- 停止所有服務,啓動hdfs,確認集羣狀態
[root@nn1 hadoop] ./sbin/stop-all.sh
[root@nn1 hadoop] ./sbin/start-dfs.sh
[root@nn1 hadoop] ./bin/hdfs dfsadmin -report #查看DataNode
[root@all hadoop] jps #所有主機確認角色
3)配置nfsgw
-
卸載nfs-utils、rpcbind,卸載後需要重啓系統
-
nfsgw配置/etc/hosts,使其可以找到所有hadoop主機
[root@ansible ~] scp /etc/hosts nfsgw:/etc/
- nfsgw安裝openjdk軟件包
[root@nfsgw ~] yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
- 同步Name Node的/usr/local/hadoop/到本機
[root@nfsgw ~] rsync -av nn1:/usr/local/hadoop /usr/local/
- 配置hdfs-site.xml
-
nfs.exports.allowed.hosts
- 默認情況下,export可以被任何客戶端掛載。爲了更好的控制訪問,可以設置屬性。值和字符串對應機器名和訪問策略,通過空格來分割。機器名的格式可以是單一的主機、Java的正則表達式或者IPv4地址
- 使用rw或ro可以指定導出目錄的讀寫或只讀權限。如果訪問策略沒被提供,默認爲只讀。每個條目使用”;“來分割
-
nfs.dump.dir
- 用戶需要更新文件轉儲目錄參數.NFS客戶端經常重新安排寫操作,順序的寫操作會隨機到達NFS網關。這個 目錄常用於臨時存儲無序的寫操作。對於每個文件, 無序的寫操作會在他們積累在內存中超過一定閾值(如, 1M)時被轉儲。需要確保有足夠的空間的目錄
- .如:應用上傳10個100M,那麼這個轉儲目錄推薦1GB左右的空間,以便每個文件都發生最壞的情況。只有NFS網關需要在設置該屬性後重啓
[root@nfsgw ~] vim etc/hadoop/hdfs-site.xml
<property>
<name>nfs.exports.allowed.hosts</name>
<value>* rw</value>
</property>
<property>
<name>nfs.dump.dir</name>
<value>/var/nfstmp</value>
</property>
4)啓動服務
- 創建緩存目錄,授權
mkdir /var/nfstmp
chown nfsuser:nfsuser /var/nfstmp
- 日誌文件加授權
setfacl -m u:nfsuser:rwx /usr/local/hadoop/logs
- 啓動portmap,必須先啓動,必須使用root用戶啓動
./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap
- 啓動nfs3,必須使用代理用戶nfsuser啓動
sudo -u nfsuser ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3
附:如果需要重啓服務,則應該先停止nfs3,再停止portmap,再啓動portmap,再啓動nfs3.
- 驗證測試(使用另外的主機進行掛載)
yum install nfs-utils
showmount -e 192.168.1.65
mount -t nfs -o vers=3,proto=tcp,nolock,noatime,noacl,sync 192.168.1.65:/ /mnt/
參數:
- 目前NFS只能使用v3版本
vers=3
- 僅使用TCP作爲傳輸協議
proto=tcp
- 不支持NLM
nolock
- 禁用 access time的時間更新
noatime
- 禁用ac擴展權限
noacl
- 建議使用安裝選項
sync
,它可以最小化避免重排序寫入造成不可預測的吞吐量,未指定同步選項可能會導致上傳大文件時出現不可靠行爲