Hadoop維護

hdfs節點管理

1)增加節點

  1. 啓動一個新的系統,設置SSH免密碼登錄
  2. 在所有節點修改/etc/hosts,增加新節點的主機信息
  3. 安裝java運行環境(java-1.8.0-openjdk)
  4. 修改 NameNode slaves的文件增加該節點
  5. 拷貝 NamNode的/usr/local/hadoop到本機
  6. 在該節點啓動DataNode
[root@node4 hadoop] ./sbin/hadoop-daemon.sh start datanode
  1. 設置同步帶寬並同步數據
[root@node4 hadoop] ./bin/hdfs dfsadmin -setBalancerBandwidth 60000000   #設置同步帶寬
[root@node4 hadoop] ./sbin/start-balancer.sh    #同步數據
  1. 在NameNode檢查DataNode./bin/hdfs dfsadmin -report

如果使用playbook,則修改文件/etc/hosts/、ansible的主機列表文件hosts、hadoop的slaves,運行playbook就可以完成添加,在新節點啓動DataNode即可。

2)修復節點

  • 修復節點與增加節點基本一致
  • 新節點的ip和主機名要與損壞節點的一致
  • 啓動服務 /sbin/hadoop-daemon.sh start datanode
  • 數據恢復是自動的
  • 上線以後會自動恢復數據,如果數據量非常巨大,可能需要一定的時間

3)刪除節點

  1. 配置NameNode的hdfs-site.xml
  2. 增加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>
  1. 增加exclude配置文件,寫入要刪除的節點主機名
] vim /usr/local/hadoop/etc/hadoop/exclude
node4
  1. 更新數據./bin/hdfs dfsadmin -refreshNodes

  2. 查看狀態 ./bin/hdfs dfsadmin -report

  • Normal:正常狀態
  • Decommissioned in Program:數據正在遷移
  • Decommissioned:數據遷移完成
  • 注意:僅當狀態變成Decommissioned才能down機下線
  1. 修改文件/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)環境準備

  1. 在NameNode和nfsgw上添加用戶和組
groupadd -g 800 nfsuser    #兩臺主機的用戶必須一樣
useradd -u 800 -g 800 -r -d /var/hadoop nfsuser
  1. 修改配置文件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主機同步配置文件

  1. 停止所有服務,啓動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

  1. 卸載nfs-utils、rpcbind,卸載後需要重啓系統

  2. nfsgw配置/etc/hosts,使其可以找到所有hadoop主機

[root@ansible ~] scp /etc/hosts nfsgw:/etc/
  1. nfsgw安裝openjdk軟件包
[root@nfsgw ~] yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  1. 同步Name Node的/usr/local/hadoop/到本機
[root@nfsgw ~] rsync -av nn1:/usr/local/hadoop /usr/local/
  1. 配置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)啓動服務

  1. 創建緩存目錄,授權
mkdir /var/nfstmp
chown nfsuser:nfsuser /var/nfstmp
  1. 日誌文件加授權
setfacl -m u:nfsuser:rwx /usr/local/hadoop/logs
  1. 啓動portmap,必須先啓動,必須使用root用戶啓動
./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap
  1. 啓動nfs3,必須使用代理用戶nfsuser啓動
sudo -u nfsuser ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3

附:如果需要重啓服務,則應該先停止nfs3,再停止portmap,再啓動portmap,再啓動nfs3.

  1. 驗證測試(使用另外的主機進行掛載)
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,它可以最小化避免重排序寫入造成不可預測的吞吐量,未指定同步選項可能會導致上傳大文件時出現不可靠行爲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章