上一篇我们介绍了对Hbase中数据的一些高级的操作,至此,我们可以很好的管理和操作Hbase的数据了,这一篇将主要介绍Hbase提供的管理(Administrative)模块,可以让我们完成类似RDBMS中的DDL操作,即,表定义、管理表结构、管理集群状态等。下面介绍的API都出自HBaseAdmin对象。
一、表定义
在Hbase的API中,代表一个表结构的类叫HTableDescriptor。
HTableDescriptor(String name)
HTableDescriptor(byte[] name)
一个Hbase的表有许多的关键性的属性,可以再HTableDescriptor中指定,下面我们将逐一介绍。
簇(Column Family),这是表的基本属性,一个簇代表很多列的集合,Hbase可以有成百万上千万的列,这些列并不需要我们预定义好,在定义表的时候我们只需要指定列簇,而列则可以在插入数据的时候临时加入。
最大文件大小(Maximum file size),Hbase是基于HDFS的,底层也是一个一个的文件,当数据过多,Hbase底层的文件将会变得过大,这时Hbase就会自动的分裂这个文件,这个属性指定的是底层文件分裂的阀值。关于文件分裂涉及到性能调优等问题,这些会在后面详细介绍。
只读(Read-Only), 默认的所有的表都是可读可写的,当然,如果有需求,我们可以把表定义为只读,这时表就不可写了。
缓存大小(Memstore Flush Size),并不是每一个请求被提交到RegionServer后都会立刻引起磁盘IO,服务器端有一个缓存,当达到缓存的阀值以后才会引起磁盘IO。内存操作比磁盘操作要快很多,所以,设置一个很大的缓存可以提高操作性能,但是过大的缓存也会引起问题,当触发写磁盘的操作以后要一次性写入大量的缓存,这将花费很长的时间,这段时间服务器将不可用。
协处理器,定义表的时候可以指定协处理器,这点已经在上一篇有过介绍。
void addFamily(HColumnDescriptor family);
boolean hasFamily(byte[] c);
HColumnDescriptor[] getColumnFamilies();
long getMaxFileSize();
void setMasxFileSize(long maxFileSize);
boolean isReadOnly();
void setReadOnly(boolean readOnly);
long getMemStoreFlushSize();
void setMemStoreFlushSize(long memStoreFlushSize)
String getValue(String key);
void setValue(String key, String value);
在添加簇的API中我们可以看到Hbase中代表簇的对象是HColumnDescriptor。
簇也有一些属性需要我们来了解。
最大版本数(Max Versions),最大版本数定义了簇内列的最大的版本数。
压缩(Compression),定义数据时候压缩,用什么方式压缩。
块大小和块缓存,这是涉及调优方面的属性。
TTL, 版本数据存活的时间。
二、表结构管理
表操作包括表的增删查改。
新创建一个表,需要我们创建一个HTableDescriptor实例作为参数,Hbase就可以根据类中的信息来创建一个表。另外,创建表操作中我们可以手动的指定key和region server分布的映射,当然,这个操作也可以叫给Hbase自动完成。
void creatTable(HTableDescriptor desc)
void creatTable(HTableDescriptor desc, byte[] startkey, byte[] endkey, int numRegions)
void creatTable(HTableDescriptor desc, byte[][] splitKeys)
void creatTableAsync(HTableDescriptor desc, byte[][] splitKeys)
第二个方法就是指定开始和结束的key和要分的region数量,Hbase会根据参数来计算key的区间和region的映射;第三个方法是直接指定区间的分界点;第四个方法是一个同步的方法。创建操作本身是一个异步的操作,这个同步的方法是简单在异步的基础上循环检测操作有没有执行完成。
除了创建之外,还可以删除和暂停(Disable)表,在删除一个表之前,必须要先暂停。暂停可能要花费一定的时间,因为暂停的操作将强制刷新缓存入磁盘。相应的还有启用表的操作。同创建表一样,暂停和启用的操作也有相应的同步的方法。
void deleteTable(String tableName);
void disableTable(String tableName);
void disableTableAsnc(String tableName);
void enableTale(String tableName);
void enableTableAsnc(String tableName);
表也支持修改,这里主要是对列簇的操作。
void addColumn(String tableName, HColumnDescriptor column);
void deleteColumn(String tableName, String columnName);
void modifyColumn(String tableName, HColumnDescriptor column)
三、集群操作
通过HBaseAdmin对象,我们可以获取到集群中每个RegionServer的信息,例如负载、状态、IP、Port等,还可以对集群进行操作,比如手动的对Region进行分裂,压缩、刷新缓存等。
分享到:
相关推荐
集合是Java编程中不可或缺的一部分,...这些学习笔记涵盖了Java开发、分布式系统、大数据处理和实时流计算等多个领域,是提升技术能力的好资源。通过深入学习和实践,你可以构建扎实的技术基础,适应不断变化的IT环境。
HBase通过Region Server来实现数据的分布式存储,并使用Zookeeper进行集群管理和协调。在SpringBoot应用中,我们需要配置HBase的相关连接信息,如Zookeeper的地址、HBase的表名等。 此外,HBase还支持实时查询和...
spark 可以很容易和yarn结合,直接调用HDFS、Hbase上面的数据,和hadoop结合。配置很容易。 spark发展迅猛,框架比hadoop更加灵活实用。减少了延时处理,提高性能效率实用灵活性。也可以与hadoop切实相互结合。 ...
这份"Java后端学习笔记"涵盖了Linux、Maven、Git、互联网架构和大数据体系等多个关键知识点,是提升Java开发者技能的重要资料。 首先,让我们深入了解一下这些主题: 1. **Linux**:作为服务器操作系统,Linux在...
本学习笔记将深入探讨这两个工具的核心概念、应用场景以及如何将它们结合使用。 **Hadoop** 是一个开源框架,主要用于分布式存储和计算。它的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS...
7. **创建事务管理器**:同样地,Spring Boot会自动配置事务管理器。 8. **编写实体类**:定义实体类,这些实体类将映射到数据库中的表。 9. **创建Repository接口**:使用Spring Data JPA提供的Repository接口来...
Sqoop是Apache Hadoop生态系统中的一款重要工具,主要负责在关系型数据库管理系统(如MySQL)和Hadoop的HDFS、Hive、HBase之间进行数据的迁移。自2009年成立以来,它从最初的Hadoop模块发展成为独立的Apache项目。...
Oracle笔记涵盖了数据库管理和大数据处理领域的核心概念和技术,主要围绕Oracle高级特性、大数据处理以及Spark框架进行深入探讨。本文将详细解析这些关键知识点。 首先,Oracle是全球广泛使用的商业关系型数据库...
这个“Hadoop学习几笔”的资源可能包含了对Hadoop生态系统中的几个关键组件的深入理解和实践笔记,包括HDFS(Hadoop分布式文件系统)、HBase(一个分布式、列式存储的NoSQL数据库)、Hive(一个数据仓库工具)以及...
7. **容器化与微服务**:为实现灵活部署和资源隔离,项目可能采用了Docker容器化技术,并利用Kubernetes进行集群管理,同时,推荐系统可能被拆分为多个微服务,每个服务负责特定的功能模块。 8. **代码版本控制**:...
5. **安全性与隐私保护**:云笔记的私有笔记管理可能采用了权限控制和加密技术,确保用户数据的安全和私密性。例如,使用OAuth2.0进行身份验证,或AES加密保护敏感信息。 6. **跨平台支持**:项目提供了Windows...
反思实践,整理学习笔记课后作业(1) 在职教云平台上完成相关练习题(2) 写一篇关于 Hadoop 集群搭建的心得体会教师讲解职教云教师:布置作业,提供指导学生:深入思考,完成作业 【知识点详解】 Hadoop 是一个开源...
本笔记整理主要涵盖了2022年3月16日的学习内容,旨在深入理解和掌握Spark的核心概念和功能。 Spark的核心理念是内存计算,它通过将数据存储在内存中,从而减少了磁盘I/O,提高了数据处理速度。这一特性使得Spark比...
卢塞恩应用科技大学的VSK模块显然专注于这一主题,旨在让学生掌握分布式系统的核心概念、设计原则以及组件的工作方式。 分布式系统是由多个相互协作的计算节点组成,这些节点通过网络进行通信,共同完成一个任务。...
压缩包内的文件主要是法律学习资料,如法考笔记、刑法和民诉的思维导图、讲义等,而不是与Hadoop相关的源代码或IT技术文档。因此,我无法根据这些信息生成关于Hadoop的知识点。 如果您的目标是获取Hadoop的相关知识...
Zookeeper的源码结构清晰,包含了客户端、服务器端、协议处理、数据模型等多个模块,学习源码可以帮助理解其工作原理。 在实际应用中,Zookeeper经常与Hadoop、HBase、Kafka等大数据组件配合使用,提供高可用性和...
在压缩包中,“新建文本文档 (2).txt”可能是课程笔记或参考资料,尽管其具体内容未给出,但可以预期它作为辅助资料,可能会包含关键概念总结、代码示例或者练习题,以巩固学习效果。 总的来说,这套《Hadoop视频...
本项目涵盖了从数据仓库的基本概念到具体实施的各个阶段,包括项目需求分析、架构设计、数据生成模块等多个方面。 在第1章中,我们首先介绍了数据仓库的概念。数据仓库是一个专门用于数据分析的系统,它整合了来自...
3. **SparkSQL**:SparkSQL是Spark的模块,它允许用户使用SQL或DataFrame API进行数据处理,可以与Hive的元数据、SQL查询和UDF(用户定义函数)兼容,从而简化了数据分析师的工作。SparkSQL通过DataFrame提供了一种...