文章目录

  • 一、HBase Java API 核心类介绍
  • 1.1、HBaseConfiguration
  • 1.2、HBaseAdmin
  • 1.3、HTableDescriptor
  • 1.4、HColumnDescriptor
  • 1.5、HTable
  • 1.6、Put
  • 1.7、Get
  • 1.8、Result
  • 1.9、ResultScanner
  • 二、创建Configuration 对象
  • 三、创建表
  • 步骤 1:开发环境配置



Hadoop集群搭建及配置⑧——Hbase的安装配置

eclipse连接Hadoop

eclipse 实现 Hdfs java API

简单熟悉HDFS的常用命令

Hbase java API 实现增删改查

没有安装hbase和eclipse连接Hadoop的可以看点击前面文章:


HBase 提供了丰富的 Java API 接口,可以通过 HBase Java API 完成和HBase shell 相同的功能。


一、HBase Java API 核心类介绍

本文章用HBase Java API 介绍 HBase Java API 核心类主要由 HBaseConfigurantion、HBase Admin、HTable 和数据操作类组成,和表的创建。

Hbase API 接口练习实验报告_hbase

1.1、HBaseConfiguration

HBaseConfiguration 类位于 org.apache.hadoop.hbase.HBaseConfiguration。作用:完成对 HBase 的配置,主要设置一些关键属性。

常见函数如下表所示。

Hbase API 接口练习实验报告_apache_02


该方法设置了hbase.zookeeper.property.clientPort的端口号为 2181。一般情况下, HBaseConfiguration 会使用构造函数进行初始化,然后再使用其他方法。

Hbase API 接口练习实验报告_Hbase API 接口练习实验报告_03

1.2、HBaseAdmin

HBaseAdmin 类位于 org.apache.hadoop.hbase.client.HBaseAdmin。

作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表, 删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。常见函数如下表所示。

Hbase API 接口练习实验报告_Hbase API 接口练习实验报告_04


用法示例:使表处于无效状态。

Hbase API 接口练习实验报告_hbase_05

1.3、HTableDescriptor

HTableDescriptor 类位于 org.apache.hadoop.hbase.HTableDescriptor。作用:包含了表的名字及其对应表的列族。常见函数如下表所示。

Hbase API 接口练习实验报告_apache_06


通过一个 HColumnDescriptor 实例,为 HTableDescriptor 添加了一个列族:family。

Hbase API 接口练习实验报告_apache_07

1.4、HColumnDescriptor

HColumnDescriptor 类位于org.apache.hadoop.hbase.HColumnDescriptor。

作用:维护着关于列族的信息,例如版本号,压缩设置等。它通常在创建表或者为表添加列族的时候使用。列族被创建后不能直接修改,只能通过删除然后重新创建的方式。列族被删除的时候,列族里面的数据也会同时被删除。常见函数如下表所示。

Hbase API 接口练习实验报告_hbase_08


此例,为表添加了一个 content 的列族。

Hbase API 接口练习实验报告_hbase_09

1.5、HTable

HTable 类位于 org.apache.hadoop.hbase.client.HTable。

作用:可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。常见函数如下表所示。

Hbase API 接口练习实验报告_hadoop_10

Hbase API 接口练习实验报告_Hbase API 接口练习实验报告_11

1.6、Put

Put 类位于 org.apache.hadoop.hbase.client.Put。

作用:用来对单个行执行添加操作。常见函数如下表所示。

Hbase API 接口练习实验报告_apache_12

Hbase API 接口练习实验报告_大数据_13

1.7、Get

Get 类位于 org.apache.hadoop.hbase.client.Get。

作用:用来获取单个行的相关信息。常见函数如下表所示。

Hbase API 接口练习实验报告_hadoop_14

Hbase API 接口练习实验报告_hadoop_15

1.8、Result

Result 类位于 org.apache.hadoop.hbase.client.Result。

作用:存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值或者各种 Map 结构(key-value 对)。常见函数如下表所示。

