HBase的安装和基础使用
发布日期:2021-06-22 22:48:20 浏览次数:3 分类:技术文章

本文共 5953 字,大约阅读时间需要 19 分钟。

文章目录

平台:阿里云轻量级应用服务器

hadoop:3.2.2
hbase:2.3.5

一、安装HBase

(一)下载安装文件

  1. 下载HBase
    hbase各个版本安装包查看链接:
    HBase 2.3.5的安装包链接:
  2. 终端下载
    wget https://downloads.apache.org/hbase/2.3.5/hbase-2.3.5-bin.tar.gz
  3. 解压并改名
    sudo  tar  -zxf  ./hbase-2.3.5-bin.tar.gz  -C  /usr/localsudo  mv  /usr/local/hbase-2.3.5  /usr/local/hbase

(二)配置环境变量

  1. 添加环境变量
    sudo nano ~/.bashrc
    在这里插入图片描述
  2. 使环境变量生效
    source ~/.bashrc

(三)添加用户权限

  1. 系统的hadoop用户添加访问HBase目录的权限
    cd  /usr/localsudo  chown  -R  hadoop  ./hbase

(四)查看HBase版本信息

  1. 查看版本
    /usr/local/hbase/bin/hbase version
    在这里插入图片描述

二、HBase的配置

  1. 模式的选择

    单机和伪分布式两者模式,本文章是对于单机模式的配置。

  2. 单机模式配置

    编辑hbase-env.sh

    sudo nano /usr/local/hbase/conf/hbase-env.sh

    将对应的变量修改如下

    路径是自己对应的路径

    export JAVA_HOME=/usr/lib/jvm/java-8-oracle
    export HBASE_CLASSPATH=/usr/local/hbase/conf
    export HBASE_MANAGES_ZK=true

    配置hbase-site.xml文件

    sudo nano /usr/local/hbase/conf/hbase-site.xml

    内容修改如下

    hbase.rootdir
    hdfs://localhost:9000/hbase
    hbase.cluster.distributed
    true
    hbase.unsafe.stream.capability.enforce
    false
  3. 启动运行HBase

    说明:启动前必须先启动hadoop,再启动hbase,顺序不能更改

    启动过程

    ssh localhostcd /usr/local/hadoop./sbin/start-dfs.shcd /usr/local/hbasebin/start-hbase.sh
  4. jps查看进程

    在这里插入图片描述

  5. 停止运行HBase

    bin/stop-hbase.sh#停止运行hadoopcd /usr/local/hadoop./sbin/stop-dfs.sh

三、HBase常用Shell命令

  1. 进入shell模式
    bin/hbase shell
  2. 在HBase中创建表
    建表描述
    创建一个表student,该表包含Sname、Ssex、Sage、Sdept、course等字段
    建表方法
    create 'student','Sname','Ssex','Sage','Sdept','course'
    在这里插入图片描述
  3. 添加数据
    put:
    添加数据方法举例
    put 'student','95001','Sname','LiYing'put 'student','95001','Ssex','male'put 'student','95001','Sage','22'put 'student','95001','Sdept','CS'put 'student','95001','course:math','80'
    在这里插入图片描述
  4. 查看数据
    get命令:用于查看表的某一个单元格数据;
    scan命令:用于查看某个表的全部数据。
    查看数据举例
    #查看某一行数据get 'student','95001'#查看表的全部数据scan 'student'
    在这里插入图片描述
  5. 删除数据
    delete:通常删除某一个单元格数据
    deleteall:通常删除某一行数据
    delete 'student','95001','Ssex'deleteall 'student','95001'
    在这里插入图片描述
  6. 删除表
    先让该表不可用,再删除表
    disable 'student'  drop 'student'
  7. 查询历史数据
    创建一个新的表(括号内的含义表示指定保存的版本数)
    create 'teacher',{
    NAME=>'username',VERSIONS=>5}
    添加数据
    put 'teacher','91001','username','Mary'put 'teacher','91001','username','Mary1'put 'teacher','91001','username','Mary2'put 'teacher','91001','username','Mary3'put 'teacher','91001','username','Mary4'  put 'teacher','91001','username','Mary5'
    查询历史数据举例
    get 'teacher','91001',{
    COLUMN=>'username',VERSIONS=>5}get 'teacher','91001',{
    COLUMN=>'username',VERSIONS=>3}
    在这里插入图片描述
    默认显示最新添加的数据
  8. 退出HBase数据库
    退出shell命令
    exit

四、HBase编程实践

(一)Eclipse中创建项目

  1. 打开Eclipse,选择File->New->other
    在这里插入图片描述
  2. 进行工程的设置
    在这里插入图片描述

(二)项目添加需要用到的JAR包

  1. 首先选中Classpath,然后点击Add External JARs
  2. 选择对应jar包所在的路径,我的路径为/usr/local/hbase/lib
    在这里插入图片描述

(三)编写Java应用程序

  1. 创建一个class
  2. 编写代码
