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缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常 ...
随机推荐
- Codeforces 830D Singer House 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/CF830D.html 题解 考虑用 $dp[i][j]$ 表示深度为 $i$ 的树里,有 $j$ 条路径的方案数 ...
- js让元素获取焦点
js让元素获取焦点$("#startAddress").focus();
- String str = new String("xyz") 会创建几个对象
转载:https://blog.csdn.net/andychen314/article/details/50857313 答案是 两个对象,要理解这个,就要知道string类的工作原理.下面来慢慢分 ...
- python面试题之Python是如何进行内存管理的
python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收. ...
- django-admin 仿写stark组件action,filter筛选过滤,search查询
写在StandLi里面的方法都是通过ModelSubject这个类里面的stand_li方法,在它里面用StandLi这个类实例化出来一个对象,这个实例化出来的对象把数据传给前端HTML模板进行渲染, ...
- VS项目启动后 提示ID为*******的进程当前未运行
就是VS2015中的这种问题,启动调试时,右下角根本没有IISPress图标出现.我的工程是因为突然停电,就再也调试不了了! 解决办法: 用文本编辑器打开Web项目下的{X}.csproj文件,然后查 ...
- HDU 3829 Cat VS Dog (最大独立集)【二分图匹配】
<题目链接> 题目大意: 动物园有n条狗.m头猫.p个小孩,每一个小孩有一个喜欢的动物和讨厌的动物.如今动物园要转移一些动物.假设一个小孩喜欢的动物在,不喜欢的动物不在,他就会happy. ...
- POJ 1470 Closest Common Ancestors (模板题)(Tarjan离线)【LCA】
<题目链接> 题目大意:给你一棵树,然后进行q次询问,然后要你统计这q次询问中指定的两个节点最近公共祖先出现的次数. 解题分析:LCA模板题,下面用的是离线Tarjan来解决.并且为了代码 ...
- Jquery操作一遍过
什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果一个对象是 jQuery 对象, 那么它就可以使用 jQu ...
- 从函数式编程到Ramda函数库(二)
Ramda 基本的数据结构都是原生 JavaScript 对象,我们常用的集合是 JavaScript 的数组.Ramda 还保留了许多其他原生 JavaScript 特性,例如,函数是具有属性的对象 ...