hadoop動態添加刪除節點datanode及恢復

来源:https://www.cnblogs.com/pu20065226/archive/2018/03/02/8493316.html
-Advertisement-
Play Games

1. 配置系統環境 主機名,ssh互信,環境變數等 本文略去jdk安裝,請將datanode的jdk安裝路徑與/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本hadoop2.7.5 修改/etc/sysconfig/network 然後執行命令hostname ...


1. 配置系統環境

主機名,ssh互信,環境變數等

本文略去jdk安裝,請將datanode的jdk安裝路徑與/etc/hadoop/hadoop-evn.sh中的java_home保持一致,版本hadoop2.7.5

修改/etc/sysconfig/network

然後執行命令
hostname 主機名
這個時候可以註銷一下系統,再重登錄之後就行了

[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostname -i
::1 127.0.0.1
[root@localhost ~]#
[root@localhost ~]# cat /etc/sysconfig/network
# Created by anaconda
NETWORKING=yes
HOSTNAME=slave2
GATEWAY=192.168.48.2
# oracle-rdbms-server-11gR2-preinstall : Add NOZEROCONF=yes
NOZEROCONF=yes
[root@localhost ~]# hostname slave2
[root@localhost ~]# hostname
slave2
[root@localhost ~]# su - hadoop
Last login: Sat Feb 24 14:25:48 CST 2018 on pts/1
[hadoop@slave2 ~]$ su - root

 

建datanode目錄並改所有者

(此處的具體路徑值,請參照namenode中/usr/hadoop/hadoop-2.7.5/etc/hadoop/hdfs-site.xml,core-site.xml中的dfs.name.dir,dfs.data.dir,dfs.tmp.dir等)

Su - root

# mkdir -p /usr/local/hadoop-2.7.5/tmp/dfs/data

# chmod -R 777 /usr/local/hadoop-2.7.5/tmp

# chown -R hadoop:hadoop /usr/local/hadoop-2.7.5

[root@slave2 ~]# mkdir -p /usr/local/hadoop-2.7.5/tmp/dfs/data
[root@slave2 ~]# chmod -R 777 /usr/local/hadoop-2.7.5/tmp
 [root@slave2 ~]# chown -R hadoop:hadoop /usr/local/hadoop-2.7.5
 [root@slave2 ~]# pwd
/root
[root@slave2 ~]# cd /usr/local/
[root@slave2 local]# ll
total 0
drwxr-xr-x. 2 root   root   46 Mar 21  2017 bin
drwxr-xr-x. 2 root   root    6 Jun 10  2014 etc
drwxr-xr-x. 2 root   root    6 Jun 10  2014 games
drwxr-xr-x  3 hadoop hadoop 16 Feb 24 18:18 hadoop-2.7.5
drwxr-xr-x. 2 root   root    6 Jun 10  2014 include
drwxr-xr-x. 2 root   root    6 Jun 10  2014 lib
drwxr-xr-x. 2 root   root    6 Jun 10  2014 lib64
drwxr-xr-x. 2 root   root    6 Jun 10  2014 libexec
drwxr-xr-x. 2 root   root    6 Jun 10  2014 sbin
drwxr-xr-x. 5 root   root   46 Dec 17  2015 share
drwxr-xr-x. 2 root   root    6 Jun 10  2014 src
[root@slave2 local]#

ssh互信,即實現 master-->slave2免密碼

master:

[root@hadoop-master ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.48.129    hadoop-master
192.168.48.132    slave1
192.168.48.131    slave2
[hadoop@hadoop-master ~]$ scp /usr/hadoop/.ssh/authorized_keys hadoop@slave2:/usr/hadoop/.ssh
The authenticity of host 'slave2 (192.168.48.131)' can't be established.
ECDSA key fingerprint is 1e:cd:d1:3d:b0:5b:62:45:a3:63:df:c7:7a:0f:b8:7c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'slave2,192.168.48.131' (ECDSA) to the list of known hosts.
hadoop@slave2's password: 
authorized_keys         
[hadoop@hadoop-master ~]$ ssh hadoop@slave2
Last login: Sat Feb 24 18:27:33 2018
[hadoop@slave2 ~]$
[hadoop@slave2 ~]$ exit
logout
Connection to slave2 closed.
[hadoop@hadoop-master ~]$

 

2. 修改namenode節點的slave文件,增加新節點信息

 

[hadoop@hadoop-master hadoop]$ pwd
/usr/hadoop/hadoop-2.7.5/etc/hadoop
[hadoop@hadoop-master hadoop]$ vi slaves 
slave1
slave2

3. namenode節點上,hadoop-2.7.3複製到新節點上,併在新節點上刪除data和logs目錄中的文件

Master

 

[hadoop@hadoop-master ~]$ scp -R hadoop-2.7.5 hadoop@slave2:/usr/hadoop

Slave2
[hadoop@slave2 hadoop-2.7.5]$ ll
total 124
drwxr-xr-x 2 hadoop hadoop  4096 Feb 24 14:29 bin
drwxr-xr-x 3 hadoop hadoop    19 Feb 24 14:30 etc
drwxr-xr-x 2 hadoop hadoop   101 Feb 24 14:30 include
drwxr-xr-x 3 hadoop hadoop    19 Feb 24 14:29 lib
drwxr-xr-x 2 hadoop hadoop  4096 Feb 24 14:29 libexec
-rw-r--r-- 1 hadoop hadoop 86424 Feb 24 18:44 LICENSE.txt
drwxrwxr-x 2 hadoop hadoop  4096 Feb 24 14:30 logs
-rw-r--r-- 1 hadoop hadoop 14978 Feb 24 18:44 NOTICE.txt
-rw-r--r-- 1 hadoop hadoop  1366 Feb 24 18:44 README.txt
drwxr-xr-x 2 hadoop hadoop  4096 Feb 24 14:29 sbin
drwxr-xr-x 4 hadoop hadoop    29 Feb 24 14:30 share
[hadoop@slave2 hadoop-2.7.5]$ pwd
/usr/hadoop/hadoop-2.7.5
[hadoop@slave2 hadoop-2.7.5]$ rm -R logs/*

4. 啟動新datanodedatanodenodemanger進程

先確認namenode和當前的datanode中,etc/hoadoop/excludes文件中待加入的主機,再進行下麵操作

[hadoop@slave2 hadoop-2.7.5]$ sbin/hadoop-daemon.sh start datanode
starting datanode, logging to /usr/hadoop/hadoop-2.7.5/logs/hadoop-hadoop-datanode-slave2.out
[hadoop@slave2 hadoop-2.7.5]$ sbin/yarn-daemon.sh start nodemanager
starting datanode, logging to /usr/hadoop/hadoop-2.7.5/logs/yarn-hadoop-datanode-slave2.out
[hadoop@slave2 hadoop-2.7.5]$
[hadoop@slave2 hadoop-2.7.5]$ jps
3897 DataNode
6772 NodeManager
8189 Jps
[hadoop@slave2 ~]$

5、在NameNode上刷新節點

 

[hadoop@hadoop-master ~]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
[hadoop@hadoop-master ~]$sbin/start-balancer.sh

 

6. 在namenode查看當前集群情況,

確認信節點已經正常加入

[hadoop@hadoop-master hadoop]$ hdfs dfsadmin -report
Configured Capacity: 58663657472 (54.63 GB)
Present Capacity: 15487176704 (14.42 GB)
DFS Remaining: 15486873600 (14.42 GB)
DFS Used: 303104 (296 KB)
DFS Used%: 0.00%
Under replicated blocks: 5
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0

-------------------------------------------------
Live datanodes (2):

Name: 192.168.48.131:50010 (slave2)
Hostname: 183.221.250.11
Decommission Status : Normal
Configured Capacity: 38588669952 (35.94 GB)
DFS Used: 8192 (8 KB)
Non DFS Used: 36887191552 (34.35 GB)
DFS Remaining: 1701470208 (1.58 GB)
DFS Used%: 0.00%
DFS Remaining%: 4.41%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Thu Mar 01 19:36:33 PST 2018


Name: 192.168.48.132:50010 (slave1)
Hostname: slave1
Decommission Status : Normal
Configured Capacity: 20074987520 (18.70 GB)
DFS Used: 294912 (288 KB)
Non DFS Used: 6289289216 (5.86 GB)
DFS Remaining: 13785403392 (12.84 GB)
DFS Used%: 0.00%
DFS Remaining%: 68.67%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Thu Mar 01 19:36:35 PST 2018


[hadoop@hadoop-master hadoop]$

 

7動態刪除datanode

 

7.1配置NameNode的hdfs-site.xml,

 

適當減小dfs.replication副本數,增加dfs.hosts.exclude配置

[hadoop@hadoop-master hadoop]$ pwd
/usr/hadoop/hadoop-2.7.5/etc/hadoop
[hadoop@hadoop-master hadoop]$ cat hdfs-site.xml
<configuration>
<property>
      <name>dfs.replication</name>
      <value>3</value>
</property>
  <property>
      <name>dfs.name.dir</name>
      <value>/usr/local/hadoop-2.7.5/tmp/dfs/name</value>
</property>
    <property>
      <name>dfs.data.dir</name>
      <value>/usr/local/hadoop-2.7.5/tmp/dfs/data</value>
    </property>
<property>
    <name>dfs.hosts.exclude</name>
    <value>/usr/hadoop/hadoop-2.7.5/etc/hadoop/excludes</value>
  </property>

</configuration>

7.2在namenode對應路徑(/etc/hadoop/)下新建excludes文件,

並寫入待刪除DataNode的ip或功能變數名稱

[hadoop@hadoop-master hadoop]$ pwd
/usr/hadoop/hadoop-2.7.5/etc/hadoop

[hadoop@hadoop-master hadoop]$ vi excludes ####slave2 192.168.48.131[hadoop@hadoop-master hadoop]$

7.3NameNode上刷新所有DataNode

 

hdfs dfsadmin -refreshNodes
sbin/start-balancer.sh

 

7.4在namenode查看當前集群情況,

確認信節點已經正常刪除,結果中已無slave2

[hadoop@hadoop-master hadoop]$ hdfs dfsadmin -report 

或者可以在web檢測界面(ip:50070)上可以觀測到DataNode逐漸變為Dead。

http://192.168.48.129:50070/

在datanode項,Admin state已經由“In Service“變為”Decommissioned“,則表示刪除成功

7.5停止已刪除的節點相關進程

[hadoop@slave2 hadoop-2.7.5]$ jps
9530 Jps
3897 DataNode
6772 NodeManager
[hadoop@slave2 hadoop-2.7.5]$ sbin/hadoop-daemon.sh stop datanode
stopping datanode
[hadoop@slave2 hadoop-2.7.5]$ sbin/yarn-daemon.sh stop nodemanager
stopping nodemanager
[hadoop@slave2 hadoop-2.7.5]$ jps
9657 Jps
[hadoop@slave2 hadoop-2.7.5]$ 

 

8恢復已刪除節點

執行7.2 中刪除相關信息,然後456即可

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 既然Windows API編程是與Windows操作系統進行交互,所以就必須對Windows操作系統如何運行應用程式的原理搞清楚。 1、保護模式 操作系統是依附於cpu硬體的,所以操作系統所具備的功能也是cpu所給予的。Intel的32位CPU有兩種主要的模式:實模式和保護模式。Dos操作系統就是運 ...
  • KeepAlived系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 本文目錄:1. keepalived+lvs:健康狀況檢查示例2. keepalived+lvs:高可用+健康檢查示例3. keepalived+lvs:多實例+高可用( ...
  • Docker是什麼? Docker是一個虛擬環境容器,可以將你的環境、代碼、配置文件等一併打包到這個容器中,併發布和應用到任意平臺中。比如,你在本地部署了git,jenkins等,可以將其與插件一併打包到容器中,部署到任何你想部署的環境。簡單而迅速 Docker的三個概念 Ubuntu Docker ...
  • 今天啟動虛擬機,ssh服務起不來,提示如下: Starting sshd: /usr/sbin/sshd: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such f ...
  • 請耐心閱讀,下麵有驚喜! 1.創建資料庫 2.創建各表(表結構;約束) 3.添加/插入 數據 4.查詢數據 5.修改數據 6.刪除數據 輔助blog MySQL 獲得當前日期時間 函數 獲得當前日期+時間(date + time)函數:now() mysql> select now(); + +| ...
  • The Employee table holds all employees including their managers. Every employee has an Id, and there is also a column for the manager Id. + + + + + | ...
  • problem: Write a SQL query to rank scores. If there is a tie between two scores, both should have the same ranking. Note that after a tie, the next ra ...
  • 1. 安裝 1.1. 下載spark安裝包 下載地址spark官網:http://spark.apache.org/downloads.html 這裡我們使用 spark-1.6.2-bin-hadoop2.6版本. 1.2. 規劃安裝目錄 /opt/bigdata 1.3. 解壓安裝包 tar - ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...