方式一

package com.xxx.hadoop;

import com.sun.demo.jvmti.hprof.Tracker;
import com.sun.xml.bind.util.Which;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.HAUtil; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.WildcardType;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List; /**
* @Desription:
* @CreatedDate: 2018/1/5 10:01
* @Author:wangel.lee
*/
public class TestNodeActive {
public static void main(String[] args) throws IOException {
getActiveNameNode();
} /**
* 判断hadoop ha的active节点是否存活
* @throws IOException
*/
public static void getActiveNameNode() throws IOException {
String[] mapredJopTrackers = {"hdfs://10.1.1.12:8030","hdfs://10.1.1.11:8030"};
String[] fsDefaultNames = {"hdfs://10.1.1.12:8020","hdfs://10.1.1.11:8020"}; String hivePath = "";
for (int i = 0 ;i <2 ; i++) {
Configuration conf = createConfigurationDefault(mapredJopTrackers[i],fsDefaultNames[i]);
// 远程会出现问题 Windows测试需要如下配置
List<String> data = new ArrayList<String>();
FileSystem fileSystem = FileSystem.get(conf);
InetSocketAddress active = null;
try {
active = HAUtil.getAddressOfActive(fileSystem);
} catch ( Exception e ){
System.out.println("hostname:"+mapredJopTrackers[i]+" is not active.");
}
if( active == null ) continue;
InetAddress address = active.getAddress();
hivePath = "hdfs://" + address.getHostAddress() + ":" + active.getPort();
break;
}
System.out.println(hivePath);
} private static Configuration createConfigurationDefault(String mapredJopTracker, String fsDefaultName) throws IOException {
Configuration conf = new Configuration();
// 远程会出现问题 Windows测试需要如下配置
conf.set("mapred.jop.tracker", mapredJopTracker);
conf.set("fs.default.name", fsDefaultName);
System.setProperty("hadoop.home.dir", "E:\\ProgramFiles\\java\\hadoop\\hadoop-common-2.2.0-bin-master"); return conf;
}
}

方式二

package com.yanheap.hadoop;

