Hbase 1.3.6 源码编译

下载源码

下载地址:http://hbase.apache.org/downloads.html 

Releases

VersionRelease DateCompatibility ReportChangesRelease NotesDownloadNotices
2.3.02020/07/132.2.0 vs 2.3.0ChangesRelease Notessrc (sha512 asc)
bin (sha512 asc)
client-bin (sha512 asc)
 
2.2.52020/05/212.2.5 vs 2.2.4ChangesRelease Notessrc (sha512 asc)
bin (sha512 asc)
client-bin (sha512 asc)
stable release
1.6.02020/03/061.5.0 vs 1.6.0ChangesRelease Notessrc (sha512 asc)
bin (sha512 asc)
 
1.4.132020/02/291.4.12 vs 1.4.13ChangesRelease Notessrc (sha asc)
bin (sha asc)
1.3.62019/10/201.3.5 vs 1.3.6ChangesRelease Notes

src (sha asc)
bin (sha asc)

我们选择一个版本进行下载,这里我们选择 1.3.6.

下载完后,进行解压

 

编译准备

编译平台

win10

编译工具:

git bash

编译设置

      过程中,需要占用一定的内存,我们需要为此设置一些内存参数。还有就是win10本地的默认编码是GBK, 而源码基本上是utf-8编码的,这一点也需要进行设置. 在源码根目录下,打开git bash, 进行如下设置

export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=1g -Dfile.encoding=UTF-8"

现在查看编译的编码方式

Administrator@BF-201905281450 MINGW64 /d/idea_projects/hbase-1.3.6
$ mvn -version
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: D:\base_service_tools\apache-maven-3.6.3
Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: D:\base_service_tools\jdk1.8.0_241\jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

Default locale: zh_CN, platform encoding: UTF-8 , 这一行信息说明,我们的编译编码方式已经变成utf-8了

 

正式编译

源码解压后,进入源码根目录

         hbase底层需要依赖hadoop, 因此编译它,需要选择一个hadoop版本。如果不选择,1.3.6版本的hbase默认依赖的hadoop2版本是2.5.1。不信,我们打开根目录的pom文件

       从这两个图中一眼就能看出来。这个版本很可能不是我们想要的。如果想要指定其他的版本,该怎么办呢,改pom文件?千万不要!该如何规范操作呢?关于这一点,官网有如下的说明

HBase supports building against Apache Hadoop versions: 2.y and 3.y (early release artifacts). By default we build against Hadoop 2.x.

To build against a specific release from the Hadoop 2.y line, set e.g. -Dhadoop-two.version=2.7.4.

mvn -Dhadoop-two.version=2.7.4 ..

原来只需要一个参数就可以了。

 

开始编译

我们指定编译的hadoop版本是2.7.4,执行如下命令!

mvn clean package -DskipTests -Dhadoop-two.version=2.7.4 assembly:single

15分钟过去后

