Hadoop集群管理与NFS网关
目錄
一.Hadoop集群管理
1.訪問集群文件系統(tǒng)
2.重新初始化集群
3.增加新的節(jié)點
4.修復(fù)節(jié)點
5.刪除節(jié)點
二.NFS網(wǎng)關(guān)
1.NFS網(wǎng)關(guān)概述
2.NFS網(wǎng)關(guān)架構(gòu)圖
3.HDFS用戶授權(quán)
4.NFS網(wǎng)關(guān)服務(wù)搭建概述
5.配置NFS網(wǎng)關(guān)
6.mount驗證
一.Hadoop集群管理
集群架構(gòu)圖例
1.訪問集群文件系統(tǒng)
web頁面查看
-
能看,能讀,不能寫入
命令行
-
能看,能讀,不能寫入
用集群分析數(shù)據(jù)
## 首先要把文件上傳到hdfs # 創(chuàng)建文件夾 ~]# 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包程序,在每個節(jié)點上要有(這里用默認(rèn)的,如果有其他的在每個節(jié)點上也要拷貝一份) ~]# ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar wordcount /input /output# /input是文件系統(tǒng)上的,/output是文件系統(tǒng)上的?
?web頁面查看(不能直接查看,要下載下來)
?
2.重新初始化集群
警告:該方法會丟失所有數(shù)據(jù)
1、停止集群 /usr/local/hadoop/sbin/stop-all.sh ?
2、刪除所有節(jié)點的 /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.增加新的節(jié)點
●HDFS 新增節(jié)點
-啟動一個新的系統(tǒng),設(shè)置SSH免密碼登錄
-在所有節(jié)點修改/etc/hosts, 增加新節(jié)點的主機(jī)信息
-安裝java運行環(huán)境(java-1. 8.0-open jdk-deve 1)
-拷貝NamNode的/usr/ local/hadoop到新節(jié)點
-同步配置文件到所有機(jī)器
為防止當(dāng)多個節(jié)點同時寫入數(shù)據(jù)而導(dǎo)致新增節(jié)點死機(jī),所以這邊要設(shè)置一個帶跨(防止ddos攻擊)
●在新節(jié)點啟動DataNode
~]# /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode●設(shè)置帶寬,平衡數(shù)據(jù)
~]# /usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth500000000 # 500000000五百兆 ~]# /usr/local/hadoop/sbin/start-balancer.sh # 啟動數(shù)據(jù)平衡,當(dāng)數(shù)據(jù)丟失時,會自動從其他服務(wù)上找回●查看狀態(tài)
~]# /usr/local/hadoop/bin/hdfs dfsadmin -report由于nodemanager不負(fù)責(zé)保存數(shù)據(jù),所以增加節(jié)點相對簡單,環(huán)境配置與datanode-致
●增加節(jié)點(newnode)
~]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager●查看節(jié)點(ResourceManager)
~]# /usr/local/hadoop/bin/yarn node -list準(zhǔn)備主機(jī)
| newnode | 192.168.1.54 | 最低配置2核2G |
新節(jié)點安裝
在 hadoop1 上執(zhí)行
~]# 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 節(jié)點執(zhí)行
# 安裝java的環(huán)境 ~]# yum install -y java-1.8.0-openjdk-devel # 刪除日志,方便后期排錯 ~]# cd /usr/local/hadoop && rm -rf logs/* # 啟動數(shù)據(jù)節(jié)點 ~]# /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode # 設(shè)置同步帶跨 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -setBalancerBandwidth 500000000 # 啟動數(shù)據(jù)平衡 ~]# /usr/local/hadoop/sbin/start-balancer.sh # 設(shè)置master可以自動管理新增節(jié)點,不設(shè)置也可以手動管理(這里不設(shè)置自動管理,)# nodemanager提供計算能力的,數(shù)據(jù)來源文件系統(tǒng),利用cpu來計算,本身不存儲如何數(shù)據(jù)的 ~]# /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager ~]# jps 1186 DataNode 1431 NodeManager 1535 Jps如果要設(shè)置自動管理則需要在這里HDFS添加slave管理主機(jī)
驗證集群(hadoop1上執(zhí)行)
~]# /usr/local/hadoop/bin/hdfs dfsadmin -report ... ... ------------------------------------------------- Live datanodes (4): ~]# /usr/local/hadoop/bin/yarn node -list ... ... Total Nodes:44.修復(fù)節(jié)點
●修復(fù)節(jié)點比較簡單,步驟與增加節(jié)點一-致
????????-注意:新節(jié)點的ip和主機(jī)名要與損壞節(jié)點的一致
●如果舊節(jié)點數(shù)據(jù)丟失,新節(jié)點可以自動恢復(fù)數(shù)據(jù)
●上線以后會自動恢復(fù)數(shù)據(jù),如果數(shù)據(jù)量非常巨大,需要一段時間
? ?●修復(fù)節(jié)點的過程與新增節(jié)點一致
5.刪除節(jié)點
為了測試刪除節(jié)點數(shù)據(jù),這邊準(zhǔn)備點數(shù)據(jù),并上傳文件系統(tǒng)
~]# cat hadoop-2.7.7.tar.gz >> mydata # 上傳數(shù)據(jù)之前先查看數(shù)據(jù)占比 ~]# /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配置數(shù)據(jù)遷移 hdfs-site.xml(hadoop1上做,不需要同步)
# 在文件中添加主機(jī)清單文件 ~]# vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml<property><name>dfs.hosts.exclude</name><value>/usr/local/hadoop/etc/hadoop/exclude</value></property>配置排除主機(jī)列表,并遷移數(shù)據(jù)(hadoop1上執(zhí)行)
# 在刪除配置文件中添加 newnode,默認(rèn)文件不存在 ~]# echo newnode >/usr/local/hadoop/etc/hadoop/exclude # 遷移數(shù)據(jù)前查看 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report | grep Decommission Decommission Status : Normal Decommission Status : Normal Decommission Status : Normal Decommission Status : Normal# 遷移數(shù)據(jù) ~]# /usr/local/hadoop/bin/hdfs dfsadmin -refreshNodes # 查看狀態(tài),僅當(dāng)節(jié)點狀態(tài)為 Decommissioned 時候才可以下線 ~]# /usr/local/hadoop/bin/hdfs dfsadmin -report數(shù)據(jù)的三種狀態(tài)
Normal:正常狀態(tài)
Decommissioned in Progress:數(shù)據(jù)正在遷移
Decommissioned:數(shù)據(jù)遷移完成
注意:僅當(dāng)狀態(tài)變成Decommissioned 才能down機(jī)下線
下線節(jié)點(注:newnode執(zhí)行)
~]# /usr/local/hadoop/sbin/hadoop-daemon.sh stop datanode ~]# /usr/local/hadoop/sbin/yarn-daemon.sh stop nodemanager # 注:下線需要30~40分鐘,需要這么久主要是因為遷移數(shù)據(jù)以及保持服務(wù)的穩(wěn)定性統(tǒng)計表
| 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網(wǎng)關(guān)
1.NFS網(wǎng)關(guān)概述
●NFS網(wǎng)關(guān)的用途
????????-用戶可以通過操作系統(tǒng)兼容的本地NFSv3客戶端來瀏覽HDFS文件系統(tǒng)
????????-用戶可以通過掛載點直接流化數(shù)據(jù)
????????-允許HDFS作為客戶端文件系統(tǒng)的一部分被掛載
????????-支持文件附加,但是不支持隨機(jī)寫(nolock)
????????- NFS網(wǎng)關(guān)目前只支持NFSv3和TCP協(xié)議(vers=3, proto=tcp)
可以把HDFS mount成一個文件夾
● 代理用戶
-代理用戶是NFS網(wǎng)關(guān)訪問集群的授權(quán)用戶
????????在NameNode和NFSGW上添加代理用戶
????????代理用戶的UID,GID, 用戶名必須完全相同
-如果因特殊原因用戶UID、GID、 用戶名不能保持- -致,需要我們配置nfs. map的靜態(tài)映射關(guān)系
-例如:
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網(wǎng)關(guān)架構(gòu)圖
首先客戶端mount掛載NFS,當(dāng)是讀請求的時候HDFS直接到后臺集群查找并返回值;當(dāng)是寫的時候會在nfs創(chuàng)建一個臨時文件夾,在調(diào)用HDFS切塊最后寫入集群
準(zhǔn)備主機(jī)
| nfsgw | 192.168.1.55 | 最低配置1核1G |
3.HDFS用戶授權(quán)
hadoop1與nfsgw都要添加用戶
## hadoop1機(jī)器 ~]# groupadd -g 800 nfsuser ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuser## nfsgw機(jī)器 ~]# groupadd -g 800 nfsuser ~]# useradd -g 800 -u 800 -r -d /var/hadoop nfsuserHDFS集群授權(quán)
## hadoop1機(jī)器 # 文件全部內(nèi)容,下面兩配置是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所在組*全部授權(quán)</property><property><name>hadoop.proxyuser.nfsuser.hosts</name><value>*</value> # nfs所在組*全部授權(quán)</property> </configuration> # 停止集群,同步數(shù)據(jù),為了排錯方便可以把日志清空 ~]# /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網(wǎng)關(guān)服務(wù)搭建概述
-
nfsgw網(wǎng)關(guān)服務(wù)
- portmap服務(wù)(與系統(tǒng)rpcbind沖突)- nfs3服務(wù)(與系統(tǒng)nfs沖突)
-卸載NFSGW的rpcbind與nfs-utils
yum remove y rpcbind nfs-utils-
NFS網(wǎng)關(guān)具有雙重角色,他既是一-個HDFS的客戶端程序,又是一個NFS服務(wù)器,所以NFS網(wǎng)關(guān)必須能訪問到集群中的所有節(jié)點,配置/etc/hosts
-
NFS網(wǎng)關(guān)配置
-NFS網(wǎng)關(guān)同樣需要Hadoop的相關(guān)配置文件
-同步NameNode的hadoop安裝目錄到NFSGW
rsync -aXSH --delete hadoop1:/usr/local/hadoop /usr/local/-安裝JAVA運行環(huán)境(java-1.8.0-openjdk-devel)
yum install -y java-1.8.0-openjdk-develnfs. exports授權(quán)
-
nfs. exports. allowed. hosts
-默認(rèn)情況下,export可 以被任何客戶端掛載。為了更好的控制訪問,可以設(shè)置屬性。值和字符串對應(yīng)機(jī)器名和訪問策略,通過空格來分割。機(jī)器名的格式可以是單一的主機(jī)、Java的正則表達(dá)式或者IPv4地址
-使用rw或ro可以指定導(dǎo)出目錄的讀寫或只讀權(quán)限。
-默認(rèn)設(shè)置為只讀權(quán)限
-
nfs. dump臨時目錄配置
- nfs. dump. dir
-用戶需要更新文件轉(zhuǎn)儲目錄參數(shù)。NFS客 戶端經(jīng)常重新安排寫操作,順序的寫操作會隨機(jī)到達(dá)NFS網(wǎng)關(guān)。這個目錄常用于臨時存儲無序的寫操作。對于每個文件,無序的寫操作會在他們積累在內(nèi)存中超過一-定閾值(如,1M) 時被轉(zhuǎn)儲。需要確保有足夠的空間的目錄,先使用內(nèi)存緩存,當(dāng)內(nèi)存不足時使用硬盤
- NFS網(wǎng)關(guān)在設(shè)置該屬性后需要重啟
5.配置NFS網(wǎng)關(guān)
~]# 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默認(rèn)安裝的,這邊直接拷貝 ~]# rsync -aXSH --delete hadoop1:/usr/local/hadoop /usr/local/# 這邊以及配好了三個參數(shù)(文件系統(tǒng),指定副本數(shù),刪除節(jié)點文件) ~]# 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> # 指定/目錄掛載以讀寫來執(zhí)行,類似于目錄/etc/exports(/ *(rw))</property><property><name>nfs.dump.dir</name><value>/var/nfstmp</value> # 當(dāng)內(nèi)存不足時可以放到這個臨時文件中</property> </configuration> # 創(chuàng)建轉(zhuǎn)儲目錄,并設(shè)置所有者,所有組 ~]# mkdir /var/nfstmp ~]# chown nfsuser.nfsuser /var/nfstmp # 由于 /usr/local/hadoop/logs也是root權(quán)限的,nfsuser用戶不能把日志寫進(jìn)去,這里也要設(shè)置權(quán)限,這里由于rpcbind啟動要root用戶,就是把文件設(shè)置成nfsuser用戶,當(dāng)啟動時也會自動改回來的 ~]# 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里面設(shè)置的代理用戶
-
必須為代理用戶授權(quán)
-/var/nfstmp不授權(quán)上傳文件會出錯 -/usr/local/hadoop/logs不授權(quán)看不到報錯日志
-
必須先啟動portmap之后再啟動nfs3
-
如果portmap重啟了,在重啟之后nfs3也必須重啟
-
啟動NFS網(wǎng)關(guān)
6.mount驗證
注:由于hadoop只能用版本4,但是這里用不了
-
目前NFS只能使用v3版本
? ? ? ? ?-vers=3
-
僅使用TCP作為傳輸協(xié)議
-proto=tcp
-
不支持隨機(jī)寫NLM
-nolock禁用
-
access time的時間更新
? ? ? ? ? -noatime(mtime(文件的內(nèi)容不同才會變),ctime(當(dāng)屬性變化才會變的時間),atime(訪問才會變的時間))
-
禁用acl擴(kuò)展權(quán)限
? ? ? ? ? -noacl
-
同步寫入,避免重排序?qū)懭?/p>
? ? ? ? ? -sync
## 到剛剛安裝rpcbind的服務(wù)上 ~]# 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: 指定協(xié)議 # nolock: 不支持鎖(隨機(jī)寫) # noatime:把訪問就改時間關(guān)閉 # noacl: 不支持acl權(quán)限 # sync: 異步寫入總結(jié)
以上是生活随笔為你收集整理的Hadoop集群管理与NFS网关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python之钉钉机器人编程
- 下一篇: jump-server 安装部署