import com.alibaba.druid.util.StringUtils;
import org.apache.commons.io.FileUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.HAUtil; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.URI;
import java.util.ArrayList;
import java.util.List; /**
* @Desription:
* @CreatedDate: 2018/1/5 14:48
* @Author:wangel.lee
*/
public class ZookeeperActive { private static String clusterName = "nameservice1";
private static final String HADOOP_URL = "hdfs://"+clusterName;
private static Configuration conf;
static{
conf = new Configuration();
conf = new Configuration();
conf.set("fs.defaultFS", HADOOP_URL);
conf.set("dfs.nameservices", clusterName);
conf.set("dfs.ha.namenodes."+clusterName, "nn1,nn2");
// 高可用的配置:当其中一个变成standy时,打印异常,并自动切换到另一个namedata去取数据
conf.set("dfs.namenode.rpc-address."+clusterName+".nn1", "10.1.1.12:8020");
conf.set("dfs.namenode.rpc-address."+clusterName+".nn2", "10.1.1.11:8020");
//conf.setBoolean(name, value);
conf.set("dfs.client.failover.proxy.provider."+clusterName,
"org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider");
} /**
* 读取ha的active节点
* @throws IOException
*/
private static void getActive() throws IOException {
FileSystem fileSystem = FileSystem.get(URI.create(HADOOP_URL), conf); long l1 = System.currentTimeMillis(); InetSocketAddress active = null;
//try {
active = HAUtil.getAddressOfActive(fileSystem);
//} catch ( Exception e ){
//e.printStackTrace();
//}
InetAddress address = active.getAddress();
String hivePath = "hdfs://" + address.getHostAddress() + ":" + active.getPort(); System.out.println("-------------------------------------->"+hivePath);
System.out.println("-------------------------------------->"+(System.currentTimeMillis()-l1));
} /**
* 读取hdfs中的文件
* @throws IOException
*/
private static void readFile() throws IOException {
FileSystem fileSystem = FileSystem.get(URI.create(HADOOP_URL), conf);
FSDataInputStream in = null;
BufferedReader br = null; try {
fileSystem = FileSystem.get(conf);
Path srcPath = new Path("/tmp/media_info.csv");
in = fileSystem.open(srcPath);
br = new BufferedReader(new InputStreamReader(in));
String line = null;
while (null != (line = br.readLine())) {
if (!StringUtils.isEmpty(line)) {
System.out.println("-------->:"+line);
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
throw e;
} finally {
br.close();
fileSystem.close();
} } public static void main(String[] args)throws IOException {
//getActive();
readFile();
} }

另,本地windows执行hadoop需要环境变量的支持,如下提供hadoop命令下载包,下载后直接添加环境变量对他的引用

链接:https://pan.baidu.com/s/1eRIHmdO 密码:ly38

hadoop ha 读取 activce状态的活动节点的更多相关文章

  1. Hadoop HA(高可用) 详细安装步骤

    什么是HA? HA是High Availability的简写,即高可用,指当当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用.(简言之,有两台机器 ...

  2. Hadoop技术之Hadoop HA 机制学习

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...

  3. hadoop HA 详解

    NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode ...

  4. Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式

    Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一说起周五,想必大家都特别 ...

  5. Hadoop HA方案调研

    原文成文于去年(2012.7.30),已然过去了一年,很多信息也许已经过时,不保证正确,与Hadoop学习笔记系列一样仅为留做提醒. ----- 针对现有的所有Hadoop HA方案进行调研,以时间为 ...

  6. hadoop HA分布式集群搭建

    概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...

  7. 1、hadoop HA分布式集群搭建

    概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...

  8. Hadoop HA 机制学习

    一.Hadoop 系统架构 1.1 Hadoop1.x和Hadoop2.x 架构 在介绍HA之前,我们先来看下Hadoop的系统架构,这对于理解HA是至关重要的.Hadoop 1.x之前,其官方架构如 ...

  9. Hadoop HA 搭建

    Hadoop HA 什么是 HA HA是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常 ...

随机推荐

  1. xml方式将dataset导出excel

    using System;using System.Collections;using System.Collections.Generic;using System.Data;using Syste ...

  2. SSM整合——完全版

    1, 2, 3, 4,项目建立好后: 覆盖pom.xml,地址在:https://blog.csdn.net/mark_lirenhe/article/details/80875266 alt+F5= ...

  3. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第十集之Nginx反向代理原理】(有参考其他文章)

    1,正向代理(代理客户机) 2,反向代理(代理服务器,所以叫反向代理) 3,集群+负载均衡 集群指的是将几台服务器集中在一起,实现同一业务. 负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台 ...

  4. 总结sql中in和as的用法

    as有两个用法 1 query时,用来返回重新指定的值 example : select id as systemId from user: 2用来copy另外一张表的所有数据 example:cre ...

  5. Java常用API及Math类

    一.API的概述 API——Application Programing Interface:应用程序编程接口,是java提供的一些预定义的函数: 目的:基于API实现程序的快速编写,只需了解其作用, ...

  6. Google Hack搜索技巧

    想了解更多搜索技巧,点击下面网站了解http://exploit-db.com/google-dorks Google Hack的一些整理 这里是google关键字的用法,要设置它为中文,则是 htt ...

  7. python查看对象用法

    python查看类用法: dir(object_name)

  8. ul无点标签左移

    ul标签去除掉点,ul li 块仍会在原来的位置,即与上一块内容相对右移一点. 这是 ul标签的默认padding值导致的. 修改style或者CSS中的class为如下即可 { list-style ...

  9. CSS-选择器权重计算

    权重计算规则 内联样式,如: style=" ",权值为1000. ID选择器,如:#content,权值为0100. 类,伪类和属性选择器,如.content,权值为0010. ...

  10. Linux下的计划任务at,batch,crontab

    0x00前言: 继上次的windows计划任务后,拓展研究下linux下的计划任务,能够执行计划任务有3个命令at,batch,crontab 所谓的计划任务就是定时启动某个程序,可以是一组shell ...