Hbase学习(一)

本文介绍了Hbase的基本概念,包括其与HDFS的区别、特性、结构以及列存储的优势。接着详细阐述了Hbase单机版的安装过程,包括HDFS环境配置、Zookeeper安装和Hbase数据库服务的配置与启动。最后,文章提到了Hbase的一些基本操作,如创建、查看和管理表,以及DML操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hbase

一、 概念

1. 什么是Hbase
官方解释 : Hbase是一个开源的非关系型分布式数据库。它是一个基于Hadoop的分布式,可扩展,巨大数据仓库。
总结 : Hbase是一个高可靠高性能面向列可伸缩的分布式数据库。是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。当用户需要对海量数据进行实时(时效性)、随机(记录级别数据)读/写,用户可以使用Hbase。

  常见的NoSQL数据库分类:
  Key-Value型: Redis、SSDB
  文档型(Document): MongoDB、Elasticsearch、Solr
  列存储:HBase
  图像:Neo4j
  和关系型数据库不同,NoSQL不同种类之间不可相互替换。

2. HDFS和Hbase的区别
Hbase是构建在HDFS之上的一个数据库服务,能够使用户通过Hbase数据库服务间接的操作HDFS,能够使用户对HDFS上的数据实现CRUD操作(细粒度操作)。

3. Hbase特性

  • 线性和模块化扩展
  • 严格一致reads和writes
  • 表的自动和可配置分片(自动分区)
  • RegionServers之间的自动故障转移支持
  • 方便的基类,用于使用Apache Hbase表支持Hadoop MapReduce作业。
  • 易于使用的Java API,用于客户端访问。
  • Block cache和Bloom Filters 以进行实时查询

4. Hbase的意义

  • Hbase可以满足大规模数据实时处理应用的需求: HadoopMapReduce编程框架的高延迟数据处理机制,使得Hadoop无法满足大规模数据实时处理应用的需求。

  • Hbase可以实现随机访问。

  • 具有高扩展性和高性能: 传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题

  • 节省存储空间: 传统关系数据库在数据结构变化时一般需要停机维护;空列浪费存储空间。

    5. 行存储的缺点

  • IO利用率低:当我们需要某些字段时,行存储读取的是一行的数据,所有会出现多余的字段部分。这一部分IO的读取对于系统而言浪费。

  • 磁盘利用率低:关系型数据库不支持稀疏存储(null值不存储),导致null值也会占用磁盘空间,给系统带来磁盘空间的浪费。

    6. Hbase的结构

  • 命名空间:0.96版本开始支持,是对多个表的逻辑分组,类似于关系数据库的database。

  • 表(table): 一张表中包含若干行。

  • 行(row): 一行包括一个行键(Row Key)和若干列簇,一张表中的行按照行键排序,并用行键作为索引。

  • 列簇(column family): 每个列簇包含若干个列,列簇需要在建表时预定义,运行期间可以动态加入新的列。

  • 单元格(cell): 存储的每一个值存放在一个单元格中。

  • 版本(时间戳):默认是时间戳格式,同一列中可能包含若干单元格,这些单元格有版本号唯一区分,根据版本号降序排列。

    7.列存储
    在这里插入图片描述

    在这里插入图片描述

  • 将IO特性相似的列归为一个簇,Hbase底层在检索的时候以列簇为最小文件加载单位。

  • Hbase中所有的记录都是按照一定顺序排列的,ROWKEY>列簇>列名字>时间戳。默认查询返回时间戳最新版本记录。

  • 支持稀疏存储

  • 磁盘IO利用率100%

缺点:查询的值包含ROWKEY/列信息/时间戳

二、Hbase安装(单机版)

HDFS基本环境

1.安装JDK,配置环境变量JAVA_HOME
rpm -ivh jdk-8u171-linux-x64.rpm (安装JDK)
在这里插入图片描述
vi .bashrc(配置用户环境变量。/etc/profile是系统环境变量)
在这里插入图片描述
source .bashrc(重新加载资源)
jps(查看java相关的进程)

2.关闭防火墙
systemctl stop firewalld # 关闭 服务
systemctl disable firewalld # 关闭开机自启动
3.配置主机名和IP映射关系
vi /etc/hostname
在这里插入图片描述
vi /etc/hosts(配置映射关系)
在这里插入图片描述
4.配置SSH免密登录
ssh-keygen -t rsa(生成公私钥对 rsa:以rsa算法生成公私钥)
在这里插入图片描述
ssh-copy-id CentOS(将公钥添加到受信列表)

