linux下搭建Hbase分布式数据库

简介: linux下搭建Hbase分布式数据库

文章目录

  • 3.简单的操作

1.连接 HBase

2.帮助命令

3.创建一张表 create a table

4.使用查看表是否存在

5.describe 查看表描述

6.put命令插入数据到表

7. scan 查看所有的数据

8.get获取单行数据

9.删除表需要先禁用(disable)表再删除(drop)

10.退出hbase shell

11.停止hbase

Hbase概念

HBase是一个分布式、面向列的开源数据库,其基于Hadoop的分布式文件系统(HDFS)进行存储。它既具有分布式、可扩展、高可靠性等优点,也具备NoSQL、schema-free、实时访问等特性。HBase遵循Google BigTable的计算模型,可以用于存储非常大的数据集,适用于不断积累的数据,提供高效地实时读写访问。HBase作为Hadoop生态系统中的一个重要组成部分,可与Hadoop及其它组件如Hive、Pig、Storm等相互配合,构建具有高性能、可靠性和扩展性的大数据处理平台。

1.安装Hbase

1.jdk的配置

在这里不在赘述。

2.安装hbase

解压安装包

$ tar xzvf hbase-2.5.1-bin.tar.gz

$ cd hbase-2.4.0/

配置HBASE_HOME环境变量

vi /etc/profile

export HBASE_HOME=/opt/bigdata/hbase-2.5.1

export PATH=$PATH:$HBASE_HOME/bin

source /etc/profile

修改hbase-env.sh

最好使用jdk1.8,配置jdk8的路径

export JAVA_HOME=/usr/jdk64/jdk1.8.0_112

修改hbase-site.xml

默认不用修改。

2.启动和操作

1.启动服务

bin/start-hbase.sh

启动成功:

[root@node01 conf]# start-hbase.sh

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/opt/bigdata/hadoop-2.6.5/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/opt/bigdata/hbase-2.5.1/lib/client-facing-thirdparty/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

running master, logging to /opt/bigdata/hbase-2.5.1/logs/hbase-root-master-node01.out

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/opt/bigdata/hadoop-2.6.5/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/opt/bigdata/hbase-2.5.1/lib/client-facing-thirdparty/log4j-slf4j-impl-2.17.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

2023-04-16 07:03:20,996 INFO  [main] master.HMaster (HMaster.java:main(3289)) - STARTING service HMaster

2023-04-16 07:03:21,001 INFO  [main] util.VersionInfo (VersionInfo.java:logVersion(112)) - HBase 2.5.1

2023-04-16 07:03:21,001 INFO  [main] util.VersionInfo (VersionInfo.java:logVersion(112)) - Source code repository git://buildbox.localdomain/home/apurtell/tmp/RM/hbase revision=894ac15342ae9ac1e0d7c827c00fda4b83627758

2023-04-16 07:03:21,001 INFO  [main] util.VersionInfo (VersionInfo.java:logVersion(112)) - Compiled by apurtell on Mon Oct 17 15:41:08 PDT 2022

2023-04-16 07:03:21,001 INFO  [main] util.VersionInfo (VersionInfo.java:logVersion(112)) - From source with checksum 57c1d2c9c03f18d35860e6733447968d1711dae96b0b7d35b2d1e029a5d91423cf65a6063cfbe3b736907b7b20fb94d82a443b65982f4c973a72fb71cd7f2e47

2 web-ui访问地址:http://node01:16010/master-status

c54d96943aaf492cafe08ce0b50cbeb1.png

3.简单的操作

1.连接 HBase

hbase shell


启动报错

  • 错误1
    版本不兼容 需要换版本

hbase shell

LoadError: load error: irb/completion -- java.lang.IncompatibleClassChangeError: Implementing class

 require at org/jruby/RubyKernel.java:974

 require at uri:classloader:/METAINF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:54

  <main> at classpath:/jar-bootstrap.rb:42

  • 错误2

[ERROR] Terminal initialization failed; falling back to unsupported

java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

解决方法

#hadoop目录下存在老版本jline:

cd $HADOOP_HOME/share/hadoop/yarn/lib

rm -f jline-0.9.94.jar

2.帮助命令

hbase(main):030:0> help  

常用命令

 

#命令组 COMMAND GROUPS:

Group name: general

Commands: processlist, status, table_help, version, whoami

# ddl表定义语言  Group name: ddl

 Commands: alter, alter_async, alter_status,  

 create,  

 describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, list_regions, locate_region, show_filters

