linux下搭建Hbase分布式数据库

news/2024/11/15 2:00:40/

文章目录

  • Hbase概念
  • 1.安装Hbase
    • 1.jdk的配置
    • 2.安装hbase
  • 2.启动和操作
    • 1.启动服务
    • 2 **web-ui访问地址:`http://node01:16010/master-status`**
  • 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

在这里插入图片描述

3.简单的操作

1.连接 HBase

hbase shell

启动报错

  • 错误1
    版本不兼容 需要换版本
 hbase shell
LoadError: load error: irb/completion -- java.lang.IncompatibleClassChangeError: Implementing classrequire at org/jruby/RubyKernel.java:974require 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: ddlCommands: 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: namespaceCommands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables#操作语言 Group name: dmlCommands: 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

http://www.ppmy.cn/news/48226.html

相关文章

Vue2-黑马(八)

目录&#xff1a; &#xff08;1&#xff09;router-动态路由 &#xff08;2&#xff09;router-重置路由 &#xff08;3&#xff09;router-页面刷新 &#xff08;1&#xff09;router-动态路由 我们有这样一个需求&#xff0c;不同的用户根据自己的身份不一样&#xff0c;…

我在“Now In Android”中学到的 9 件事

我在“Now In Android”中学到的 9 件事 Now in Android是一款功能齐全的 Android 应用程序&#xff0c;完全使用 Kotlin 和 Jetpack Compose 构建。它遵循 Android 设计和开发最佳实践&#xff0c;旨在为开发人员提供有用的参考。 https://github.com/android/nowinandroid UI…

故障分析 | 数据库服务器内存不足一例分析

作者&#xff1a;付祥 现居珠海&#xff0c;主要负责 Oracle、MySQL、mongoDB 和 Redis 维护工作。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。 现象 监控告警某台机器空闲内存低于10…

【每日一练】题目名称:划分窗口

题目描述 给定一个长度为 n 的数组 num 和滑动窗口的大小 size &#xff0c;找出所有滑动窗口里数值的最大值。例如&#xff0c;如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小 3&#xff0c;那么一共存在6 个滑动窗口&#xff0c;他们的最大值分别为{4,4,6,6,6,5}&#xff1b…

《C++高并发服务器笔记——第五章项目实战与总结》

代码地址 《C高并发服务器笔记——第五章》 5.1、阻塞/非阻塞、同步/异步&#xff08;网络IO&#xff09;1.阻塞/非阻塞、同步/异步(网络IO)①典型的一次IO的两个阶段是什么&#xff1f; 2.日志系统①基础知识②整体概述③本文内容④单例模式1.经典的线程安全懒汉模式2.局部静…

asp.net+sqlserver基于web的在校大学生贷款管理系统

采用的技术&#xff1a; 1.ASP.NET框架&#xff1b; 2. SQL Server 数据库&#xff1b; 3.AJAX技术&#xff1a;它不是一种新的编程语言&#xff0c;而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术&#xff1b; 4.HTML,CSSDIV,代码实现静态页面&#xff1b; 开…

集合例题,

package com.hspedu.homework;import java.util.*;/*** author 韩顺平* version 1.0*/ SuppressWarnings({"all"}) public class Homework03 {public static void main(String[] args) {Map m new HashMap();m.put("jack", 650);//int->Integerm.put(&…

C# ArrayList

ArrayList 是 System.Collections 命名空间中的一个类&#xff0c;是一个可动态增长和缩减的数组。与 C# 数组不同&#xff0c;ArrayList 可以自动扩容&#xff0c;并支持动态插入和删除元素&#xff0c;可以存储任何类型的对象。 使用 ArrayList 的步骤如下&#xff1a; 引入…