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 和数据操作类组成,和表的创建。
在这里插入图片描述

1.1、HBaseConfiguration

HBaseConfiguration 类位于 org.apache.hadoop.hbase.HBaseConfiguration。作用:完成对 HBase 的配置,主要设置一些关键属性。
常见函数如下表所示。
在这里插入图片描述
该方法设置了hbase.zookeeper.property.clientPort的端口号为 2181。一般情况下, HBaseConfiguration 会使用构造函数进行初始化,然后再使用其他方法。在这里插入图片描述

1.2、HBaseAdmin

HBaseAdmin 类位于 org.apache.hadoop.hbase.client.HBaseAdmin。
作用:提供了一个接口来管理 HBase 数据库的表信息。它提供的方法包括:创建表, 删除表,列出表项,使表有效或无效,以及添加或删除表列族成员等。常见函数如下表所示。
在这里插入图片描述
用法示例:使表处于无效状态。
在这里插入图片描述

1.3、HTableDescriptor

HTableDescriptor 类位于 org.apache.hadoop.hbase.HTableDescriptor。作用:包含了表的名字及其对应表的列族。常见函数如下表所示。
在这里插入图片描述
通过一个 HColumnDescriptor 实例,为 HTableDescriptor 添加了一个列族:family。在这里插入图片描述

1.4、HColumnDescriptor

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

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

1.5、HTable

HTable 类位于 org.apache.hadoop.hbase.client.HTable。
作用:可以用来和 HBase 表直接通信。此方法对于更新操作来说是非线程安全的。常见函数如下表所示。在这里插入图片描述在这里插入图片描述

1.6、Put

Put 类位于 org.apache.hadoop.hbase.client.Put。
作用:用来对单个行执行添加操作。常见函数如下表所示。
在这里插入图片描述在这里插入图片描述

1.7、Get

Get 类位于 org.apache.hadoop.hbase.client.Get。
作用:用来获取单个行的相关信息。常见函数如下表所示。在这里插入图片描述在这里插入图片描述

1.8、Result

Result 类位于 org.apache.hadoop.hbase.client.Result。
作用:存储 Get 或者 Scan 操作后获取表的单行值。使用此类提供的方法可以直接获取值或者各种 Map 结构(key-value 对)。常见函数如下表所示。
在这里插入图片描述

1.9、ResultScanner

ResultScanner 类位于 Interface。
作用:客户端获取值的接口。常见函数如下表所示。
在这里插入图片描述


二、创建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 系统下,自己注意安装路径。在这里插入图片描述

(2)右键引用库配置路径,添加 HBase 依赖的 JAR 包,将解压缩的 hbase-1.2.2\lib 下的 JAR 包全部导入。
在这里插入图片描述
(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"});
	}
}

在这里插入图片描述
可以通过网站 master:60010查看是否创建表 People
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