生產調優4 HDFS-集群擴容及縮容(含服務器間數據均衡)


HDFS-集群擴容及縮容

添加白名單

白名單:在白名單的主機IP地址可以訪問集群,對集群進行數據的存儲。不在白名單的主機可以訪問集群,但是不會在主機上存儲數據
企業中:配置白名單,可以盡量防止黑客惡意訪問攻擊。

image

配置白名單的步驟

1.在NameNode節點的主機(hadoop102)/opt/module/hadoop-3.1.3/etc/hadoop目錄下分別創建whitelist和blacklist文件

創建白名單

[ranan@hadoop102 hadoop]$ vim whitelist
hadoop102
hadoop103
[ranan@hadoop102 hadoop]$ touch blacklist # 為后續黑名單做准備

2.在 /opt/module/hadoop-3.1.3/etc/hadoop下的hdfs-site.xml 配置文件中增加 dfs.hosts 配置參數

與當前集群建立聯系

[ranan@hadoop102 hadoop]$ vim hdfs-site.xml 
# 新增
<!-- 白名單 -->
<property>
<name>dfs.hosts</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/whitelist</value>
</property>
<!-- 黑名單 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>

# 分發給其他節點
[ranan@hadoop102 hadoop]$ xsync whitelist blacklist  hdfs-site.xml 

3.第一次添加白名單(黑名單)必須重啟集群,不是第一次,只需要刷新 NameNode 節點。

[ranan@hadoop102 hadoop-3.1.3]$ myhadoop.sh stop
[ranan@hadoop102 hadoop-3.1.3]$ myhadoop.sh start

4.在 web 瀏覽器上查看 DataNode

image

沒有104了,但是104還是啟動了相應的進程

[ranan@hadoop102 bin]$ jpsall
=============== hadoop102 ===============
2918 DataNode
2760 NameNode
3721 Jps
3515 JobHistoryServer
3310 NodeManager
=============== hadoop103 ===============
2947 NodeManager
2789 ResourceManager
3367 Jps
2558 DataNode
=============== hadoop104 ===============
3059 Jps
2825 NodeManager
2538 DataNode
2670 SecondaryNameNode

5.在 hadoop104 上執行上傳數據

[ranan@hadoop104 bin]$ hadoop fs -put myhadoop.sh /

客戶端還可以訪問集群
image

但是數據不會在hadoop104上存儲
image

二次配置白名單

1.增加hadoop104

[ranan@hadoop104 bin]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/
[ranan@hadoop104 hadoop]$ vim whitelist 
[ranan@hadoop104 hadoop]$ cat whitelist 
hadoop102
hadoop103
hadoop104
[ranan@hadoop104 hadoop]$ xsync whitelist 

2.刷新NameNode

