ARCHITECTURE:Hadoop完全分佈式,NFS網關

安裝部署

  • Hadoop三大核心組件
    – HDFS已經部署完畢https://blog.csdn.net/LgMizar/article/details/103972345
    – MapReduce
    – Yarn
  • 系統規劃
主機 角色 軟件
192.168.1.60 hadoop1 NameNode和SecondaryNameNode和ResourceManager HDFS和YARN
192.168.1.61 node1 DataNode和NodeManager HDFS和YARN
192.168.1.62 node2 DataNode和NodeManager HDFS和YARN
192.168.1.63 node3 DataNode和NodeManager HDFS和YARN
  • hadoop1操作
    配置mapred-site.xml分佈式計算框架
cd /usr/local/hadoop/etc/hadoop/
cp mapred-site.xml.template mapred-site.xml 
vim mapred-site.xml
<configuration>
	<property>  
	    <name>mapreduce.framework.name</name> #資源管理類
        <value>yarn</value>
    </property>
</configuration>

配置yarn-site.xml資源管理

im yarn-site.xml
<configuration>
	<property>
        <name>yarn.resourcemanager.hostname</name> #resourcemanager地址
        <value>nn01</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name> #使用哪個計算框架
        <value>mapreduce_shuffle</value> #計算框架的名稱
    </property>
</configuration>

同步配置

for i in {61..63}
do
rsync -aSHX --delete /usr/local/hadoop 192.168.1.$i:/usr/local/ &
done

驗證配置

cd /usr/local/hadoop
./sbin/start-dfs.sh
Starting namenodes on [nn01]
nn01: namenode running as process 23408. Stop it first.
node1: datanode running as process 22409. Stop it first.
node2: datanode running as process 22367. Stop it first.
node3: datanode running as process 22356. Stop it first.
Starting secondary namenodes [nn01]
nn01: secondarynamenode running as process 23591. Stop it first.

./sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-root-resourcemanager-nn01.out
node2: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node2.out
node3: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node3.out
node1: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-root-nodemanager-node1.out

ansible all -m shell -a 'jps'
node3 | SUCCESS | rc=0 >>
1588 NodeManager
1930 Jps
1484 DataNode
node1 | SUCCESS | rc=0 >>
4707 DataNode
11987 Jps
4821 NodeManager
node2 | SUCCESS | rc=0 >>
1378 DataNode
1828 Jps
1482 NodeManager

web訪問hadoop

http://192.168.1.60:50070/   #--namenode web頁面(nn01)
http://192.168.1.60:50090/   #--secondory namenode web頁面(nn01)
http://192.168.1.61:50075/   #--datanode web頁面(node1,node2,node3)
http://192.168.1.60:8088/    #--resourcemanager web頁面(nn01)
http://192.168.1.61:8042/    #--nodemanager web頁面(node1,node2,node3)

Hadoop詞頻統計

./bin/hadoop fs -ls /  #查看集羣文件系統的根,沒有內容
./bin/hadoop fs -mkdir  /aaa     #在集羣文件系統下創建aaa目錄
./bin/hadoop fs -ls /  #再次查看,有剛創建的aaa目錄
Found 1 items
drwxr-xr-x   - root supergroup          0 2018-09-10 09:56 /aaa

./bin/hadoop fs -touchz  /fa  #在集羣文件系統下創建fa文件
./bin/hadoop fs -put *.txt /aaa    #上傳*.txt到集羣文件系統下的aaa目錄
./bin/hadoop fs -ls /aaa  #查看
Found 3 items
-rw-r--r--   2 root supergroup      86424 2018-09-10 09:58 /aaa/LICENSE.txt
-rw-r--r--   2 root supergroup      14978 2018-09-10 09:58 /aaa/NOTICE.txt
-rw-r--r--   2 root supergroup       1366 2018-09-10 09:58 /aaa/README.txt

./bin/hadoop fs -get  /aaa  #下載集羣文件系統的aaa目錄
./bin/hadoop jar  \
 share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar  wordcount /aaa /bbb  #hadoop集羣分析大數據,hadoop集羣/aaa裏的數據存到hadoop集羣/bbb下
