最近做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 35conf.set("hbase.rpc.timeout", "3000");//default 60sconf.set("hbase.rpc.shortoperation.timeout", "3000");}public static Configuration getHbaseConnection() {return conf;}}

参考链接:javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题

javahost(JVM虚拟DNS)解决hosts程序中hosts配置问题相关推荐

  1. 解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题

    解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 参考文章: (1)解决WPF程序中ListBox ItemsSource变化时不重置ScrollBar的问题 ...

  2. IDE解决算法4中环境配置问题algs.jar

    IDE解决算法4中环境配置问题algs.jar 首先我们要下载algs.jar 提取码:wsug ,这个东西官网是访问的慢而且CSDN大部分都要花币,我也是找了好久才找到的.我就直接给pan链接了. ...

  3. 如何解决”/”应用程序中的服务器错误

    如果你在做项目的时候出现了这样的错误,也就是我们在页面传参数的时候,传了个空值给控制器,它就会报这样的错误. 如果我们允许那个参数为空呢?也就是在int后加个问号 Int?:接收的参数允许为空. 这样 ...

  4. 解决树莓派程序中的中文乱码问题

      当我们在使用树莓派的时候,有时候需要将外部的程序放到树莓派中运行,而当我们的程序中含有中文是,一般在树莓派下会变成乱码,这时候我们要将树莓派中的乱码进行修改,但是相信大家会遇到一个问题: 就是明明 ...

  5. mysql providername_providername是什么 如何解决数据库切换中DBProviderName配置问题

    providername是什么,如何配置?解读数据库切换中DBProviderName配置问题? 为了适应应对各种数据库间切换,有时需要自定义写一个通用的SqlHelper.常用的做法就是在Syste ...

  6. 一次性解决Java程序中的乱码问题

    java在字符串中统一用Unicode表示. 对于任意一个字符串:String string = "测试字符串"; 如果源文件是GBK编码,操作系统默认环境编码也为GBK,那么编译 ...

  7. wangEditor关闭粘贴样式的过滤,解决小程序中xml溢出报错问题

    从别的网页上复制文本,粘贴到wangEditor富文本编辑器中,因为wangEditor自带粘贴样式过滤,粘贴过来的样式会被编辑器过滤掉,文章中有很多xml的标签,小程序解析时就会出现报错. 解决办法 ...

  8. android 调用百度sdk后运行不了,解决android程序中oncreate方法中调用百度地图MKSearchListener接口不执行的问题...

    因为工作的需要,我在做软件的时候用到地图,并且需要从地图中搜索公交.商户等信息,因此选择百度地图.百度地图搜索的poi搜索正好符合我的需求,但是软件完成后发现在软件第一次执行的时候总是出错,百度地图无 ...

  9. 解决centos7虚拟机中网络配置问题

    进入到虚拟机后, 编辑ifcfg-ens33 如果不知道地址可以先搜索找到地址然后进入 将bootproto改为 bootproto=static 将onboot改为 onboot=yes 添加 ip ...

最新文章

  1. YOLOV4知识点分析(二)
  2. lldb调试使用python脚本问题总结
  3. 收货地址 - 删除收货地址
  4. copy与mutableCopy的区别总结
  5. Oracle建立全文索引详解
  6. vue限制点击次数_解决vue 按钮多次点击重复提交数据问题
  7. hibernate mysql 配置文件_hibernate 框架的配置文件和映射文件以及详解
  8. java pic 通信_dsPic33E:RS485通信问题
  9. java log4j 相对路径_log4j中配置日志文件相对路径[续集]
  10. 网易考拉的服务架构如何从单体应用走向微服务化? | 技术头条
  11. AtomicLong并发编程
  12. purcell的emacs配置中的自动补全功能开启
  13. html php交互json 结果集,基于HTML模板和JSON数据的JavaScript交互(移动端)
  14. MatLab 求平均值,方差,标准差
  15. 基于php和mysql的网上购物系统设计与实现_基于PHP+MySQL的网上购物系统设计与实现...
  16. 在keil中创立一个头文件
  17. iOS微信第三方登录实现
  18. 20款简洁独特的logo设计
  19. Qt美化之基础控件美化
  20. docker php 环境实操

热门文章

  1. 【深度学习】最先进的图像分类算法:FixEfficientNet-L2
  2. 【NLP】巧借“他山之石”,生成信息量大、可读性强且稳定的摘要
  3. AI基础:特征工程-文本特征处理
  4. Transformer在图像复原领域的降维打击,ETH提出SwinIR:各项任务全面领先
  5. NLP炼丹笔记:Switch Transformers 朴实无华 大招秒杀
  6. 互联网1分钟 |1029
  7. LeetCode_97.交错字符串_没懂
  8. Storm入门(一)原理介绍
  9. Vue 中的compile操作方式
  10. Maven引入外部jar的几种方法