[ranan@hadoop104 hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful

34.在 web 瀏覽器上查看 DataNode

image

3.刪除之前上傳的,重新進行提交

[ranan@hadoop104 bin]$ hadoop fs -put myhadoop.sh /

image

增加新服務器

需求

隨着公司業務的增長,數據量越來越大,原有的數據節點的容量已經不能滿足存儲數據
的需求,需要在原有集群基礎上動態添加新的數據節點

動態添加:不重啟已有集群

環境准備

在hadoop100主機上再克隆一台hadoop105主機

修改IP地址和主機名稱

[ranan@hadoop100 ~]$ sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=192.168.10.105 #修改成105
[ranan@hadoop100 ~]$ sudo vim /etc/hostname
hadoop105
[ranan@hadoop100 ~]$reboot

image

之前已經配置過了主機名及地址映射,所以就不用在所有節點/etc/host的文件中添加新節點。這里直接使用hadoop105進行連接

image

將hadoop102里module下的hadoop和jdk傳給hadoop105,拷貝環境變量給hadoop105

[ranan@hadoop102 opt]$ scp -r module/* ranan@hadoop105:/opt/module/
[ranan@hadoop102 etc]$ sudo scp /etc/profile.d/my_env.sh root@hadoop105:/etc/profile.d/
# 在105上使環境變量生效
[ranan@hadoop105 module]$ source /etc/profile

配置無密連接,hadoop102(NameNode)、hadoop103(ResourceManager)到hadoop105

# 102 - 105
[ranan@hadoop102 etc]$ cd ~/.ssh
[ranan@hadoop102 .ssh]$ ssh-copy-id hadoop105
# 103 - 105
[ranan@hadoop103 ~]$ cd .ssh
[ranan@hadoop103 .ssh]$ ssh-copy-id hadoop105

此時hadoop102上的data和log也在hadoop105上,但是hadoop105是不能用的
在hadoop105上刪除hadoop102的data和logs

[ranan@hadoop105 hadoop-3.1.3]$ rm -rf data/ logs/

服役新節點具體步驟

直接啟動 DataNode, 即可關聯到集群

[ranan@hadoop105 hadoop-3.1.3]$ hdfs --daemon start datanode
WARNING: /opt/module/hadoop-3.1.3/logs does not exist. Creating.
[ranan@hadoop105 hadoop-3.1.3]$ jps
2640 DataNode
2724 Jps
[ranan@hadoop105 hadoop-3.1.3]$ yarn --daemon start nodemanager
[ranan@hadoop105 hadoop-3.1.3]$ jps
2640 DataNode
2784 NodeManager
2887 Jps

查看

image

因為我們配置了白名單,所以沒有立即生效,那把hadoop105添加進去。
在hadoop102上的/opt/module/hadoop-3.1.3/etc/hadoop目錄下whiltelist
注意這里分發的腳本里面只有102、103、104所以這里還需要手動的在Hadoop105上修改

[ranan@hadoop102 hadoop]$ vim whitelist 
hadoop102
hadoop103
hadoop104
hadoop105
[ranan@hadoop102 hadoop]$ xsync whitelist 

不是第一次配置白名單,不用停止集群,直接刷新NameNode

[ranan@hadoop102 hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful

添加成功

image

在hadoop105上測試是否能上傳成功

[ranan@hadoop105 hadoop-3.1.3]$ hadoop fs -put wuguo.txt /

image

問題1 服務器間數據均衡

那么就存在一個問題,哪個節點上傳的數據最多,那么他存儲的數據就多,會導致存儲不均衡的情況
如果數據不均衡(hadoop105 數據少,其他節點數據多),怎么處理?
解決辦法:服務間數據均衡

問題2 105是怎么關聯到集群的

在核心配置文件core-site.xml 里 指定NameNode在哪個服務器上(hadoop102上),作為DataNode自動取報告了

DataNode啟動后告訴NameNode本機的塊信息(塊是否完好)

真正的修改需要/opt/module/hadoop-3.1.3/etc/hadoop/workers文件,添加hadoop105節點。

服務器間數據均衡

應用場景

場景1:如果經常在 hadoop102 和 hadoop104 上提交任務,且副本數為 2,由於數據本地性原則,就會導致 hadoop102 和 hadoop104 數據過多, hadoop103 存儲的數據量小。

場景2:新服役的服務器數據量比較少,需要執行集群均衡命令

image

服務器間數據均衡配置

開啟數據均衡命

[ranan@hadoop102 hadoop-3.1.3]$ cd /opt/module/hadoop-3.1.3
[ranan@hadoop102 hadoop-3.1.3]$ sbin/start-balancer.sh -threshold 10

對於參數 10,代表的是集群中各個節點(任意兩個節點)的磁盤空間利用率相差不超過 10%,可根據實際情況進行調整

我這里虛擬機數據量不大,所以執行了該命令沒反應

image

停止數據均衡命令

如果開啟命令執行時間過長,我們也可以停止

[ranan@hadoop102 hadoop-3.1.3]$ sbin/stop-balancer.sh

由於 HDFS 需要啟動單獨的 Rebalance Server 來執行 Rebalance 操作, 所以盡量
不要在 NameNode 上執行 start-balancer.sh,而是找一台比較空閑的機器

黑名單退役舊節點

黑名單:在黑名單的主機 IP 地址不可以訪問集群(待測試!),不能用來存儲數據。
企業中:配置黑名單,用來退役服務器。

image

黑名單配置步驟

編輯/opt/module/hadoop-3.1.3/etc/hadoop 目錄下的 blacklist 文件
需要在 hdfs-site.xml 配置文件中增加 dfs.hosts 配置參數

配置白名單時新建了,並在hdfs-site文件中增加了dfs.hosts.exclude配置參數,這里我們就不修改了

<!-- 黑名單 -->
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-3.1.3/etc/hadoop/blacklist</value>
</property>

之前已經重啟集群了,這里我們就相當於不是首次配置了,直接刷新NameNode節點就行

[ranan@hadoop102 hp]$ cd /opt/module/hadoop-3.1.3/etc/hadoop/
[ranan@hadoop102 hadoop]$ vim blacklist 
hadoop105
[ranan@hadoop102 hadoop]$ xsync blacklist # 分發,105節點手動添加(也可以不配置因為它被拉入了黑名單)
[ranan@hadoop102 hadoop]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful

網頁查看

如果立即查看,hadoop105處於Decommissioning(退役中)狀態,把hadoop105的副本復制給其他節點。
如下圖,把副本給了hadoop103

image

等待退役節點狀態為 decommissioned(所有塊已經復制完成),停止該節點及節點資源
管理器。 注意:如果副本數是 3,當前服役的節點小於等於 3,是不能退役成功的,需要修改
副本數后才能退役

image

終止進程
stop hadoop105 datanode/nodemanager

[ranan@hadoop105 hadoop]$ hdfs --daemon stop datanode
[ranan@hadoop105 hadoop]$ yarn --daemon stop nodemanager

退役時可能其他服務器數據猛增所以一般都需要集群數據在平衡

[ranan@hadoop102 hadoop]$sbin/start-balancer.sh -threshold 10


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM