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查看所有帮助信息

hdfs haadmin使用,DataNode动态上下线,NameNode状态切换管理,数据块的balance,HA下hdfs-api变化(来自学习资料)

 

可以看到,状态操作的命令示例:

查看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();

             

         }

     

}

 

 

 

 

 

上一篇:SQL物化视图 自动更新 定时刷新


下一篇:《React Native移动开发实战》一一第2章 全局解析React Native开发的基础