javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题_java hosts-程序员宅基地

技术标签: jvm  dns  大数据  hbase  

最近做HBase项目,需要配置hosts,在本地运行很方便,自己直接配置本地文件hosts就可以。但是项目要上线发布,其他团队成员要使用等等,我是否都要告诉他们怎么配置hosts问题,这样太麻烦,因此我试着寻求另一种解决方案。
如果在不同的运行环境访问不同的数据源服务器,为了方便切换是否使用域名替代IP?如果使用域名的话,在开发环境就需要配置hosts文件。我希望可以不用修改hosts文件就可直接运行程序。通过我的努力,终于找到了javahost(JVM虚拟DNS)来帮我解决这些烦恼。
1、配置maven依赖
在pom.xml加入

<dependency>
   <groupId>io.leopard</groupId>
    <artifactId>javahost</artifactId>
    <version>0.9.6</version>
</dependency>

如果是非maven用户,可以通过以下链接下载jar包.
io.leopard:javahost:0.9.6
2、编写hosts.propertie(src/main/resources/hosts.propertie)或者在类中定义
(1)hosts.propertie

user.mysql.guides.leopard.io=127.0.0.1
spark-01 10.10.xxx.xxx
spark-02 10.10.xxx.xxx

(2)HBaseHosts

public class HBaseHosts {

    private static Properties props = new Properties();
    static {
        props.put("spark-01", "10.10.xxx.xxx");
        props.put("spark-02", "10.10.xxx.xxx");
        props.put("spark-03", "10.10.xxx.xxx");
        props.put("spark-04", "10.10.xxx.xxx");    
    }

    public static void getJavaHost(){
        JavaHost.updateVirtualDns(props);
    }
}

3、设置虚拟DNS
(1)

public class HostsTest {

    private static void loadDns() throws IOException {
        Resource resource = new ClassPathResource("/hosts.properties");
        Properties props = PropertiesLoaderUtils.loadProperties(resource);
        JavaHost.updateVirtualDns(props);
    }

    public static void main(String[] args) throws Exception {
        loadDns();
        JavaHost.printAllVirtualDns();// 打印所有虚拟DNS记录
        System.out.println("IP:" + InetAddress.getByName("user.mysql.guides.leopard.io").getHostAddress());// 验证一下解析是否正确
        JettyServer.start();// 启动Jetty服务器
    }
}

(2)

public class HBaseUtil {

    private static Configuration conf;
    static {
        System.setProperty("hadoop.home.dir", Thread.currentThread().getContextClassLoader().getResource("hadoop-common-220-bin-master").getPath());

        HBaseHosts.getJavaHost();

        conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "");
        conf.set("hbase.zookeeper.property.clientPort", "2181");
        conf.set("zookeeper.znode.parent", "/hbase");

        conf.set("hbase.client.retries.number", "1");//default 35
        conf.set("hbase.rpc.timeout", "3000");//default 60s
        conf.set("hbase.rpc.shortoperation.timeout", "3000");
    }

    public static Configuration getHbaseConnection() {
        return conf;
    }
 }
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/eff666/article/details/52061223

智能推荐

kill端口对应进程_kill 1024端口进程-程序员宅基地

文章浏览阅读1.4k次。@author StormMa @date 2017-02-13 生命不息,奋斗不止!> kill80端口的进程lsof -i :8080|grep -v "PID"|awk '{print "kill -9",$2}'|sh_kill 1024端口进程

从0单排:学风侏儒——零样本学习3篇论文-程序员宅基地

文章浏览阅读394次。Zero shot learning主要是zero-shot learning相关论文的阅读,主要关注于视频方面。零样本问题现在处理视频的很少,主要是因为零样本自身就有不少的急需解决的问题:domain shiftHubness problemsemantic gap详情可以看这篇文章 零次学习(Zero-Shot Learning)入门1. 15. Objects2a..._零样本学习论文

vue3 + jsx + antd antd组件的table组件使用必备知识点_antd table组件center关键词-程序员宅基地

