hdfs haadmin使用,DataNode動態上下線,NameNode狀態切換管理,資料塊的balance,HA下hdfs-api變化(來自學習資料)
1.2.4叢集運維測試
HA叢集中兩個namenode狀態的管理命令
[root@mini2 hadoop-2.6.4]# bin/hdfs haadmin Usage: DFSHAAdmin [-ns <nameserviceId>] [-transitionToActive <serviceId> [--forceactive]] [-transitionToStandby <serviceId>] [-failover [--forcefence] [--forceactive] <serviceId> <serviceId>] [-getServiceState <serviceId>] [-checkHealth <serviceId>] [-help <command>] |
示例: 切換nn2為active
bin/hdfs haadmin -transitionToActive nn2--forcemanual
1、Datanode動態上下線
Datanode動態上下線很簡單,步驟如下:
a) 準備一臺伺服器,設定好環境
b) 部署hadoop的安裝包,並同步叢集配置
c) 聯網上線,新datanode會自動加入叢集
d) 如果是一次增加大批datanode,還應該做叢集負載重均衡
(start-balancer.sh -threshold 8 ##指定磁碟利用率,詳情見下節 3)
2、Namenode狀態切換管理
使用的命令上hdfs haadmin
可用 hdfs haadmin –help檢視所有幫助資訊
可以看到,狀態操作的命令示例:
檢視namenode工作狀態
hdfs haadmin -getServiceState nn1 |
將standby狀態namenode切換到active
hdfs haadmin –transitionToActive nn1 |
將active狀態namenode切換到standby
hdfs haadmin –transitionToStandby nn2 |
3、資料塊的balance
啟動balancer的命令:
start-balancer.sh -threshold 8
執行之後,會有Balancer程序出現:
上述命令設定了Threshold為8%,那麼執行balancer命令的時候,首先統計所有DataNode的磁碟利用率的均值,然後判斷如果某一個DataNode的磁碟利用率超過這個均值Threshold,那麼將會把這個DataNode的block轉移到磁碟利用率低的DataNode,這對於新節點的加入來說十分有用。Threshold的值為1到100之間,不顯示的進行引數設定的話,預設是10。
1.2.5 HA下hdfs-api變化
客戶端需要nameservice的配置資訊,其他不變
/** * 如果訪問的是一個ha機制的叢集 * 則一定要把core-site.xml和hdfs-site.xml配置檔案放在客戶端程式的classpath下 * 以讓客戶端能夠理解hdfs://ns1/中 “ns1”是一個ha機制中的namenode對——nameservice * 以及知道ns1下具體的namenode通訊地址 * @author * */ public class UploadFile { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://ns1/"); FileSystem fs = FileSystem.get(new URI("hdfs://ns1/"),conf,"hadoop"); fs.copyFromLocalFile(new Path("g:/eclipse-jee-luna-SR1-linux-gtk.tar.gz"), new Path("hdfs://ns1/")); fs.close(); } } |