[INFO] No ant target defined - SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Apache HBase 1.3.6:
[INFO]
[INFO] Apache HBase ....................................... SUCCESS [02:14 min]
[INFO] Apache HBase - Checkstyle .......................... SUCCESS [ 24.490 s]
[INFO] Apache HBase - Resource Bundle ..................... SUCCESS [  0.214 s]
[INFO] Apache HBase - Annotations ......................... SUCCESS [  1.361 s]
[INFO] Apache HBase - Protocol ............................ SUCCESS [ 16.163 s]
[INFO] Apache HBase - Common .............................. SUCCESS [01:31 min]
[INFO] Apache HBase - Procedure ........................... SUCCESS [  2.045 s]
[INFO] Apache HBase - Client .............................. SUCCESS [  7.835 s]
[INFO] Apache HBase - Hadoop Compatibility ................ SUCCESS [  0.767 s]
[INFO] Apache HBase - Hadoop Two Compatibility ............ SUCCESS [ 20.701 s]
[INFO] Apache HBase - Prefix Tree ......................... SUCCESS [  2.057 s]
[INFO] Apache HBase - Server .............................. SUCCESS [02:21 min]
[INFO] Apache HBase - Testing Util ........................ SUCCESS [  2.463 s]
[INFO] Apache HBase - Thrift .............................. SUCCESS [ 19.911 s]
[INFO] Apache HBase - Rest ................................ SUCCESS [  4.472 s]
[INFO] Apache HBase - Shell ............................... SUCCESS [05:54 min]
[INFO] Apache HBase - Integration Tests ................... SUCCESS [ 21.812 s]
[INFO] Apache HBase - Examples ............................ SUCCESS [  2.881 s]
[INFO] Apache HBase - External Block Cache ................ SUCCESS [ 16.257 s]
[INFO] Apache HBase - HBTop ............................... SUCCESS [  1.795 s]
[INFO] Apache HBase - Assembly ............................ SUCCESS [  9.277 s]
[INFO] Apache HBase - Shaded .............................. SUCCESS [  0.088 s]
[INFO] Apache HBase - Shaded - Client ..................... SUCCESS [  0.856 s]
[INFO] Apache HBase - Shaded - Server ..................... SUCCESS [  1.026 s]
[INFO] Apache HBase Shaded Packaging Invariants ........... SUCCESS [ 11.114 s]
[INFO] Apache HBase - Archetypes .......................... SUCCESS [  0.052 s]
[INFO] Apache HBase - Exemplar for hbase-client archetype . SUCCESS [ 32.360 s]
[INFO] Apache HBase - Exemplar for hbase-shaded-client archetype SUCCESS [  2.505 s]
[INFO] Apache HBase - Archetype builder ................... SUCCESS [  8.662 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  15:33 min
[INFO] Finished at: 2020-07-18T16:11:03+08:00
[INFO] ------------------------------------------------------------------------

编译hbase圆满完成!

应该说,在所有大数据组件中,相比hadoop, spark,  hbase的编译时比较简单的.

 

 

### Java 连接 HBase 并操作命名空间 要通过 Java 实现连接 HBase 和操作命名空间的功能,可以借助 `hbase-client` 提供的相关类来完成。以下是具体方法和代码示例。 #### Maven 依赖配置 为了使用 HBase 的客户端功能,需在项目中引入以下 Maven 依赖: ```xml <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.2.5</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.3</version> </dependency> ``` 以上版本号可以根据实际需求调整[^3]。 --- #### 创建命名空间 (Namespace) 创建命名空间需要使用 `Admin` 对象以及 `NamespaceDescriptor` 类。下面是一个完整的代码示例: ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.NamespaceDescriptor; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client.ConnectionFactory; public class NamespaceExample { public static void main(String[] args) throws Exception { // 配置 HBase 环境 Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", "localhost"); // 设置 Zookeeper 地址 config.set("hbase.zookeeper.property.clientPort", "2181"); try (Connection connection = ConnectionFactory.createConnection(config); Admin admin = connection.getAdmin()) { String namespaceName = "my_namespace"; // 判断命名空间是否存在 if (!admin.namespaceExists(namespaceName.getBytes())) { // 如果不存在,则创建新的命名空间 NamespaceDescriptor descriptor = NamespaceDescriptor.create(namespaceName) .addConfiguration("key1", "value1") // 添加自定义属性 .build(); admin.createNamespace(descriptor); // 执行创建命令 System.out.println("命名空间 &#39;" + namespaceName + "&#39; 已成功创建"); } else { System.out.println("命名空间 &#39;" + namespaceName + "&#39; 已存在"); } } } } ``` 此代码实现了以下几个功能: - 使用 `HBaseConfiguration` 来加载默认配置,并设置 ZooKeeper 的地址。 - 检查指定的命名空间是否已经存在[^4]。 - 若命名空间不存在,则调用 `createNamespace()` 方法创建新命名空间。 --- #### 删除命名空间 如果需要删除某个命名空间,可以通过如下代码实现: ```java try (Admin admin = connection.getAdmin()) { String namespaceName = "my_namespace"; // 检查命名空间是否存在 if (admin.namespaceExists(namespaceName.getBytes())) { // 删除命名空间前,确保该命名空间下没有任何表 admin.deleteTable(TableName.valueOf(namespaceName, "table_name")); // 示例:删除某张表 // 删除命名空间 admin.deleteNamespace(namespaceName.getBytes()); System.out.println("命名空间 &#39;" + namespaceName + "&#39; 已被删除"); } else { System.out.println("命名空间 &#39;" + namespaceName + "&#39; 不存在"); } } ``` 注意,在删除命名空间之前,必须先清空其中所有的表[^4]。 --- #### 查询所有命名空间 还可以通过以下代码获取当前集群中的所有命名空间列表: ```java List<String> namespaces = admin.listNamespaceDescriptors().stream() .map(NamespaceDescriptor::getName) .collect(Collectors.toList()); System.out.println("现有命名空间:" + namespaces); ``` 这会返回一个包含所有命名空间名称的字符串列表[^4]。 --- ### 总结 上述代码展示了如何利用 Java 编程语言与 HBase 客户端库交互,从而实现对命名空间的基本操作(如创建、删除和查询)。这些功能对于管理和维护分布式数据库环境非常有用[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值