linux下搭建Hbase分布式数据库
文章目录
- 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
相关文章:
linux下搭建Hbase分布式数据库
文章目录 Hbase概念1.安装Hbase1.jdk的配置2.安装hbase 2.启动和操作1.启动服务2 **web-ui访问地址:http://node01:16010/master-status** 3.简单的操作1.连接 HBase2.帮助命令3.创建一张表 create a table4.使用查看表是否存在5.describe 查看表描述6.put命令插入数据到表7. s…...
unity,射手游戏
文章目录 介绍一,制作玩家具体函数脚本PlayerCharacter三、 制作玩家控制脚本 PlayerController,调用上面的函数方法四、 制作子弹脚本 shell五、 给玩家挂载脚本六、 制作坦克脚本七、 给坦克添加组件八、 开始游戏,播放动画九、 下载 介绍 …...
摒弃单一变现手段,开拓多元商业模式,破解场景单一APP盈利难题!
工具类APP已成为人们生活、工作中不可或缺的一部分,包括天气服务、搜索、日历等细分领域,在用户中存在巨大的市场需求。但是,这类APP也面临着一些难以避免的问题。 比如功能单一、用户停留时间较短、可替代性强等,这些问题会影响…...
JavaEE-轻松了解网络原理之TCP协议
目录 TCP协议TCP协议数据格式TCP原理确认应答超时重传连接管理三次握手四次挥手 滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流异常问题 TCP协议 TCP,即Transmission Control Protocol,传输控制协议. TCP协议数据格式 16位源端口号与16位目的端…...
薪资17K是一个怎样的水平?来看看98年测试工程师的面试全过程…
我的情况 大概介绍一下个人情况,男,本科,三年多测试工作经验,懂python,会写脚本,会selenium,会性能,然而到今天都没有收到一份offer!从年后就开始准备简历,年…...
OpenCV3 和 Qt5 计算机视觉:11~12
原文:Computer Vision with OpenCV 3 and Qt5 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,…...
R包编写流程
文章目录 所需工具Step 1: 创建R项目Step 2: 在R文件夹中添加函数Step 3: 编辑元数据Step 4: 文档化Step 5: 检查包Step 6: 打包重要参考: 所需工具 R包的编写需要的工具包有:devtools,Rtools Step 1: 创建R项目 devtools::create_package…...
试验GPT写文章书
试验GPT写文章书 写一本名叫《寻找人生目标的十种方法》 回答 2023/4/22 16:12:31 很高兴为您提供以下内容,这是一本关于寻找人生目标的十种方法的建议和思考。 《寻找人生目标的十种方法》 第一章:明确自己的价值观 了解自己内心真正想要追求的东…...
class与typename的异同
一、class与typename的相同点 typename关键字常用于函数模板,这里首先引入函数模板的概念:函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定 类型版本 //函数模板格式…...
OpenCV 图像处理学习手册:6~7
原文:Learning Image Processing with OpenCV 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 计算机视觉 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 当别人说你没有底线的时候,…...
Java中的序列化与反序列化(一)
1、概述 大家好,我是欧阳方超。今天来看一下Java序列化与反序列化的问题。 2、序列化与反序列化 2.1、序列化与反序列化的概念 在Java中,序列化是将对象转换为可存储或传输的格式(一般为字节流)的过程,序列化后的字…...
3.函数、结构体、包
一、函数定义和调用 package mainimport ("fmt" )func test() {fmt.Println("hello world") } func main() {test() }二、函数的参数 1.单个参数 func test(n int) {fmt.Println("传递进来的参数是", n) } func main() {test(10) }2.多个参数…...
科普丨关于 A/B 测试的十问十答
你想知道的,都在这里!本文是神策数据「十问十答」科普系列文章的第二期,围绕 A/B 测试展开。 1 Q:什么是 A/B 测试? A:A/B 测试作为互联网企业的核心增长手段之一,其价值已在实际应用中被多次验…...
尚融宝——整合OpenFeign与Sentinel实现兜底方法——验证手机号码是否注册功能
一、整合过程 在项目添加依赖:添加位置 <!--服务调用--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> 在需要的服务中添加启动注…...
几种常见的激活函数
文章目录 常见的激活函数介绍Sigmoid函数ReLU函数LeakyReLU函数Tanh函数Softmax函数总结 常见的激活函数介绍 激活函数是神经网络中的重要组成部分,它决定了神经元的输出。在神经网络的前向传播中,输入数据被传递给神经元,经过加权和和激活函…...
MySQL-数据库,数据表的基本操作
数据库,数据表的基本操作 1 数据库的基本操作1.1 创建数据库1.2 删除数据库 2 数据表的基本操作2.1 创建数据表2.1.1 主键约束2.1.2 外键约束2.1.3 非空约束2.1.4 唯一性约束2.1.5 默认约束2.1.6 自增列 2.2 查看数据表结构2.2.1 查看表基本结构语句DESC2.2.2 查看表…...
IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告
银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本:银河麒麟桌面操作系统V10 厂商名称: 广州荣士电子有限公司 认证产品:IC-14W网络IC卡读写器 测试日期: 2022-11-04 …...
面试常见问题
1.自我介绍 面试官您好,我叫**,在招聘网站上看到了公司的介绍和岗位要求,觉得非常有吸引力,结合自己的过往经历,也感觉自己能够胜任,所以很高兴能有这次面试机会。 参与工作已经5年了,18年毕业于…...
matlab数据归一化与反归一化处理
假如数据实际取值范围为 X i ∈ [ − π π ] , i 1 , 2 , 3 X_i \in [-\pi \ \ \pi], i1,2,3 Xi∈[−π π],i1,2,3,变量服从正态分布 示例如下: %% 数据归一化处理及其概率密度函数 clear clc Mu [0 0 0]; % 均值 Sigma [1 1 1]; % 标准差 C…...
【杂凑算法篇】密码杂凑算法的安全强度
【杂凑算法篇】密码杂凑算法的安全强度 杂凑(哈希)算法安全强度—【蘇小沐】 文章目录 【杂凑算法篇】密码杂凑算法的安全强度(一)安全强度(Security Strength)(二)杂凑算法的安全强度与对比总…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
