服务开发指南-Hbase

客服9205发表于:2018年07月05日 15:55:40更新于:2018年07月13日 17:53:48

大数据平台hbase开发指南

目前大数据平台上所有的资源都需要经过信云智进行购买,购买完成后,在多租户平台上会看到所购买的资源和连接信息,使用连接信息连接集群进行任务提交,下面以hbase任务为例进行说明。

    hbase是一个hadoop上的分布式列式存储数据库,下面说明如何购买资源、获取连接信息、使用连接信息和keytab,在大数据平台上进行hbase应用开发。


点击下载开发程序示例

 

一.资源购买

 

  • 登录信云智,购买资源

image.png

  此处购买的是hbase资源,购买资源量可以自行调整。

 

  • 登录多租户,查看购买资源的连接信息

    登录后可以在服务列表中看到购买的hbase资源的访问信息

image.png

image.png

 

 

  • 下载连接集群时需要的keytab

登录多租户管理平台,点击其中的下载keytab文件,下载keytab文件来进行集群连接

 

image.png

 

 

二.使用java client访问集群

在如下的demo中,使用申请的namespace资源和keytab资源,通过java client进行hbase访问

 

package com.citic.hbase;

 

import org.apache.hadoop.hbase.client.*;

import org.apache.hadoop.hbase.*;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.security.UserGroupInformation;

 

import java.io.IOException;

 

/**

* Created by yujin on 2018/6/28.

*/

public class HbaseDemo {

 

//申请的namespace

private static final String TABLE_NAME = "a469ab4479ef11e88fe200163e0007e4:table";

private static final String CF_DEFAULT = "cf";

public static final byte[] QUALIFIER = "col1".getBytes();

private static final byte[] ROWKEY = "rowkey".getBytes();

 

public static void main(String[] args){

Configuration config = HBaseConfiguration.create();

 

//zk list

String zk = "nn01.hadoop.citic:2181,dn01.hadoop.citic:2181,dn02.hadoop.citic:2181";

 

//进行kerberos认证

String currentClassPath = new HbaseDemo().getClass().getResource("/").getPath();

 

//使用keytab登录

String keytabPath= currentClassPath+" zhaolin.keytab";

String krbPath = currentClassPath + " krb5.conf";

config.set("hbase.zookeeper.quorum",zk);

config.set("hbase.zookeeper.property.clientPort", "2181");

config.set("zookeeper.znode.parent", "/hbase-unsecure");

config.set("hadoop.security.authentication", "kerberos");

config.set("hbase.security.authentication", "kerberos");

config.set("hbase.master.kerberos.principal", "hbase/_HOST@HADOOP.CITIC");

config.set("hbase.regionserver.kerberos.principal", "hbase/_HOST@HADOOP.CITIC");

System.setProperty("java.security.krb5.conf",krbPath);

UserGroupInformation.setConfiguration(config);

 

try {

UserGroupInformation.loginUserFromKeytab("zhaolin@HADOOP.CITIC", keytabPath);

//结束kerberos认证

 

Connection connection = null;

connection = ConnectionFactory.createConnection(config);

HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf(TABLE_NAME));

tableDescriptor.addFamily(new HColumnDescriptor(CF_DEFAULT));

System.out.print("Begin to create table ..");

Admin admin = connection.getAdmin();

admin.createTable(tableDescriptor);

System.out.println("End");

Table table = connection.getTable(TableName.valueOf(TABLE_NAME));

try{

//put row to table

Put put = new Put(ROWKEY);

put.addColumn(CF_DEFAULT.getBytes(),QUALIFIER,"value of row".getBytes());

table.put(put);

 

//get row of table

Get get = new Get(ROWKEY);

Result result = table.get(get);

byte[] b = result.getValue(CF_DEFAULT.getBytes(),QUALIFIER);

System.out.println(new String(b));

 

}finally {

if(table != null)

table.close();

}

}catch (Exception e){

e.printStackTrace();

}

}

 

 

}

 

三. 使用hbase shell进行集群访问

 

  1. 使用下载的keytab进行kerberos认证:

kinit -kt zhaolin.keytab zhaolin@HADOOP.CITIC

  1. 如果client端位于集群外部,需要下载hbase,下载后解压

  1. 修改zk      servers的地址

<configuration>

<property>

<name>hbase.zookeeper.quorum</name>

<value>$ZK_IP1,$ZK_IP2,$ZK_IP3</value>

</property>

</configuration>

 

  1. 修改完成后,使用hbase/bin下面的hbase shell连接hbase集群

 

以上为大数据平台开发hbase应用的完整流程.

 

 


中信云服务团队