./bin/hadoop fs -cat /bbb/*      #查看集羣裏的數據

增加節點

  • 增加一個新的節點node4步驟
    – 啓動新系統,設置新節點的主機信息
    – 在所有節點修改/etc/hosts,增加新節點的主機信息
    – 安裝java運行環境(java-1.8.0.openjck-devel)
    – 修改NameNode的salves文件增加該節點
    – 拷貝NameNode的/usr/local/hadoop到本機
    – 在該節點啓動DataNode
    /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode
  • 查看狀態
jps
24439 Jps
24351 DataNode
  • node4設置同步帶寬並同步數據
./bin/hdfs dfsadmin -setBalancerBandwidth 60000000
Balancer bandwidth is set to 60000000
./sbin/start-balancer.sh

./bin/hdfs dfsadmin -report #查看集羣狀態

修復節點

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

刪除節點

– 修改修改NameNode的salves文件

#去掉之前添加的node4
node1
node2
node3

– 配置NameNode的hdfs-site.xml

vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml        
#在此配置文件裏面加入下面四行
<property>                                      
    <name>dfs.hosts.exclude</name>
    <value>/usr/local/hadoop/etc/hadoop/exclude</value>
</property>

– 增加dfs.hosts.exclude配置文件,寫入要刪除的節點主機名

vim /usr/local/hadoop/etc/hadoop/exclude
node4

– 導出數據hadoop上:

./bin/hdfs dfsadmin -refreshNodes
Refresh nodes successful
./bin/hdfs dfsadmin -report  #查看node4顯示Decommissioned
- Normal : 正常狀態
- Decommissioned in Program : 數據正在遷移
- Decommissioned : 數據遷移完成
- 注意 : 僅當狀態變成Decommissioned才能down機下線

newnode上:

./sbin/hadoop-daemon.sh stop datanode    #停止datanode
stopping datanode

./sbin/yarn-daemon.sh start nodemanager  #yarn 增加 nodemanager
./sbin/yarn-daemon.sh stop  nodemanager  #停止nodemanager
stopping nodemanager

./bin/yarn node -list        
//yarn 查看節點狀態,還是有node4節點,要過一段時間纔會消失
Total Nodes:4
         Node-Id         Node-State    Node-Http-Address    Number-of-Running-Containers
     node3:34628            RUNNING           node3:8042                               0
     node2:36300            RUNNING           node2:8042                               0
     newnode:42459            RUNNING           node4:8042                               0
     node1:39196            RUNNING           node1:8042                               0

NFS網關

  • NFS網關用途
    – 用戶可以通過操作系統兼容的本地NFSv3客戶端來瀏覽HDFS文件系統
    – 用戶可以從HDFS文件系統下載文檔到本地文件系統
    – 用戶可以通過掛載點直接流化數據,支持文件附加,但是不支持隨機寫(意思是可以順序寫,不能加鎖)
    – NFS網關支持NFSv3和允許HDFS作爲客戶端文件系統的一部分被掛載
  • 特性
    – HDFS超級用戶是與NameNode進程本身具有相同標示的用戶,超級用戶可以執行任何操作,因爲權限檢查永遠不會認爲超級用戶失敗
  • 注意事項
    – 在非安全模式下,運行網關進程的用戶是代理用戶
    – 在安全模式下,Kerberos keytab中的用戶是代理用戶
  • 配置代理用戶
    – 在NameNode和NFSGW上添加用戶
    – 代理用戶的UID,GID,用戶名必須完全相同
    – 如果因特殊原因客戶端的用戶和NFS網關的用戶UID不能保持一致,需要我們配置nfs.map的靜態映射關係
    – nfs.map
    uid 10 100 # Map the remore UID 10 the local UID 100
    gid 11 101 # Map the remote GID 11 the local GID 101

基礎準備

創建代理用戶(hadoop01和nfsgw上面操作)

groupadd -g 800 nfsuser
useradd -u 800 -g 800 -r -d /var/hadoop nfsuser

更改主機名,配置/etc/hosts(/etc/hosts在hadoop01和nfsgw上面配置)

vim /etc/hosts
192.168.1.60  nn01
192.168.1.61  node1
192.168.1.62  node2
192.168.1.63  node3
192.168.1.64  node4
192.168.1.65  nfsgw

配置core-site.xml
hadoop.proxyuser.{代理用戶}.groups
hadoop.proxyuser.{代理用戶}.hosts
在非安全模式下,運行網關的用戶爲代理用戶
groups爲掛載用戶所使用的組
hosts爲掛載點爲主機地址

./usr/local/hadoop/sbin/stop-all.sh  #停止所有服務
 > /usr/local/hadoop/etc/hadoop/exclude #清空之前的刪除節點
vim /usr/local/hadoop/etc/hadoop/core-site.xml # 添加下面
vim core-site.xml
    <property>
        <name>hadoop.proxyuser.nfsuser.groups</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.nfsuser.hosts</name>
        <value>*</value>
    </property>

同步配置到node1,node2,node3

 for i in {61..63}
 do 
 rsync -aXSH --delete /usr/local/hadoop/ 192.168.1.$i:/usr/local/hadoop/  & 
done

啓動集羣

/usr/local/hadoop/sbin/start-dfs.sh
/usr/local/hadoop/bin/hdfs  dfsadmin -report #查看狀態

NFSGW配置

  • 配置步驟
    – 啓動一個新系統,卸載rpcbind、nfs-utils
    – 配置/etc/hsots,添加所有NameNode和DataNode的主機名與Ip對應關係
    – 安裝java運行環境(java-1.8.0-openjdk-devel)
    –同步NameNode的/usr/local/hadoop到本機
    – 配置hdfs-site.xml
    – 啓動服務

安裝java-1.8.0-openjdk-devel和rsync

yum -y install java-1.8.0-openjdk-devel
rsync -avXSH --delete  192.168.1.60:/usr/local/hadoop /usr/local/ 

創建數據根目錄 /var/hadoop(在NFSGW主機上面操作)

mkdir /var/hadoop

創建轉儲目錄,並給用戶nfs 賦權

mkdir /var/nfstmp
chown nfsuser:nfsuser /var/nfstmp

給/usr/local/hadoop/logs賦權(在NFSGW主機上面操作)
在這裏插入圖片描述
在這裏插入圖片描述

setfacl -m user:nfsuser:rwx /usr/local/hadoop/logs
vim /usr/local/hadoop/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>

啓動服務

/usr/local/hadoop/sbin/hadoop-daemon.sh --script ./bin/hdfs start portmap        
#portmap服務只能用root用戶啓動
jps
23714 Jps
23670 Portmap

su - nfsuser
cd /usr/local/hadoop/
./sbin/hadoop-daemon.sh  --script ./bin/hdfs start nfs3  
#nfs3只能用代理用戶啓動
jps                    
1362 Jps
1309 Nfs3 

exit
jps   #root用戶執行可以看到portmap和nfs3
1216 Portmap
1309 Nfs3
1374 Jps

客戶端實現開機自動掛載

showmount -e 192.168.1.65
Export list for 192.168.1.65:
/ *
vim /etc/fstab #永久掛載
192.168.1.65:/  /mnt/ nfs  vers=3,proto=tcp,nolock,noatime,sync,noacl,_netdev 0 0 
#臨時掛載  mount -t nfs -o vers=3,proto=tcp,nolock,noatime,sync,noacl 192.168.1.65:/  /mnt/ 
mount -a
df -h
192.168.1.65:/  120G   16G  105G   13% /mnt
rpcinfo -p 192.168.1.65
   program vers proto   port  service
    100005    3   udp   4242  mountd
    100005    1   tcp   4242  mountd
    100000    2   udp    111  portmapper
    100000    2   tcp    111  portmapper
    100005    3   tcp   4242  mountd
    100005    2   tcp   4242  mountd
    100003    3   tcp   2049  nfs
    100005    2   udp   4242  mountd
    100005    1   udp   4242  mountd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章