HBase应用开发回顾与总结系列之四:HBase配置管理类接口设计
利用Eclipse进行HBase应用开发时,至少需要确定三个配置信息,如下表所示:
#hbase config
#HMaster服务部署主机及端口号
hbase.master=hdp-wuyong:60010
#Zookeeper端口号
hbase.zookeeper.property.clientPort=2181
#Zookeeper服务部署主机信息
hbase.zookeeper.quorum=hdp-songjiang,hdp-lujunyi,hdp-wuyong
我们将以上信息配置进hadoop.config.properties文件中,系统调用HBase接口方法之前,初始化加载此配置信息即可。
对HBase配置信息的管理,我们专门设计了一个工具类,叫做HBaseConfigUtil,主要功能包括初始化加载HBase配置信息、构建HBase Configuration实例、检查与HBase集群的通信以及关闭相关链接等。主要代码如下所示:
import java.io.File;
import java.util.HashMap;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HConnectionManager;
import com.hnepri.common.util.PropertiesUtil;
/**
* Description: HBase配置管理工具类<br>
* Copyright: Copyright (c) 2015<br>
* Company: 河南电力科学研究院智能电网所<br>
* @author shangbingbing 2015-01-01编写
* @version 1.0
*/
public class HBaseConfigUtil {
/**
* 加载解析HBase自定义配置信息。<br>
* 需在系统启动时调用此方法加载自定义配置信息,否则将采用默认配置或者无法连接HBase。
*/
public static void loadHBaseConfigProperties() {
HashMap<String,String> pps = PropertiesUtil.readProperties("hbase.config.properties");
HBaseConfigUtil.setHbaseConfigItemList(pps);
}
private static Configuration configuration = null;
/**
* hbase配置信息列表,其中key中存储参数名称,譬如master.hadoop;value中存储参数值,譬如master.hadoop:60010等
*/
private static HashMap<String,String> hbaseConfigItemList = new HashMap<String,String>();
/**
* 获取hbase配置信息列表
* @return
*/
public static HashMap<String, String> getHBaseConfigItemList() {
return hbaseConfigItemList;
}
/**
* 设置hbase配置信息列表
* @param hbaseConfigItemList
*/
public static void setHbaseConfigItemList(HashMap<String, String> hbaseConfigItemList) {
HBaseConfigUtil.hbaseConfigItemList = hbaseConfigItemList;
}
/**
* 添加hbase配置信息
* @param key
* @param value
*/
public static void addHBaseConfigItem(String key,String value) {
if(hbaseConfigItemList.containsKey(key)) {
hbaseConfigItemList.remove(key);
}
hbaseConfigItemList.put(key, value);
}
/**
* 删除hbase配置信息
* @param key
*/
public static void removeHBaseConfigItem(String key) {
if(hbaseConfigItemList.containsKey(key)) {
hbaseConfigItemList.remove(key);
}
}
/**
* 获取HBase Configuration对象
* @return
*/
public static Configuration getHBaseConfig() {
if(configuration == null) {
configuration = HBaseConfiguration.create();
try {
//解决winutils.exe不存在的问题
File workaround = new File(".");
System.getProperties().put("hadoop.home.dir", workaround.getAbsolutePath());
new File("./bin").mkdirs();
new File("./bin/winutils.exe").createNewFile();
// conf.addResource("hbase-site.xml");
//初始化设置zookeeper相关配置信息
if(hbaseConfigItemList != null && hbaseConfigItemList.size() > 0) {
for(String key : hbaseConfigItemList.keySet()) {
String value = hbaseConfigItemList.get(key);
configuration.set(key, value);
}
}
}
catch (Exception ex) {
System.out.println(ex.toString());
}
}
return configuration;
}
/**
* 刷新重置HBase配置对象
*/
public static void initHBaseConfig() {
configuration = null;
}
/**
* 关闭所有连接
*/
public static void closeAllConnections() {
HConnectionManager.deleteAllConnections();
}
/**
* 关闭当前连接
*/
public static void closeConnection() {
HConnectionManager.deleteConnection(configuration);
}
/**
* 检查客户端与HBase集群的通信状况。
* @return 返回true则表示正常,false表示异常。
*/
public static boolean checkHBaseAvailable() {
try {
HBaseAdmin.checkHBaseAvailable(configuration);
return true;
} catch (Exception e) {
return false;
}
}
}
作者:商兵兵
单位:河南省电力科学研究院智能电网所
QQ:52190634
HBase应用开发回顾与总结系列之四:HBase配置管理类接口设计的更多相关文章
- HBase应用开发回顾与总结系列之一:概述HBase设计规范
概述 笔者本人接触研究HBase也有半年之久了,虽说不上深入和系统,但至少算是比较沉迷.作为部门里大数据技术的探路者,笔者还要承担起技术传播的职责,所以在摸索研究的过程中总是不断地进行总结和测试, ...
- HBase应用开发回顾与总结系列之三:RowKey行键生成器工具
所谓RowKey行键生成器,是指通过软件工具制定行键生成策略,并可将策略信息保存成本地策略文件,待需要时再将本地策略文件序列化成行键生成策略对象,传入数据行信息后可自动生成RowKey行键. 那么 ...
- HBase应用开发回顾与总结系列之二:RowKey行键设计规范
2. RowKey行键设计规范 2.1. RowKey四大特性 2.1.1 字符串类型 虽然行键在HBase中是以byte[]字节数组的形式存储的,但是建议在系统开发过程中将其数据类型设置为Strin ...
- HBase(一): c#访问hbase组件开发
HDP2.4安装系列介绍了通过ambari创建hbase集群的过程,但工作中一直采用.net的技术路线,如何去访问基于Java搞的Hbase呢? Hbase提供基于Java的本地API访问,同时扩展了 ...
- Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程
原文:Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程 Red Gate系列之四 SQL Data Compare ...
- 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...
- 用SignalR 2.0开发客服系统[系列2:实现聊天室]
前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...
- 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]
前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3 ...
- 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]
前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...
随机推荐
- Lucene.net站内搜索—5、搜索引擎第一版实现
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
- Node-webkit 资料笔记
静不下心写学习笔记了,因为发现了这篇文章:<用node-webkit开发多平台的桌面客户端> 另外官网上针对“package.json”的配置参数也已经很详尽了,连我英文不好的也差不多能看 ...
- Nibbler – 免费的网站测试和指标评分工具
Nibbler 是一款免费的工具,用于测试网站的各个方面指标.输入任意网站的地址,Nibbler 会给你一份报告,列出网站的10个关键领域的分数,包括可访问性,用户体验,搜索引擎优化,社交媒体和技术等 ...
- Javascript到PHP加密通讯的简单实现
其实内容主要来源于上一篇博文,只是重新组织了语言,并做了原理性的阐述,更容易理解:P ----------------------------------------- 华丽的分割线 -------- ...
- SharePoint 2013 修改表单认证登录页面
前 言 之前的博客我们介绍了如何为SharePoint配置表单登陆,但是,登陆页面是丑.很丑.非常丑.特别非常丑!我们现在就介绍一下如何定制SharePoint表单登陆页面! SharePoint 表 ...
- java连接hbase报错
报错信息如下: The node /hbase is not in ZooKeeper. It should have been written by the master. Check the va ...
- sharepoint custom web service
创建自定义 ASP.NET Web 服务 http://msdn.microsoft.com/zh-cn/library/ms464040.aspx
- Android Contextual Menus之一:floating context menu
Android Contextual Menus之一:floating context menu 上下文菜单 上下文相关的菜单(contextual menu)用来提供影响UI中特定item或者con ...
- git 上的pull request 是什么意思?
1.git 上有常见的pull request 功能 2.pull request 的含义 解释一: 有一个仓库,叫Repo A.你如果要往里贡献代码,首先要Fork这个Repo,于是在你的Gi ...
- nginx反向代理配置及优化
nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...