Hadoop集群管理与NFS网关
目錄
一.Hadoop集群管理
1.訪問集群文件系統
2.重新初始化集群
3.增加新的節點
4.修復節點
5.刪除節點
二.NFS網關
1.NFS網關概述
2.NFS網關架構圖
3.HDFS用戶授權
4.NFS網關服務搭建概述
5.配置NFS網關
6.mount驗證
一.Hadoop集群管理
集群架構圖例
1.訪問集群文件系統
web頁面查看
-
能看,能讀,不能寫入
命令行
-
能看,能讀,不能寫入
用集群分析數據
## 首先要把文件上傳到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.sh3.增加新的節點
●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準備主機
| newnode | 192.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:44.修復節點
●修復節點比較簡單,步驟與增加節點一-致
????????-注意:新節點的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分鐘,需要這么久主要是因為遷移數據以及保持服務的穩定性統計表
| node-1 | 28k | 516M | 516M |
| node-2 | 28k | 516.04M | 664.15 M |
| node-3 | 28k | 793.15M | 922.16 M |
| newnode | 24k | 277.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 1012.NFS網關架構圖
首先客戶端mount掛載NFS,當是讀請求的時候HDFS直接到后臺集群查找并返回值;當是寫的時候會在nfs創建一個臨時文件夾,在調用HDFS切塊最后寫入集群
準備主機
| nfsgw | 192.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 nfsuserHDFS集群授權
## 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-develnfs. 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網關
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网关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python之钉钉机器人编程
- 下一篇: jump-server 安装部署