MRS二次开发(8/27): HBase 通用API样例

举报
晋红轻 发表于 2020/11/28 10:02:03 2020/11/28
【摘要】 HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase设计目标是用来解决关系型数据库在处理海量数据时的局限性。本文介绍HBase 通用API样例。

MRS二次开发(8/27): HBase 通用API样例

一、HBase简介

 HBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。HBase设计目标是用来解决关系型数据库在处理海量数据时的局限性。

HBase使用场景有如下几个特点:

  • 处理海量数据(TB或PB级别以上)。
  • 具有高吞吐量。
  • 在海量数据中实现高效的随机读取。
  • 具有很好的伸缩能力。
  • 能够同时处理结构化和非结构化的数据。
  • 不需要完全拥有传统关系型数据库所具备的ACID特性。ACID特性指原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
  • HBase中的表具有如下特点:
    • 大:一个表可以有上亿行,上百万列。
    • 面向列:面向列(族)的存储和权限控制,列(族)独立检索。
    • 稀疏:对于为空(null)的列,并不占用存储空间,因此,表可以设计的非常稀疏。

二、样例背景

 场景说明

 假定用户开发一个应用程序, 使用通用API接口调用HBase,代码样例中所涉及的操作主要包括:

获取对接集群连接配置文件。

获取认证信息并且认证。

HBase通用API访问并操作。

HBase通过phoenix访问并操作。

三、Windows环境样例调用步骤

环境准备,参考第一课

比对时间,与集群时间误差不能超过5分钟

检查 C:\Windows\System32\drivers\etc\hosts文件中是否包含所有集群节点的域名IP映射信息

IDEA打开样例代码中的hbase-example目录,默认会自动下载依赖,如未下载,选中该目录下的pom.xml文件,右键点击“Add As Maven Project”后等待项目自动将依赖下载完毕

Manager界面下载用户认证凭据后,解压缩获取秘钥文件user.keytab和krb5.conf,将这两个文件放到工程resources/conf目录下

将客户端中hbase目录下core-site.xml、hbase-site.xml、hdfs-site.xml放到resources/conf目录下

右键选择resources目录,选择“Mark Directory as”-"Resources Root"

在代码中修改认证用户名

打开 TestMain.java 文件右键执行Run 启动样例代码

四、Linux环境调试步骤

完成Windows环境样例调用步骤

检查linux环境时间与集群误差不超过5分钟

检查linux环境的JDK版本为1.8

检查linux环境的/etc/hosts文件中包含所有集群节点的域名IP映射信息

创建样例执行路径,例如/opt/hbase_test

上传windows环境打包后生成的target目录下的hbase-example-2.2.3-hw-ei-302002.jar包到/opt/hbase_test目录

上传样例工程resources下的conf目录到/opt/hbase_test

IDEA中使用插件生成依赖路径lib,上传至/opt/hbase_test

执行如下命令验证linux环境下样例代码运行

  • java -cp /opt/hbase_test/:/opt/hbase_test/lib/*:/opt/hbase_test/hbase-example-2.2.3-hw-ei-302002.jar com.huawei.bigdata.hbase.examples.TestMain

五、问题互动渠道

FusonInsight 论坛入口 https://bbs.huaweicloud.com/forum/forum-1103-1.html

 

六、附录

生成依赖路径的pom.xml文件配置

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。