#数据库 Group name: namespace

 Commands:  

 alter_namespace,  

 create_namespace,  

 describe_namespace,  

 drop_namespace, list_namespace, list_namespace_tables

#操作语言 Group name: dml

 Commands:  

 append,  

 count,  

 delete, deleteall, get, get_counter, get_splits, incr,  

 put, #插入数据

 scan, #查询

 truncate #删除表数据

3.创建一张表 create a table

hbase(main):009:0* create 'user','cf'

Created table user

Took 0.7635 seconds                                                                                                                                                                                                    

=> Hbase::Table - user

4.使用查看表是否存在

hbase(main):010:0> list 'user'

TABLE                                                                                                                                                                                                                  

user                                                                                                                                                                                                                    

1 row(s)

Took 0.0328 seconds                                                                                                                                                                                                    

=> ["user"]

5.describe 查看表描述

hbase(main):012:0> describe 'user'

Table user is ENABLED                                                                                                                                                                                                  

user                                                                                                                                                                                                                    

COLUMN FAMILIES DESCRIPTION                                                                                                                                                                                            

{NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_

VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BL

OCKCACHE => 'true', BLOCKSIZE => '65536'}                                                                                                                                                                              

1 row(s)

Took 0.1756 seconds  

6.put命令插入数据到表

hbase(main):013:0> put 'user','1','cf:username','elite'

Took 0.1000 seconds                                                              

hbase(main):014:0> put 'user','1','cf:age','22'

Took 0.0052 seconds                                                              

hbase(main):015:0> put 'user','1','cf:address','xxpro'

Took 0.0047 seconds  

7. scan 查看所有的数据

One of the ways to get data from HBase is to scan. Use the scan command to scan the table for data. You can limit your scan, but for now, all data is fetched.

hbase(main):016:0> scan 'user'

ROW                   COLUMN+CELL                                                

1                    column=cf:address, timestamp=1681776414492, value=xxpro    

1                    column=cf:age, timestamp=1681776404658, value=22          

1                    column=cf:username, timestamp=1681776395675, value=elite  

8.get获取单行数据

hbase(main):024:0> scan 'user'

ROW                       COLUMN+CELL                                                              

1                        column=cf:address, timestamp=1681776414492, value=xxpro                  

1                        column=cf:age, timestamp=1681776404658, value=22                        

1                        column=cf:username, timestamp=1681776540360, value=elite2                

2                        column=cf:address, timestamp=1681776520152, value=xx2pro                

2                        column=cf:age, timestamp=1681776533412, value=24                        

2                        column=cf:username, timestamp=1681776546625, value=elite2                

2 row(s)

Took 0.0144 seconds                                                                                

hbase(main):025:0> get 'user','2'

COLUMN                    CELL                                                                    

cf:address               timestamp=1681776520152, value=xx2pro                                    

cf:age                   timestamp=1681776533412, value=24                                        

cf:username              timestamp=1681776546625, value=elite2                                    

1 row(s)

Took 0.0069 seconds                                              

9.删除表需要先禁用(disable)表再删除(drop)

If you want to delete a table or change its settings, as well as in some other situations, you need to disable the table first, using the disable command. You can re-enable it using the enable command.

#创建表

hbase(main):031:0> create 'test','cf'

Created table test

Took 0.7353 seconds                                                                                

=> Hbase::Table - test

#看表描述是enabled状态

hbase(main):032:0> desc 'test'

Table test is ENABLED                                                                              

test                                                                                              

COLUMN FAMILIES DESCRIPTION                                                                        

{NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false',

KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE => 'false', DATA_BLOCK_ENCODING => 'NONE', TTL

=> 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON

_WRITE => 'false', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN

=> 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE => '65536'}                    

1 row(s)

Took 0.0253 seconds  

# 直接删除表提示  Table test is enabled. Disable it first.                                                                            

hbase(main):033:0> drop 'test'

ERROR: Table test is enabled. Disable it first.

Drop the named table. Table must first be disabled:

 hbase> drop 't1'

 hbase> drop 'ns1:t1'

Took 0.0192 seconds      

#禁用表                                                                          

hbase(main):035:0> disable 'test'

Took 0.4833 seconds          

# 删除表                                                                      

hbase(main):036:0> drop 'test'

Took 0.2657 seconds  

10.退出hbase shell

quit

11.停止hbase

$ ./bin/stop-hbase.sh


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
2月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
16天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
4月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
415 0
|
27天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
1月前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
66 15
|
1月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
107 3
|
1月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
47 3
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
119 3
|
2月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
108 4