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缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点.通常 ...
随机推荐
- Fiddler教程--简介
1.开发环境host配置 自己修改系统的host来回挺麻烦的 2.前后的接口调试 3.线上bugfix 4.性能分析和优化 5.等等... 工作原理 一个代理服务器 地址改为 127.0.0.1:88 ...
- PHPcurl的post/get请求
post/get请求 function getCurl($url,$data=null,$method='post',$https=true){ //1. 初始化 $ch = curl_init(); ...
- 001 Hello Security 的框架搭建
一:STS 1.下载STS 官网:http://spring.io/tools 使用一个干净的STS进行操作学习. 2.jdk检查 3.添加自己的maven 4.使用tomcat 二:新建项目 1.新 ...
- day15 函数的使用方法:递归函数
这里归纳的知识点主要就是: 浮点数,复数, int,整形:float,浮点数:complx,复数: # 实数: # 有理数 有限小数 1.2 # 无限循环小数 1.23232323232323.... ...
- Raspberry Camera详解+picamera库+Opencv控制
使用树莓派的摄像头,将树莓派自身提供的picamera的API数据转换为Python Oencv可用图像数据: # import the necessary packages from picamer ...
- win 10 slmgr.vbs -xpr 无法运行,被豆麦笔记打开解决方法
win 10 slmgr.vbs -xpr 无法运行,被豆麦笔记打开解决方法 删除这个豆麦笔记 如果之前已经在 控制面板 程序中卸载过,那么是找不到的,我们先运行 slmgr.vbs -xpr,这个时 ...
- jenkins+springboot+svn linux 自动化部署
需要下载 publish over ssh 插件(远程上传项目到服务器) Maven Integration plugin 插件(构建maven项目) 然后将各种配置配置好 最终项目在服务器上的路径是 ...
- 对Promise的一些深入了解
1.介绍promise和模仿Promise.all和Promise.race promise的设计主要是解决回调地狱(接收结果用回调函数来处理,但必须传入回调函数)的问题,由一层层嵌套回调函数改为由t ...
- 持续集成时 travis 和 codecov 等 yaml 文件的配置
最近在项目中在配置CodeCov 以及Travis 和 AppVeyor做持续集成时,遇到了一些问题,也解决了一些问题.顺便拿来分享一下. 首先时Travis,这个主要是来跑基于 Linux 环境下的 ...
- PHP Kohana入门体验教程
打开入口文件kohana目录下的index.php, 左边选中的文件和右边选中的是对应,如果重命名的话两边都要修改. 设置程序默认时区D:\xampp\htdocs\kohana\applicatio ...