mac上部署单体hbase

1. 简介

HBase 是一个开源的、分布式的、版本化的典型非关系型数据库。它是 Google BigTable 的开源实现,并且是 Apache 基金会的 Hadoop 项目的一部分1。HBase 在 Hadoop Distributed File System (HDFS) 上运行,作为一个列式存储非关系数据库管理系统。它提供了存储稀疏数据集的容错方式,这类数据集在许多大数据用例中十分常见。HBase 非常适合实时数据处理或者对大量数据的随机读取/写入访问

2. 特性

HBase 的数据模型是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳。HBase 的列(Column)都得归属到列族(Column Family)中。在 HBase 中,定位一行数据会有一个唯一的值,这个叫做行键 (RowKey)。而在 HBase 的列不是我们在关系型数据库所想象中的列。

HBase 的主要功能组件包括库函数、一个 Master 主服务器和许多个 Region 服务器4。Master 主服务器负责管理和维护 HBase 表的分区信息,维护 Region 服务器列表,分配 Region,负载均衡4。Region 服务器负责存储和维护分配给自己的 Region,处理来自客户端的读写请求。

HBase 是一个开源的、分布式的、面向列的数据库,具有以下主要特性:

海量存储:HBase 的单表可以有百亿行、百万列,数据矩阵横向和纵向两个维度所支持的数据量级都非常具有弹性。它适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在几十到百毫秒内返回数据。

列式存储:HBase 是面向列的存储和权限控制,并支持列独立检索2。HBase表的数据是基于列族进行存储的,列族是在列的方向上的划分。

极易扩展:HBase 底层文件存储依赖HDFS,从“基因”上决定了其具备可扩展性2。HBase的扩展性是热扩展,在不停止现有服务的前提下,可以随时添加或者减少节点。

高可靠性:HBase 提供WAL 和Replication 机制。前者保证了数据写入时不会因集群异常而导致写入数据的丢失;后者保证了在集群出现严重问题时,数据不会发生丢失或者损坏。

高性能:底层的LSM 数据结构和Rowkey 有序排列等架构上的独特设计,使得HBase 具备非常高的写入性能2。Region 切分、主键索引和缓存机制使得HBase 在海量数据下具备一定的随机读取性能,该性能针对Rowkey 的查询能够达到毫秒级别。

稀疏:稀疏主要是针对HBase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

总的来说,HBase 通过在廉价服务器上搭建大规模结构化存储集群,提供海量数据高性能的随机读写能力。它的数据模型和功能组件设计使得它在处理大数据的场景中具有很大的优势。

3. 部署搭建

3.1 下载

这里提供官方的下载地址
https://dlcdn.apache.org/hbase/
因为我是jdk17环境 所以我选择比较新的版本进行下载
jdk1.8的环境 可选择下载2.5.6
在这里插入图片描述

3.2 解压

解压后的目录如下
在这里插入图片描述
在doc的文件夹中是官方的文档 当然东西也比较多,可选择性看

3.3 配置

首先需要验证自己的java 环境这个是必须的
可直接使用java --version来验证
在这里插入图片描述
另外可以配置我们使用的java 环境 大多数适用于多环境的java 用户
直接修改配置 hbase-env.sh
新增 java的路径即可
export JAVA_HOME=/usr/local/develop/java/zulu-jdk17.0.7

没问题的话 可以下一步 配置hbase-site.xml
这里我们直接使用 本地文件路径 而不是hdfs 分布式文件系统
增加如下配置

<property><name>hbase.rootdir</name><!-- 修改为自己的hbase的路径--><value>file:///usr/local/develop/hbase</value></property>

3.4 启动

运行bin目录下的 start-hbase.sh 可直接启动
在这里插入图片描述
启动过程比较久 可观察日志 看看是否出错 启动完成后,会初始化一个master的单点应用

3.5 验证

第一个办法,看看日志
第二个 使用 hbase自带的控制页面来观察 http://localhost:16010/master-status

habse 控制台
第三个 使用hbase shell
还是在bin目录下 直接运行 hbase shell
出来如下任务 即表示成功
在这里插入图片描述
第四个 使用jps 命令查看是否存在 HMaster
如下图
在这里插入图片描述

4. 基本使用

4.1 Create a table. 创建表

Use the create command to create a new table. You must specify the table name and the ColumnFamily name.

hbase(main):001:0> create 'test', 'cf'
0 row(s) in 0.4170 seconds
=> Hbase::Table - test

4.2 List Information About your Table 查看表

Use the list command to confirm your table exists

hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0180 seconds=> ["test"]

4.3 查看表的详情

Now use the describe command to see details, including configuration defaults

hbase(main):003:0> describe '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 => 'f
alse', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE=> '65536'}
1 row(s)
Took 0.9998 seconds

4.4 Put data into your table. 向表中新增数据

To put data into your table, use the put command.

hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 secondshbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 secondshbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds

Here, we insert three values, one at a time. The first insert is at row1, column cf:a, with a value of value1. Columns in HBase are comprised of a column family prefix, cf in this example, followed by a colon and then a column qualifier suffix, a in this case.

4.5 Scan the table for all data at once. 查看表里的所有数据

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):006:0> scan 'test'
ROW                                      COLUMN+CELLrow1                                    column=cf:a, timestamp=1421762485768, value=value1row2                                    column=cf:b, timestamp=1421762491785, value=value2row3                                    column=cf:c, timestamp=1421762496210, value=value3
3 row(s) in 0.0230 seconds
Get a single row of data.

4.6 To get a single row of data at a time, use the get command. 查看第一行数据

