HBase设计之HBase配置管理类接口设计(4)

来源:互联网 发布:在淘宝上买了二手钢琴 编辑:程序博客网 时间:2024/06/05 10:09

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


原创粉丝点击