import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.*;import org.apache.hadoop.hbase.client.*;import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException;public class ExampleForHBase {
public static Configuration configuration; public static Connection connection; public static Admin admin; public static void main(String[] args)throws IOException{
init(); createTable("student",new String[]{
"score"}); insertData("student","zhangsan","score","English","69"); insertData("student","zhangsan","score","Math","86"); insertData("student","zhangsan","score","Computer","77"); getData("student", "zhangsan", "score","English"); close(); } public static void init(){
configuration = HBaseConfiguration.create(); configuration.set("hbase.rootdir","hdfs://localhost:9000/hbase"); try{
connection = ConnectionFactory.createConnection(configuration); admin = connection.getAdmin(); }catch (IOException e){
e.printStackTrace(); } } public static void close(){
try{
if(admin != null){
admin.close(); } if(null != connection){
connection.close(); } }catch (IOException e){
e.printStackTrace(); } } public static void createTable(String myTableName,String[] colFamily) throws IOException {
TableName tableName = TableName.valueOf(myTableName); if(admin.tableExists(tableName)){
System.out.println("talbe is exists!"); }else {
TableDescriptorBuilder tableDescriptor = TableDescriptorBuilder.newBuilder(tableName); for(String str:colFamily){
ColumnFamilyDescriptor family = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(str)).build(); tableDescriptor.setColumnFamily(family); } admin.createTable(tableDescriptor.build()); } } public static void insertData(String tableName,String rowKey,String colFamily,String col,String val) throws IOException {
Table table = connection.getTable(TableName.valueOf(tableName)); Put put = new Put(rowKey.getBytes()); put.addColumn(colFamily.getBytes(),col.getBytes(), val.getBytes()); table.put(put); table.close(); } public static void getData(String tableName,String rowKey,String colFamily, String col)throws IOException{
Table table = connection.getTable(TableName.valueOf(tableName)); Get get = new Get(rowKey.getBytes()); get.addColumn(colFamily.getBytes(),col.getBytes()); Result result = table.get(get); System.out.println(new String(result.getValue(colFamily.getBytes(),col==null?null:col.getBytes()))); table.close(); } }

(四)编译运行程序

  1. 点击运行后,选择Run As->Java
  2. 出现问题
    Failed to instantiate SLF4J LoggerFactory
    解决方法
    导入slf4j-api和log4j相应的jar包,最后是在导入jar包的时候,将对于目录下所有的包及子目录下的包都导入。
  3. 运行结果
    控制台不断地打印输出,其中还存在一些错误。通过shell命令,可以对于hbase数据库进行查看,查看发现新建的表没有成功被创建。

五、参考资料

转载地址:https://blog.csdn.net/qq_43279579/article/details/116143489 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:数据仓库Hive的安装和使用
下一篇:Android okhttp使用

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月22日 11时34分22秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

300小时成为java程序员_直击面试现场: Java程序员3轮6小时面试, 成功拿到阿里offer!... 2019-04-21
中国网建java发送短信_短信验证登陆-中国网建提供的SMS短信平台 2019-04-21
隔行变色java代码_jquery入门—选择器实现隔行变色实例代码 2019-04-21
角标越界 Java_【新人求助】利用占位符操作数据库是总是提示数组角标越界是怎么回事 - Java论坛 - 51CTO技术论坛_中国领先的IT技术社区... 2019-04-21
java类中声明log对象_用于Android环境,java环境的log打印,可打印任何类型数据 2019-04-21
db2与mysql编目_DB2编目、联邦数据库 - Goopand's OS Space - OSCHINA - 中文开源技术交流社区... 2019-04-21
atomikosdatasourcebean mysql_SpringBoot2整合JTA组件实现多数据源事务管理 2019-04-21
webpack 入口文件 php,如何实现webpack多入口文件打包配置 2019-04-21
php tire树,Immutable.js源码之List 类型的详细解析(附示例) 2019-04-21
matlab转差频率控制,转差频率控制的异步电机调速系统的研究 2019-04-21
oracle错误1327,Oracle中的PGA监控报警分析(r11笔记第97天) 2019-04-21
php函数内的循环,PHP 循环列出目录内容的函数代码 2019-04-21
oracle树状排序,Oracle树状结构查询 2019-04-21
深度linux内核升级,深度操作系统 2020.11.11 更新发布:内核升级 2019-04-21
sql 拆解函数_SQL入门50题详解(含知识点讲解及代码运行步骤拆解) 2019-04-21
java和python交互 jni_Python基于pyjnius库实现访问java类 2019-04-21
macbook pro 卸载mysql_MacBook Pro全新重装OS X Yosemite 2019-04-21
已达到计算机的连接数最大值无法再同此远程计算机连接_电脑远程访问已达到计算机的连接数最大值怎么办?解决方法很简单... 2019-04-21
mysql表名长度_JavaWeb之MySQL(一) 2019-04-21
mysql服务器语法_Mysql语法 2019-04-21