编译并运行HBase应用
在程序代码完成开发后,您可以在Windows开发环境中运行应用。
操作步骤
- 在windows下使用REST API操作HBase集群时,JDK版本需为jdk1.8.0_60及以上版本。从集群环境中获取jdk的cacerts文件,并拷贝“/opt/Bigdata/jdk/jre/lib/security/cacerts”文件到windows上的JDK环境中“C:\Program Files\Java\jdk1.8.0_60\jre\lib\security”(不使用REST API操作HBase集群可跳过此步骤)。
- 在windows上配置集群的ip与主机名映射关系。登录集群后台,执行命令cat /etc/hosts后,把hosts文件中的ip与hostname映射关系拷贝到“C:\Windows\System32\drivers\etc\hosts”中。其中主机名请以查询结果为准。
192.168.0.90 node-master1BedB.089d8c43-12d5-410c-b980-c2728a305be3.com 192.168.0.129 node-ana-corezLaR.089d8c43-12d5-410c-b980-c2728a305be3.com
使用windows访问MRS集群来操作HBase,有如下两种方式:
- 申请一台windows的ECS访问MRS集群操作hbase。安装开发环境后运行样例代码。申请ECS访问MRS集群的步骤如下:
- 使用本机访问MRS集群操作HBase。为MRS集群中HBase服务的所有节点绑定弹性公网IP,在本机(即Windows机器)上配置集群的IP与主机名映射关系时,把IP替换为主机名对应的弹性公网IP,并修改导入样例的krb5.conf文件中"kdc","admin_server",“kpasswd_server”,“kdc_listen”,“kadmind_listen”和“kpasswd_listen”六个参数的ip(单master的集群没有后面三个参数则不必修改),使其对应于KrbServer中对应的弹性公网IP(由于普通集群未启用kerberos功能,可跳过此修改krb5.conf文件的步骤。),然后运行样例代码。绑定弹性公网IP步骤如下:
- 修改运行时环境配置。
修改样例代码中自带hbase-site.xml文件的配置,与实际环境中保持一致,配置列表如下:
- hbase.zookeeper.quorum: zookeeper实例的主机名,多个实例时以逗号分隔,必选。
- hbase.regionserver.kerberos.principal: regionserver的principal,与master的principal保持一致,仅开启kerberos功能集群需要配置该参数。
- hbase.master.kerberos.principal: hmaster的principal,与regionserver的principal保持一致,仅开启kerberos功能集群需要配置该参数。
- hadoop.security.authentication:hadoop鉴权模式,开启kerberos功能的集群需要配置该参数值为kerberos,否则不用配置。
- hbase.security.authentication:hbase鉴权模式,开启kerberos功能的集群需要配置该参数值为kerberos,否则不用配置。
上述参数可通过登录任一Master节点,从hbase客户端配置(“/opt/client/HBase/hbase/conf”)中获取。以获取 "hbase.zookeeper.quorum"的值为例,可登录任一Master节点执行如下命令获取:
grep "hbase.zookeeper.quorum" /opt/client/HBase/hbase/conf/* -R -A1
- 修改样例代码。
- 当前样例代码中操作HBase的接口有三种,分别是普通接口,HFS接口(MRS 1.9.x版本不再支持该接口),REST接口。调试不同API接口操作HBase时可以注释其他接口调用。这里以使用普通接口操作HBase为例,main方法中只包含如下代码段。
public static void main(String[] args) { try { init(); login(); } catch (IOException e) { LOG.error("Failed to login because ", e); return; } // getDefaultConfiguration(); conf = HBaseConfiguration.create(); // test hbase API HBaseExample oneSample; try { oneSample = new HBaseExample(conf); oneSample.test(); } catch (Exception e) { LOG.error("Failed to test HBase because ", e); } LOG.info("-----------finish HBase-------------------"); }
- 修改样例工程com.huawei.bigdata.hbase.examples.TestMain类中ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL的参数值。(未开启Kerberos认证集群可跳过此步)。
private static final String ZOOKEEPER_DEFAULT_SERVER_PRINCIPAL = "zookeeper/hadoop.4a049bf4_e74e_4545_9291_6fc6098d3723.com";
- 修改样例工程“src/main/resources”下的hbaseclient.properties文件。userKeytab.path,krb5.conf.path对应于从准备HBase应用开发用户获取的文件的地址。(未开启Kerberos认证集群可跳过此步)。
user.name=hbaseuser userKeytabName=userKeytab.path krb5ConfName=krb5.conf.path
- 若使用REST接口时需修改hbaseclient.properties中的rest.server.info,使其对应于rest server的ip:port(port默认为21309)。
rest.server.info=10.10.10.10:21309
- 从集群的master节点获取core-site.xml, hdfs-site.xml, hbase-site.xml文件,并放置到样例工程的“resources”下,即“src/main/resources”,文件获取路径为“/opt/client/HBase/hbase/conf”。MRS 1.9.2及其之后版本仅需修改自带的hbase-site.xml中的相应配置即可。
- 若使用申请的ECS访问HBase,可直接使用RESTServer的ip;若使用本机访问HBase则需使用该RESTServer绑定的弹性公网IP作为RESTServer的ip。
- HIndexExample样例工程仅在MRS 1.9.2及其以后版本中支持,需注意当前集群版本。
- HFSSample样例工程在MRS 1.9.x版本已移除,需注意当前集群版本。
- 当前样例代码中操作HBase的接口有三种,分别是普通接口,HFS接口(MRS 1.9.x版本不再支持该接口),REST接口。调试不同API接口操作HBase时可以注释其他接口调用。这里以使用普通接口操作HBase为例,main方法中只包含如下代码段。
- 运行样例。
在开发环境中(例如Eclipse中),右击“TestMain.java”,单击“Run as > Java Application”运行对应的应用程序工程。