日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Hadoop集群管理与NFS网关

發布時間:2025/3/21 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop集群管理与NFS网关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一.Hadoop集群管理

1.訪問集群文件系統

2.重新初始化集群

3.增加新的節點

4.修復節點

5.刪除節點

二.NFS網關

1.NFS網關概述

2.NFS網關架構圖

3.HDFS用戶授權

4.NFS網關服務搭建概述

5.配置NFS網關

6.mount驗證


一.Hadoop集群管理

集群架構圖例

1.訪問集群文件系統

web頁面查看

  • 能看,能讀,不能寫入

命令行

  • 能看,能讀,不能寫入

~]# /usr/local/hadoop/bin/hadoop fs -命令 # 該命令與shell的命令類似# 示例 ~]# cd /usr/local/hadoop ~]# /usr/local/hadoop/bin/hadoop fs -mkdir /input mkdir: Cannot create directory /input. Name node is in safe mode. # 手動命令來離開安全模式 ~]# ./bin/hadoop dfsadmin -safemode leave DEPRECATED: Use of this script to execute hdfs command is deprecated. Instead use the hdfs command for it.Safe mode is OFF # 創建目錄 ~]# ./bin/hadoop fs -mkdir /input ~]# ./bin/hadoop fs -mkdir /aaa ~]# ./bin/hadoop fs -ls / Found 2 items drwxr-xr-x - root supergroup 0 2022-03-12 15:39 /aaa drwxr-xr-x - root supergroup 0 2022-03-12 15:39 /input # 刪除目錄 ~]#./bin/hadoop fs -rmdir /aaa # 添加文件 ~]# ./bin/hadoop fs -touchz /ceishi.txt # 上傳密碼文件 ~]# ./bin/hadoop fs -put /etc/passwd /mima # 把文件系統上的input目錄下載下來 ~]# ./bin/hadoop fs -get /input /root/input # 刪除非空目錄和文件(遞歸刪除用-rm -r) ~]# ./bin/hadoop fs -rm -r /input

用集群分析數據

## 首先要把文件上傳到hdfs # 創建文件夾 ~]# cd /usr/local/hadoop ~]# ./bin/hadoop fs -mkdir /input # 把要分析的文件上傳至hdfs目錄中 ~]# ./bin/hadoop fs -put *.txt /input/ ~]# ./bin/hadoop fs -ls /input Found 3 items -rw-r--r-- 2 root supergroup 86424 2022-03-12 16:17 /input/LICENSE.txt -rw-r--r-- 2 root supergroup 14978 2022-03-12 16:17 /input/NOTICE.txt -rw-r--r-- 2 root supergroup 1366 2022-03-12 16:17 /input/README.txt## 然后分析的jar包程序,在每個節點上要有(這里用默認的,如果有其他的在每個節點上也要拷貝一份) ~]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output# /input是文件系統上的,/output是文件系統上的

?

?web頁面查看(不能直接查看,要下載下來)

?

2.重新初始化集群

警告:該方法會丟失所有數據

1、停止集群 /usr/local/hadoop/sbin/stop-all.sh ?