5.上传Hadoop安装包,并解压到/usr目录
在这里插入图片描述
6.配置HADOOP_HOME环境变量
在这里插入图片描述
7. 修改core-site.xml
vi /usr/hadoop-2.9.2/etc/hadoop/core-site.xml

<!--nn访问入口-->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://CentOS:9000</value>
</property>
<!--hdfs工作基础目录-->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/hadoop-2.9.2/hadoop-${user.name}</value>
</property>

8. 修改hdfs-site.xml
vi /usr/hadoop-2.9.2/etc/hadoop/hdfs-site.xml

<!--block副本因子-->
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>
<!--配置Sencondary namenode所在物理主机-->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>CentOS:50090</value>
</property>
<!--设置datanode最大文件操作数-->
<property>
        <name>dfs.datanode.max.xcievers</name>
        <value>4096</value>
</property>
<!--设置datanode并行处理能力-->
<property>
        <name>dfs.datanode.handler.count</name>
        <value>6</value>
</property>

9.修改slaves
vi /usr/hadoop-2.9.2/etc/hadoop/slaves
CentOS
10. 格式化NameNode,生成fsimage
在这里插入图片描述
11. 启动HDFS服务
start-dfs.sh

Zookeeper安装(协调)

1. 上传zookeeper的安装包,并解压在/usr目录下
tar -zxf zookeeper-3.4.12.tar.gz -C /usr/
2.配置Zookepeer的zoo.cfg
在这里插入图片描述
在这里插入图片描述
3. 创建zookeeper的数据目录
mkdir /root/zkdata
**4.启动zookeeper服务 **
在这里插入图片描述

Hbase配置与安装(数据库服务)

1. 上传Hbase安装包,并解压到/usr目录下
tar -zxf hbase-1.2.4-bin.tar.gz -C /usr/
2.配置Hbase环境变量HBASE_HOME
在这里插入图片描述
3.配置hbase-site.xml
cd /usr/hbase-1.2.4/
vi conf/hbase-site.xml

<property>
    <name>hbase.rootdir</name>
    <value>hdfs://CentOS:9000/hbase</value>
</property>
<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <value>CentOS</value>
</property>
<property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
</property>

4.修改hbase-env.sh,将HBASE_MANAGES_ZK修改为false
在这里插入图片描述
export HBASE_MANAGES_ZK=false告知Hbase,使用外部Zookeeper

** 5. 启动Hbase**
在这里插入图片描述

**6.验证Hbase安装是否成功 **
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Shell命令

1. 打开Hbase Shell
在这里插入图片描述
2. 获取帮助
在这里插入图片描述
3. 查看服务器状态
在这里插入图片描述
4.查看版本信息
在这里插入图片描述

Namespace-数据库

1. 创建namespace
在这里插入图片描述
2.查看namespace详情
在这里插入图片描述
3. 修改namespace
在这里插入图片描述
4. 查看所有的namespace
在这里插入图片描述
5. 查看namespace的表
在这里插入图片描述
6. 删除namespace
在这里插入图片描述

表的操作

1. 查看所有表-(用户表)
在这里插入图片描述
2. 创建表
在这里插入图片描述

  • VERSIONS:保留数据版本,默认值1(一共查询到的数量)
  • TTL: 列簇下列存活时间,默认是FOREVER
  • BLOCKCACHE:是否开启缓存,用于加快读
  • IN_MEMORY:设置是否将列簇下所有数据加载内存中,加速读写,默认值false
  • BLOOMFILTER:配置布隆过滤器(一种数据文件过滤机制),默认值ROW,可选值两个
  • ROW|ROWCOL:如果修改为ROWCOL系统需要额外开销存储列信息作为过滤文件的索引

3. 查看table详情
在这里插入图片描述
4. 禁用表
在这里插入图片描述
**5.启用表 **
在这里插入图片描述
6.截断表
在这里插入图片描述
7.删除表
在这里插入图片描述

DML操作

1.put
在这里插入图片描述
2.get
在这里插入图片描述
3.delete/deleteal
在这里插入图片描述
4.scan
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值