hadoop ha 读取 activce状态的活动节点
方式一
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状态的活动节点的更多相关文章
- Hadoop HA(高可用) 详细安装步骤
什么是HA? HA是High Availability的简写,即高可用,指当当前工作中的机器宕机后,会自动处理这个异常,并将工作无缝地转移到其他备用机器上去,以来保证服务的高可用.(简言之,有两台机器 ...
- Hadoop技术之Hadoop HA 机制学习
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...
- hadoop HA 详解
NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode ...
- Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式
Hadoop ha CDH5.15.1-hadoop集群启动后,两个namenode都是standby模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一说起周五,想必大家都特别 ...
- Hadoop HA方案调研
原文成文于去年(2012.7.30),已然过去了一年,很多信息也许已经过时,不保证正确,与Hadoop学习笔记系列一样仅为留做提醒. ----- 针对现有的所有Hadoop HA方案进行调研,以时间为 ...
- hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- 1、hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- Hadoop HA 机制学习
一.Hadoop 系统架构 1.1 Hadoop1.x和Hadoop2.x 架构 在介绍HA之前,我们先来看下Hadoop的系统架构,这对于理解HA是至关重要的.Hadoop 1.x之前,其官方架构如 ...
- Hadoop HA 搭建
Hadoop HA 什么是 HA HA是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常 ...
随机推荐
- 高性能之html
下面是alloyteam的总结,还是那句老话站在巨人的肩膀上看的远. 避免使用Iframe Iframe也叫内联frame,可以把一个HTML文档嵌入到另一个文档中.使用iframe的好处是被嵌入的文 ...
- JVM及class文件加载问题-学习使人快乐4
今天看了些粗浅的JVM原理的知识 1.class文件编译过程: 词法分析 语法分析 源码 ---------Token流-------------语法树----------字节码 2.classloa ...
- BZOJ2120 数颜色 莫队 带修莫队
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2120.html 题目传送门 - BZOJ2120 题意 给定一个长度为 $n$ 的序列 $a$ ,有 ...
- HDU1693 Eat the Trees 插头dp
原文链接http://www.cnblogs.com/zhouzhendong/p/8433484.html 题目传送门 - HDU1693 题意概括 多回路经过所有格子的方案数. 做法 最基础的插头 ...
- 056 Java搭建kafka环境
1.使用Java项目搭建 2.新目录 3.添加项目支持 4.添加mavem与scala 5.修改pom <?xml version="1.0" encoding=" ...
- BroadcastReceiver工作原理
--摘自<android插件化开发指南> 1.动态注册过程是注册Receiver并通知AMS,发送内容包括IntentFilter.一个实现了IIntentReceiver接口的Binde ...
- 845. Greatest Common Divisor
描述 Given two numbers, number a and number b. Find the greatest common divisor of the given two numbe ...
- Java 作业 二
编写一个Java应用程序,统计数组{1,3,4,7,2,1,1,5,2,5,7,2,1,1,3},统计显示每种数字其出现的次数以及出现最多和最少次数的数字. package hi; public cl ...
- Scrapy基础(三) ------xpath基础
xpath简介 1,使用路径表达式在xml和html中解析 2,包含标准函数路(所有库支持的xpath语法一致) 3,W3C标准 节点: <body> 第一个节点: <h ...
- CC2431 代码分析②-CC2431狂轰滥炸
CC2431 code review : CC2431 狂轰滥炸 在上一篇中的最后我们分析到CC2431 开始喊出第一声,这里我们逐步分析从第一声到后面的狂轰滥炸! 上代码 /************ ...