hbase(main):007:0> get 'test', 'row1'
COLUMN                                   CELLcf:a                                    timestamp=1421762485768, value=value1
1 row(s) in 0.0350 seconds
Disable a table.

4.7 如果要删除表或更改其设置以及在其他某些情况下,则需要使用Disable命令首先禁用表。您可以使用enable命令重新启用它。

hbase(main):008:0> disable 'test'
0 row(s) in 1.1820 secondshbase(main):009:0> enable 'test'
0 row(s) in 0.1770 seconds
Disable the table again if you tested the enable command above:hbase(main):010:0> disable 'test'
0 row(s) in 1.1820 seconds
Drop the table.

4.8 To drop (delete) a table, use the drop command. 删除表

hbase(main):011:0> drop 'test'
0 row(s) in 0.1370 seconds

4.9 退出 shell

exit

4.10 关闭 hbase

./bin/stop-hbase.sh

5. tip

创建hbase失败时 需要清除干净失败的的数据 然后在重新开启
例如 存放点 hbase的目录 logs目录 以及 tmp目录

the end
goods day ~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/410132.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular系列教程之变更检测与性能优化

文章目录 前言变更检测的原理脏检查OnPush策略 示例代码总结 前言 Angular 除了默认的变化检测机制&#xff0c;也提供了ChangeDetectionStrategy.OnPush&#xff0c;用 OnPush 可以跳过某个组件或者某个父组件以及它下面所有子组件的变化检测。 在本文中&#xff0c;我们将探…

vscode显示120字符或者80字符提示线或者显示垂直标尺

vscode显示120字符或者80字符提示线或者显示垂直标尺 一般规定一行代码不超过80或者120个字符。取决于团队的编码规范。 不同公司不同团队有不同的规定。 当单行代码过长。产生横向滚动条。使得代码难以阅读。 打开全局设置的settings.json /C:/Users/xxx/AppData/Roaming/Cod…

java音乐交流和周边售卖商城系统springboot+vue

不同的系统提供的服务也不相同&#xff0c;其对应的功能也不相同&#xff0c;所以&#xff0c;系统开工前&#xff0c;需要明确其用途&#xff0c;确定其功能。由此&#xff0c;才可以进行各个任务的开展。 国外摇滚乐队交流和周边售卖系统经过分析&#xff0c;确定了其需要设置…

【昕宝爸爸小模块】图文源码详解什么是线程池、线程池的底层到底是如何实现的

➡️博客首页 https://blog.csdn.net/Java_Yangxiaoyuan 欢迎优秀的你&#x1f44d;点赞、&#x1f5c2;️收藏、加❤️关注哦。 本文章CSDN首发&#xff0c;欢迎转载&#xff0c;要注明出处哦&#xff01; 先感谢优秀的你能认真的看完本文&…

轻松识别Midjourney等AI生成图片,开源GenImage

AIGC时代&#xff0c;人人都可以使用Midjourney、Stable Diffusion等AI产品生成高质量图片&#xff0c;其逼真程度肉眼难以区分真假。这种虚假照片有时会对社会产生不良影响&#xff0c;例如&#xff0c;生成公众人物不雅图片用于散播谣言&#xff1b;合成虚假图片用于金融欺诈…

第一次开发基于SpringBoot的Java应用

第一次开发基于SpringBoot的Java应用 一、 方式1&#xff1a;IDEA创建New Project Spring Boot官方文档的Getting Started1、IDEA创建New Project2、Spring Boot官方文档的Getting Started2.1 Creating the POM &#xff08;实际是&#xff0c;更新pom.xml&#xff09;2.2 Add…

【FastAPI】路径参数(二)

预设值 如果你有一个接收路径参数的路径操作&#xff0c;但你希望预先设定可能的有效参数值&#xff0c;则可以使用标准的 Python Enum 类型。 导入 Enum 并创建一个继承自 str 和 Enum 的子类。通过从 str 继承&#xff0c;API 文档将能够知道这些值必须为 string 类型并且能…

【Git】任何位置查看git日志

需求 现需要查看指定项目中的某个文件的 Git 日志。如有 项目代码 jflowable &#xff0c;需要查看其下文件 D:\z_workspace\jflowable\src\main\java\com\xzbd\jflowable\controller\TestController.java 的日志。 分析 一般的思路是&#xff0c;进入 jflowable 项目&#…

SAP PI之Rest adapter

一&#xff0c;简介 REST风格接口是以http为传输协议&#xff0c;以xml或json或text为有效负载。下图展示了REST到XI再返回的一个过程&#xff0c;一个REST接口包含的信息有&#xff1a;服务URL、URL中带的参数、http方法(post/get/put等)、http头部、body部分的有效载荷。而X…

计算机网络——第三层:网络层

1. IP数据报 1.1 IPV4数据报 1.1.1 IPv4数据报的结构 如图按照RFC 791规范显示了一个IPv4数据包头部的不同字段 IPv4头部通常包括以下部分&#xff1a; 1.1.1.1 版本&#xff08;Version&#xff09; 指明了IP协议的版本&#xff0c;IPv4表示为4。 1.1.1.2 头部长度&#x…

《手把手教你》系列技巧篇(十一)-java+ selenium自动化测试-元素定位大法之By tag name(详细教程)

1.简介 按宏哥计划&#xff0c;本文继续介绍WebDriver关于元素定位大法&#xff0c;这篇介绍By ClassName。看到ID&#xff0c;NAME这些方法的讲解&#xff0c;小伙伴们和童鞋们应该知道&#xff0c;要做好Web自动化测试&#xff0c;最好是需要了解一些前端的基本知识。有了前端…

第36期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…