利用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

主页:http://www.cnblogs.com/shangbingbing

空间:http://shangbingbing.qzone.qq.com

HBase应用开发回顾与总结系列之四:HBase配置管理类接口设计的更多相关文章

  1. HBase应用开发回顾与总结系列之一:概述HBase设计规范

      概述 笔者本人接触研究HBase也有半年之久了,虽说不上深入和系统,但至少算是比较沉迷.作为部门里大数据技术的探路者,笔者还要承担起技术传播的职责,所以在摸索研究的过程中总是不断地进行总结和测试, ...

  2. HBase应用开发回顾与总结系列之三:RowKey行键生成器工具

      所谓RowKey行键生成器,是指通过软件工具制定行键生成策略,并可将策略信息保存成本地策略文件,待需要时再将本地策略文件序列化成行键生成策略对象,传入数据行信息后可自动生成RowKey行键. 那么 ...

  3. HBase应用开发回顾与总结系列之二:RowKey行键设计规范

    2. RowKey行键设计规范 2.1. RowKey四大特性 2.1.1 字符串类型 虽然行键在HBase中是以byte[]字节数组的形式存储的,但是建议在系统开发过程中将其数据类型设置为Strin ...

  4. HBase(一): c#访问hbase组件开发

    HDP2.4安装系列介绍了通过ambari创建hbase集群的过程,但工作中一直采用.net的技术路线,如何去访问基于Java搞的Hbase呢? Hbase提供基于Java的本地API访问,同时扩展了 ...

  5. 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 ...

  6. 单元测试系列之四:Sonar平台中项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...

  7. 用SignalR 2.0开发客服系统[系列2:实现聊天室]

    前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...

  8. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3 ...

  9. 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...

随机推荐

  1. mysql 增、删、改、查 、函数、执行次序

    这些是最基础的部分,若果这些不能满足你的需求,可以到http://www.w3school.com.cn中查询 增删改: 增 insert into<表名>(<列名列表>(如果 ...

  2. requirejs:杏仁的优化(almond)

    这里只是调侃一下,“杏仁”其实指的是almond,requirejs作者的另一个开源项目,它的定位是作为requirejs的一个替代品. 本文概要: 1. 使用场景 2. 打包例子:未使用almond ...

  3. js引入php 用来加载静态页面 输出到页面中

    HTML页面中加入代码 <script type="text/javascript" src="http://www.域名.com/js.php?id=tjyd&q ...

  4. 在64位Windows7上安装64位Oracle11g

    我一直在用Oracle10g数据库,最近想看看11g怎么样,就试着装了一下,在安装过程中遇到的麻烦还不少,幸好有搜索引擎,根据前辈的指点,磕磕绊绊地也将Oracle装上了,作一下记录,以后也许能用得着 ...

  5. #8.10.16总结# 属性选择符 伪对象选择符 CSS的常用样式

    属性选择符 E[att] E[att="val"] E[att~="val"] E[att^="val"] E[att$="val ...

  6. ie7下<a href="javascript:;">标签不反应

    <a  href="javascript:;" onclick="functionOne()"> 点击</a> <script&g ...

  7. 在Kali Linux下安装与配置OpenVas

    以下是我的Kali版本号: 执行安装命令: apt-get install openvas 安装完成后可以在漏洞分析菜单下查看到OpenVas相关选项. 以下为安装完成后需要用到的几个命令: open ...

  8. 在Sharepoint 2013中,使用JS判断当前用户是否在某个组里面

    使用Sharepoint客户端对象模型,判断当前用户是否在某个组里面. 在View 和 Edit List Item的时候使用,使用户编辑修改List Item的时候有权限的区分. 在Edit 页面加 ...

  9. 100个高质量Java开发者博客

    ImportNew注:原文中还没有100个.作者希望大家一起来推荐高质量的Java开发博客,然后不段补充到这个列表.欢迎你也参与推荐优质的Java开发博客.(声明一下:我们的数学不是体育老师教的!:) ...

  10. Android的消息循环机制 Looper Handler类分析

    Android的消息循环机制 Looper Handler类分析 Looper类说明   Looper 类用来为一个线程跑一个消息循环. 线程在默认情况下是没有消息循环与之关联的,Thread类在ru ...