Hbase API 接口练习实验报告_hbase_16

1.9、ResultScanner

ResultScanner 类位于 Interface。

作用:客户端获取值的接口。常见函数如下表所示。

Hbase API 接口练习实验报告_大数据_17


二、创建Configuration 对象

HBaseConfiguration 是每一个 hbase client 都会使用到的对象,它代表的是 HBase 配置信息。它有两种构造方式:

// 默认的构造方式会尝试从 `hbase-default.xml `和 `hbase-site.xml` 中读取配置。
// 如果classpath 没有这两个文件,就需要你自己设置配置。
public HBaseConfiguration()
public HBaseConfiguration(final Configuration c)

Configuration HBASE_CONFIG = HBaseConfiguration.create(); 
HBASE_CONFIG.set(“hbase.rootdir”,”hdfs://192.168.142.1280:8020/hbase”)
// 此处的 ip 地址为主节点的 ip 地址,端口号为 hbase-site.xml 中配置的端口号。


HBASE_CONFIG.set(“hbase.zookeeper.quorum”, “master,slave1,slave2”);
//hbase.zookeeper.quorum 的值不能采用 IP 方式,必须使用名称。


HBASE_CONFIG.set(“hbase.zookeeper.property.clientPort”, “2181″);
HBASE_CONFIG.set(“hbase.master”,”hdfs://192.168.142.128:60000”);

Configuration 对象创建完成以后,创建连接到 HBase 数据库的 concontion 对象,并通过此对象获取 Admin 对象,它负责创建数据库表的操作:

Connection connection = ConnectionFactory.createConnection(config); 
Admin admin = connection.getAdmin();

创建 amind 对象之后,就可以创建数据表啦。

三、创建表

步骤 1:开发环境配置

(1)导入 JAR 包,将 hbase-1.2.2-bin.tar.gz 解压缩到 Windows 系统下,自己注意安装路径。

Hbase API 接口练习实验报告_hadoop_18

(2)右键引用库配置路径,添加 HBase 依赖的 JAR 包,将解压缩的 hbase-1.2.2\lib 下的 JAR 包全部导入。

Hbase API 接口练习实验报告_hadoop_19


(3)创建CreateTable,编写代码。

import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.ConnectionFactory;

public class CreateTable {
	// 创建hbase集群连接
	static Configuration conf= null;
	static {
		// Configuration类用于加载需要连接hbase的各项配置
		conf = HBaseConfiguration.create();
		conf.set("hbase.rootdir","hdfs://192.168.142.128:8020/hbase");
		conf.set("hbase.master","hdfs://192.168.142.128:60000");
		conf.set("hbase.zookeeper.property.clientPort","2181");
		conf.set("hbase.zookeeper.quorum","master,slave1,slave2");
	}
	public static int createTable(String tableName,String[] family)
	
			throws MasterNotRunningException,ZooKeeperConnectionException,IOException {
		Admin admin = ConnectionFactory.createConnection(conf).getAdmin();
		HTableDescriptor table= new HTableDescriptor(TableName.valueOf(tableName)); // 在tablename表里操作列族

		for(String str: family){
			HColumnDescriptor column = new HColumnDescriptor(str);
			column.setMaxVersions(3);
			table.addFamily(column); // 添加列族
		}
		
		if(admin.tableExists(TableName.valueOf(tableName))) { // 判断表存在与否
			System.out.println(tableName+";already exist 已经存在");
			return -1;
		}

		admin.createTable(table);
		admin.close();
		System.out.println(tableName+":create success 创建成功");
		return 1;
	}

	public static void main(String[] args) 
			throws MasterNotRunningException,ZooKeeperConnectionException,IOException{
		createTable("People",new String[]{"info","grade"});
	}
}

Hbase API 接口练习实验报告_hadoop_20


可以通过网站 master:60010查看是否创建表 People

Hbase API 接口练习实验报告_大数据_21