2、刪除所有節點的 /var/hadoop/* ?

3、在 hadoop1 上重新格式化 /usr/local/hadoop/bin/hdfs namenode -format ?

4、啟動集群 /usr/local/hadoop/sbin/start-all.sh

~]# /usr/local/hadoop/sbin/stop-all.sh ~]# for i in hadoop1 node-{0001..0003};do ssh ${i} 'rm -rf /var/hadoop/*'; done ~]# /usr/local/hadoop/bin/hdfs namenode -format ~]# /usr/local/hadoop/sbin/start-all.sh

3.增加新的節點

●HDFS 新增節點

-啟動一個新的系統,設置SSH免密碼登錄

-在所有節點修改/etc/hosts, 增加新節點的主機信息

-安裝java運行環境(java-1. 8.0-open jdk-deve 1)

-拷貝NamNode的/usr/ local/hadoop到新節點

-同步配置文件到所有機器

為防止當多個節點同時寫入數據而導致新增節點死機,所以這邊要設置一個帶跨(防止ddos攻擊)

●在新節點啟動DataNode

~]# /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode

●設置帶寬,平衡數據

~]# /usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth500000000 # 500000000五百兆 ~]# /usr/local/hadoop/sbin/start-balancer.sh # 啟動數據平衡,當數據丟失時,會自動從其他服務上找回

●查看狀態

~]# /usr/local/hadoop/bin/hdfs dfsadmin -report

由于nodemanager不負責保存數據,所以增加節點相對簡單,環境配置與datanode-致

●增加節點(newnode)

~]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager

●查看節點(ResourceManager)

~]# /usr/local/hadoop/bin/yarn node -list

準備主機

主機IP地址配置
newnode192.168.1.54最低配置2核2G

新節點安裝

在 hadoop1 上執行

~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.1.54 ~]# vim /etc/hosts 192.168.1.50 hadoop1 192.168.1.51 node-0001 192.168.1.52 node-0002 192.168.1.53 node-0003 192.168.1.54 newnode ~]# for i in node-{0001..0003} newnode;do rsync -av /etc/hosts ${i}:/etc/ done ~]# rsync -aXSH /usr/local/hadoop newnode:/usr/local/

在 newnode 節點執行

# 安裝java的環境 ~]# yum install -y java-1.8.0-openjdk-devel # 刪除日志,方便后期排錯 ~]# cd /usr/local/hadoop && rm -rf logs/* # 啟動數據節點 ~]# /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode # 設置同步帶跨 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth 500000000 # 啟動數據平衡 ~]# /usr/local/hadoop/sbin/start-balancer.sh # 設置master可以自動管理新增節點,不設置也可以手動管理(這里不設置自動管理,)# nodemanager提供計算能力的,數據來源文件系統,利用cpu來計算,本身不存儲如何數據的 ~]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager ~]# jps 1186 DataNode 1431 NodeManager 1535 Jps

如果要設置自動管理則需要在這里HDFS添加slave管理主機

驗證集群(hadoop1上執行)

~]# /usr/local/hadoop/bin/hdfs dfsadmin -report ... ... ------------------------------------------------- Live datanodes (4): ~]# /usr/local/hadoop/bin/yarn node -list ... ... Total Nodes:4

4.修復節點

●修復節點比較簡單,步驟與增加節點一-致

????????-注意:新節點的ip和主機名要與損壞節點的一致

●如果舊節點數據丟失,新節點可以自動恢復數據

●上線以后會自動恢復數據,如果數據量非常巨大,需要一段時間

? ?●修復節點的過程與新增節點一致

5.刪除節點

為了測試刪除節點數據,這邊準備點數據,并上傳文件系統

~]# cat hadoop-2.7.7.tar.gz >> mydata # 上傳數據之前先查看數據占比 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report ~]# /usr/local/hadoop/bin/hadoop fs -put mydata / ~]# /usr/local/hadoop/bin/hadoop fs -ls / Found 2 items -rw-r--r-- 2 root supergroup 1093602605 2022-03-12 18:00 /mydata

配置數據遷移 hdfs-site.xml(hadoop1上做,不需要同步)

# 在文件中添加主機清單文件 ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml<property><name>dfs.hosts.exclude</name><value>/usr/local/hadoop/etc/hadoop/exclude</value></property>

配置排除主機列表,并遷移數據(hadoop1上執行)

# 在刪除配置文件中添加 newnode,默認文件不存在 ~]# echo newnode >/usr/local/hadoop/etc/hadoop/exclude # 遷移數據前查看 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report | grep Decommission Decommission Status : Normal Decommission Status : Normal Decommission Status : Normal Decommission Status : Normal# 遷移數據 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -refreshNodes # 查看狀態,僅當節點狀態為 Decommissioned 時候才可以下線 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report

數據的三種狀態

Normal:正常狀態

Decommissioned in Progress:數據正在遷移

Decommissioned:數據遷移完成

注意:僅當狀態變成Decommissioned 才能down機下線

下線節點(注:newnode執行)

~]# /usr/local/hadoop/sbin/hadoop-daemon.sh stop datanode ~]# /usr/local/hadoop/sbin/yarn-daemon.sh stop nodemanager # 注:下線需要30~40分鐘,需要這么久主要是因為遷移數據以及保持服務的穩定性

統計表

節點名上傳前上傳后下線newnode后
node-128k516M516M
node-228k516.04M664.15 M
node-328k793.15M922.16 M
newnode24k277.13M

下線之后還可以保存4~8小時

二.NFS網關

1.NFS網關概述

●NFS網關的用途

????????-用戶可以通過操作系統兼容的本地NFSv3客戶端來瀏覽HDFS文件系統

????????-用戶可以通過掛載點直接流化數據

????????-允許HDFS作為客戶端文件系統的一部分被掛載

????????-支持文件附加,但是不支持隨機寫(nolock)

????????- NFS網關目前只支持NFSv3和TCP協議(vers=3, proto=tcp)

可以把HDFS mount成一個文件夾

● 代理用戶

-代理用戶是NFS網關訪問集群的授權用戶

????????在NameNode和NFSGW上添加代理用戶

????????代理用戶的UID,GID, 用戶名必須完全相同

-如果因特殊原因用戶UID、GID、 用戶名不能保持- -致,需要我們配置nfs. map的靜態映射關系

-例如:

uid 10 100 # Map the remote UID 10 to the local UID 100gid 11 101 # Map the remote GID 11 to the local GID 101

2.NFS網關架構圖

首先客戶端mount掛載NFS,當是讀請求的時候HDFS直接到后臺集群查找并返回值;當是寫的時候會在nfs創建一個臨時文件夾,在調用HDFS切塊最后寫入集群

準備主機

主機IP地址配置
nfsgw192.168.1.55最低配置1核1G

3.HDFS用戶授權

hadoop1與nfsgw都要添加用戶

## hadoop1機器 ~]# groupadd -g 800 nfsuser ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuser## nfsgw機器 ~]# groupadd -g 800 nfsuser ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuser

HDFS集群授權

## hadoop1機器 # 文件全部內容,下面兩配置是nfs的 ~]# vim /usr/local/hadoop/etc/hadoop/core-site.xml <configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop1:9000</value></property><property><name>hadoop.tmp.dir</name><value>/var/hadoop</value></property><property><name>hadoop.proxyuser.nfsuser.groups</name><value>*</value> # nfs所在組*全部授權</property><property><name>hadoop.proxyuser.nfsuser.hosts</name><value>*</value> # nfs所在組*全部授權</property> </configuration> # 停止集群,同步數據,為了排錯方便可以把日志清空 ~]# /usr/local/hadoop/sbin/stop-all.sh ~]# rm -rf /usr/local/hadoop/logs/* ~]# for i in node-{0001..0003};dorsync -avXSH /usr/local/hadoop/etc ${i}:/usr/local/hadoop/done # 再次啟動,nodeManager可以不啟動,這邊為了測試方便 ~]# /usr/local/hadoop/sbin/start-dfs.sh ~]# jps 5925 NameNode 6122 SecondaryNameNode 6237 Jps # 驗證集群 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report ... ... ------------------------------------------------- Live datanodes (3):

4.NFS網關服務搭建概述

  • nfsgw網關服務

- portmap服務(與系統rpcbind沖突)- nfs3服務(與系統nfs沖突)

-卸載NFSGW的rpcbind與nfs-utils

yum remove y rpcbind nfs-utils
  • NFS網關具有雙重角色,他既是一-個HDFS的客戶端程序,又是一個NFS服務器,所以NFS網關必須能訪問到集群中的所有節點,配置/etc/hosts

  • NFS網關配置

-NFS網關同樣需要Hadoop的相關配置文件

-同步NameNode的hadoop安裝目錄到NFSGW

rsync -aXSH --delete hadoop1:/usr/local/hadoop /usr/local/

-安裝JAVA運行環境(java-1.8.0-openjdk-devel)

yum install -y java-1.8.0-openjdk-devel

nfs. exports授權

  • nfs. exports. allowed. hosts

-默認情況下,export可 以被任何客戶端掛載。為了更好的控制訪問,可以設置屬性。值和字符串對應機器名和訪問策略,通過空格來分割。機器名的格式可以是單一的主機、Java的正則表達式或者IPv4地址

-使用rw或ro可以指定導出目錄的讀寫或只讀權限。

-默認設置為只讀權限

  • nfs. dump臨時目錄配置

- nfs. dump. dir

-用戶需要更新文件轉儲目錄參數。NFS客 戶端經常重新安排寫操作,順序的寫操作會隨機到達NFS網關。這個目錄常用于臨時存儲無序的寫操作。對于每個文件,無序的寫操作會在他們積累在內存中超過一-定閾值(如,1M) 時被轉儲。需要確保有足夠的空間的目錄,先使用內存緩存,當內存不足時使用硬盤

- NFS網關在設置該屬性后需要重啟

5.配置NFS網關

~]# yum remove -y rpcbind nfs-utils ~]# vim /etc/hosts 192.168.1.50 hadoop1 192.168.1.51 node-0001 192.168.1.52 node-0002 192.168.1.53 node-0003 192.168.1.55 nfsgw ~]# yum install -y java-1.8.0-openjdk-devel # 這邊因為集群以及搭建好了nfs默認安裝的,這邊直接拷貝 ~]# rsync -aXSH --delete hadoop1:/usr/local/hadoop /usr/local/# 這邊以及配好了三個參數(文件系統,指定副本數,刪除節點文件) ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml <configuration><property><name>dfs.namenode.http-address</name><value>hadoop1:50070</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop1:50090</value></property><property><name>dfs.replication</name><value>2</value></property><property><name>dfs.hosts.exclude</name><value>/usr/local/hadoop/etc/hadoop/exclude</value></property><property><name>nfs.exports.allowed.hosts</name><value>* rw</value> # 指定/目錄掛載以讀寫來執行,類似于目錄/etc/exports(/ *(rw))</property><property><name>nfs.dump.dir</name><value>/var/nfstmp</value> # 當內存不足時可以放到這個臨時文件中</property> </configuration> # 創建轉儲目錄,并設置所有者,所有組 ~]# mkdir /var/nfstmp ~]# chown nfsuser.nfsuser /var/nfstmp # 由于 /usr/local/hadoop/logs也是root權限的,nfsuser用戶不能把日志寫進去,這里也要設置權限,這里由于rpcbind啟動要root用戶,就是把文件設置成nfsuser用戶,當啟動時也會自動改回來的 ~]# rm -rf /usr/local/hadoop/logs/* ~]# setfacl -m user:nfsuser:rwx /usr/local/hadoop/logs ~]# getfacl /usr/local/hadoop/logs

啟動portmap

注意:

  • 啟動portmap需要使用root用戶

  • 啟動nfs3需要使用core-site里面設置的代理用戶

  • 必須為代理用戶授權

-/var/nfstmp不授權上傳文件會出錯 -/usr/local/hadoop/logs不授權看不到報錯日志

  • 必須先啟動portmap之后再啟動nfs3

  • 如果portmap重啟了,在重啟之后nfs3也必須重啟

  • 啟動NFS網關

# 在nfs機器上 ~]# cd /usr/local/hadoop/ # 啟動portmap ~]# ./sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap## 測試 # 監聽端口111與進程 ~]# ss -nulpt | grep 111 ~]# jps 1376 Portmap 1416 Jps # 隨便找一臺同網段的主機 ~]# yum -y install rpcbind~]# rpcinfo -p nfs的ipprogram vers proto port service100000 2 udp 111 portmapper100000 2 tcp 111 portmapper# 刪除臨時文件 ~]# rm -rf /tmp/.hdfs-nfs # 授權nfsuser用戶啟動 ~]# sudo -u nfsuser ./sbin/hadoop-daemon.sh --script ./bin/hdfs start nfs3 ~]# sudo -u nfsuser jps 1452 Nfs3 1502 Jps

6.mount驗證

注:由于hadoop只能用版本4,但是這里用不了

  • 目前NFS只能使用v3版本

? ? ? ? ?-vers=3

  • 僅使用TCP作為傳輸協議

    -proto=tcp

  • 不支持隨機寫NLM

    -nolock禁用

  • access time的時間更新

? ? ? ? ? -noatime(mtime(文件的內容不同才會變),ctime(當屬性變化才會變的時間),atime(訪問才會變的時間))

  • 禁用acl擴展權限

? ? ? ? ? -noacl

  • 同步寫入,避免重排序寫入

? ? ? ? ? -sync

## 到剛剛安裝rpcbind的服務上 ~]# rpcinfo -p 192.168.1.55program vers proto port service100005 3 udp 4242 mountd100005 1 tcp 4242 mountd100000 2 udp 111 portmapper100000 2 tcp 111 portmapper100005 3 tcp 4242 mountd100005 2 tcp 4242 mountd100003 3 tcp 2049 nfs100005 2 udp 4242 mountd100005 1 udp 4242 mountd ~]# yum install -y nfs-utils ~]# showmount -e 192.168.1.55 Export list for 192.168.1.55: / * ~]# mount -t nfs -o vers=3,proto=tcp,nolock,noacl,noatime,sync 192.168.1.55:/ /mnt/ ~]# df -h Filesystem Size Used Avail Use% Mounted on 192.168.1.55:/ 118G 15G 104G 13% /mnt# vers :指定版本 # proto: 指定協議 # nolock: 不支持鎖(隨機寫) # noatime:把訪問就改時間關閉 # noacl: 不支持acl權限 # sync: 異步寫入

總結

以上是生活随笔為你收集整理的Hadoop集群管理与NFS网关的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。