文章浏览阅读1.4k次。//vue3+jsx+antd// antd组件中 table组件的使用细节const model = defineComponent({name: ‘model’,setup() {let pageObj = reactive({pageCur: 1, // 当前的页数pageSize: 10, // 一页显示的条数total: 0 //总共的条数})// 表格的第一行 一般做为标题内容let tableTitle = [{title: ‘标题1’, // 标题1dataI_antd table组件center关键词

STM32F4寄存器串口DMA汇总-程序员宅基地

文章浏览阅读1.6k次。1.初始化//RCC RCC->APB1ENR|=1<<20; //使能串口5时钟 RCC->APB1ENR|=1<<19; //使能串口4时钟 RCC->APB1ENR|=1<<18; //使能串口3时钟 RCC->APB1ENR|=1<<17; //使能串口2时钟 R..._dma1_stream2

第035讲: 图形界面用户入门:EasyGui | 学习记录(小甲鱼零基础入门学习Python)_easygui图形界面编程入门-程序员宅基地

文章浏览阅读927次。(标答出处: 鱼C论坛)《零基础入门学习Python》测试题:_easygui图形界面编程入门

用IntelliJ IDEA 社区版配置web开发环境-程序员宅基地

文章浏览阅读2.4k次。IntelliJ IDEA社区版缺少的是Web方面的开发模块旗舰版: 社区版: 要用 IDEA 社区版进行web开发的话,需要自己手动配置由于IDEA社区版(Commun..._idea社区版指定不了环境

随便推点

使用object_detection_api进行训练和预测_object_detector.create 设置迭代次数-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏3次。使用object_detection_api进行训练和预测将object_detection_api安装好以后,我们可以使用其进行transfer learning从而实现对新检测应用的快速学习,当然也可以使用训练好的模型进行预测。以下分别讲如何使用现有模型进行预测以及在训练好的模型基础上使用新数据集学习新的模型。 官网提供了在linux下使用的说明,这里说明如何在windows下进行使用,..._object_detector.create 设置迭代次数

Linux常用命令整理(适合初学)_linux常用命令大全新手入门-程序员宅基地

文章浏览阅读3.1k次,点赞6次,收藏38次。常用命令整理(适合初学)_linux常用命令大全新手入门

VMware下的Centos6.7安装VMware-Tools与共享文件夹使用问题_vcsa 6.7系统共享文件夹-程序员宅基地

文章浏览阅读792次。虚拟机Centos系统安装VMware-Tools详细步骤1.找到虚拟机选项,安装VMWare Tools(ps:我已经安装过会显示重新安装)2.下载好后啥都不用管,先在Centos中开启终端进入该下载路径下的光驱命令:cd /media/VMware\ Tools/ <Tools前面有空格>命令:ls -l <ll怕看错成1,就还是写全写吧>3.解压..._vcsa 6.7系统共享文件夹

python成绩录入系统gui_Python GUI项目实战(一)登录窗体的设计与实现-程序员宅基地

文章浏览阅读1.1k次。前言前面我们学习了Python GUI 图型化界面Tkinter的基础知识,为了检测我们的学习成果,学以致用。我们从今天开始做一个综合Tkinter案例--基于Tkinter的学生信息管理系统,一方面熟悉Tkinter项目的开发,另一方面可以把我们前面的学习专辑《小雨学Python》的知识综合在一起。基础功能介绍说明:由于我们尚未学习数据库的内容,所以我们这个应用程序开发的过程中,暂时通过文件的读..._self.geometry

android studio集成 百度云推送项目实战 注意事项-程序员宅基地

文章浏览阅读627次,点赞7次,收藏30次。说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。还有。

gbk与gb2312的区别_c#中gbk和gb2312有什么区别-程序员宅基地

文章浏览阅读763次。gbk与gb2312的区别举报描述不清违规检举侵权投诉|分享|2011-08-30 12:07 maozi_zhang | 浏览 61443 次可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。gbk 搜索资料 我有更好的答案举报描述不清违规检举侵权投诉|2011-08-30 12:30 网友采纳_c#中gbk和gb2312有什么区别