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


相关文章
|
9月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
9月前
|
存储 NoSQL MongoDB
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
366 8
MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
|
11月前
|
监控 Linux 应用服务中间件
Linux多节点多硬盘部署MinIO:分布式MinIO集群部署指南搭建高可用架构实践
通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考MinIO 官方文档。作者联系方式vx:2743642415。
3532 57
|
9月前
|
存储 监控 分布式数据库
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
478 10
|
10月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】基于PostgreSQL的分布式数据库:Citus
Citus 是基于 PostgreSQL 的开源分布式数据库,采用 shared nothing 架构,具备良好的扩展性。它以插件形式集成,部署简单,适用于处理大规模数据和高并发场景。本文介绍了 Citus 的基础概念、安装配置步骤及其在单机环境下的集群搭建方法。
878 2
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
12月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
437 12
|
SQL 运维 关系型数据库
体验用分布式数据库突破资源瓶颈,完成任务领智能台灯!
体验用分布式数据库突破资源瓶颈,完成任务领智能台灯!