• 沒有找到結果。

注意事项

3.4 调测程序

3.4.1 在 Windows 中调测程序

} }

LOG.info("Exiting grantACL.");

}

Shell命令方式:

命令行# 赋权

grant <user> <permissions>[ <table>[ <column family>[ <column qualifier> ] ] ]

# 撤销权限

revoke <user> <permissions> [ <table> [ <column family> [ <column qualifier> ] ] ]

# 设置表所有者

alter <table> {owner => <user>}

# 显示权限列表

user_permission <table> # displays existing permissions

例如:

grant 'user1', 'RWC' grant 'user2', 'RW', 'tableA' user_permission 'tableA'

3.4 调测程序

3.4.1 在 Windows 中调测程序

3.4.1.1 编译并运行程序

在程序代码完成开发后,您可以在Windows开发环境中运行应用。

操作步骤

步骤1 在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集群可跳过此步骤)。

步骤2 在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

说明

● hbase.zookeeper.quorum: zookeeper实例的主机名,多个实例时以逗号分隔,必 选。

● hbase.regionserver.kerberos.principal: regionserver的principal,与master的 principal保持一致,仅开启kerberos功能集群需要配置该参数。

● hbase.master.kerberos.principal: hmaster的principal,与regionserver的 principal保持一致,仅开启kerberos功能集群需要配置该参数。

grep "hbase.zookeeper.quorum" /opt/client/HBase/hbase/conf/* -R -A1

步骤4 修改样例代码。

1. 当前样例代码中操作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---");

}

2. 修改样例工程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";

说明

– 安全集群在Zookeeper认证时是通过四字命令获取Zookeeper服务端的principal,在 Zookeeper实例高负载或者实例不稳定时,会由于无法使用四字命令获取服务端的 principal导致认证失败,需要通过客户端把该值传入环境中使用,避免认证失败的问 题。

– 可通过登录任一Master节点执行如下命令获取该值。

grep "CLIENT_ZOOKEEPER_PRINCIPAL" /opt/client/HBase/hbase/conf/*

3. 修改样例工程“src/main/resources”下的hbaseclient.properties文件。

userKeytab.path,krb5.conf.path对应于从准备开发用户获取的文件的地址。

(未开启Kerberos认证集群可跳过此步)。

user.name=hbaseuser

userKeytabName=userKeytab.path krb5ConfName=krb5.conf.path

4. 若使用REST接口时需修改hbaseclient.properties中的rest.server.info,使其对应于 rest server的ip:port(port默认为21309)。

rest.server.info=10.10.10.10:21309

说明

1. 从集群的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 中的相应配置即可。

2. 若使用申请的ECS访问HBase,可直接使用RESTServer的ip;若使用本机访问HBase则 需使用该RESTServer绑定的弹性公网IP作为RESTServer的ip。

3. HIndexExample样例工程仅在MRS 1.9.2及其以后版本中支持,需注意当前集群版本。

4. HFSSample样例工程在MRS 1.9.x版本已移除,需注意当前集群版本。

步骤5 运行样例。

在开发环境中(例如Eclipse中),右击“TestMain.java”,单击“Run as > Java Application”运行对应的应用程序工程。

2020-01-09 10:43:48,777 INFO [main] examples.HBaseExample: MOB Table is created successfully.

2020-01-09 10:43:48,777 INFO [main] examples.HBaseExample: Exiting testCreateMOBTable.

2020-01-09 10:43:48,777 INFO [main] examples.HBaseExample: Entering testMOBDataInsertion.

2020-01-09 10:43:48,801 INFO [main] examples.HBaseExample: MOB data inserted successfully.

2020-01-09 10:43:48,802 INFO [main] examples.HBaseExample: Exiting testMOBDataInsertion.

2020-01-09 10:43:48,802 INFO [main] examples.HBaseExample: Entering testMOBDataRead.

2020-01-09 10:43:49,337 INFO [main] examples.HBaseExample: value:

2020-01-09 10:43:49,337 INFO [main] examples.HBaseExample: MOB data read successfully.

2020-01-09 10:43:49,337 INFO [main] examples.HBaseExample: Exiting testMOBDataRead.

2020-01-09 10:43:49,338 INFO [main] examples.HBaseExample: Entering dropTable.

2020-01-09 10:43:49,341 INFO [main] client.HBaseAdmin: Started disable of hbase_sample_table 2020-01-09 10:43:50,080 INFO [main] client.HBaseAdmin: Operation: DISABLE, Table Name:

default:hbase_sample_table, procId: 41 completed

2020-01-09 10:43:50,550 INFO [main] client.HBaseAdmin: Operation: DELETE, Table Name:

default:hbase_sample_table, procId: 43 completed

2020-01-09 10:43:50,550 INFO [main] examples.HBaseExample: Drop table successfully.

2020-01-09 10:43:50,550 INFO [main] examples.HBaseExample: Exiting dropTable.

2020-01-09 10:43:50,550 INFO [main] client.ConnectionImplementation: Closing master protocol:

MasterService

2020-01-09 10:43:50,556 INFO [main] examples.TestMain: ---finish to test HBase API---

说明

在Windows环境运行样例代码时会出现下面的异常,但是不影响业务:

java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.

● 日志说明

日志级别默认为INFO,可以通过调整日志打印级别(DEBUG,INFO,WARN,

ERROR,FATAL)来显示更详细的信息。可以通过修改log4j.properties文件来实 现,如:

hbase.root.logger=INFO,console log4j.logger.org.apache.zookeeper=INFO

#log4j.logger.org.apache.hadoop.fs.FSNamesystem=DEBUG log4j.logger.org.apache.hadoop.hbase=INFO

# Make these two classes DEBUG-level. Make them DEBUG to see more zk debug.

log4j.logger.org.apache.hadoop.hbase.zookeeper.ZKUtil=INFO 码段。public static void main(String[] args) {

try {

} // 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---");

}

2. 在调用HFS接口(MRS 1.9.x版本不再支持该接口),REST接口时需要把样例工程 src\main\resources下hbaseclient.properties文件拷贝到客户端(客户端目录