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
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
30天前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
311 0
|
10天前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
42 15
|
1月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
83 4
|
1月前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
41 0
|
3月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
90 5
|
3月前
|
运维 安全 Cloud Native
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
核心系统转型问题之分布式数据库和数据访问中间件协作如何解决
|
3月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
66 0
|
3月前
|
存储 SQL 分布式数据库