NoSQL——期末复习(4)第四章HBase重点思考题

HDFS是否属于NoSQL数据库?请说明用HDFS进行数据管理存在的问题。

HDFS不属于NoSQL数据库。

用HDFS进行数据管理存在的问题:

(1)HDFS不支持对数据的随机读写。

(2)HDFS没有数据表的概念,不能提供对数据的表格化存储。

(3)HDFS无法针对行数统计、过滤扫描等常见数据查询功能。

HBase采用了什么样的数据结构?

HBase采用的是一种面向列的键值对存储模式。HBase表中,列族是表结构的一部分,需要在建表时预先定义。

列不属于表结构,HBase不会预先定义列名及其数据类型和值域等内容。每一个记录中的每个字段必须记录自己的列名(列标识符)以及值和时间戳。

HBase的拓扑结构是什么?每个角色起什么作用?

HBase采用主从式架构,包括一个主节点(Master)和若干个从节点(Regionserver)。除此之外,还需要Zookeeper来实现节点监控和容错。

(1)Zookeeper是一个分布式协调服务,实现节点监控、活跃主节点选举、配置维护等功能。

维护元数据的总入口,以及记录Master节点的地址,监控集群,如果Regionserver出现故障,则通知Master,Master会将其负责的分区移交给其他Regionserver,当活跃Master节点故障的情况下,Zookeeper会在备用Master节点中选举一个新的活跃Master节点。

(2)Master节点是所有Regionserver的管理者,负责对Regionserver的管理范围进行分配,但不负责管理用户数据表。

(3)Regionserver是用户数据表的实际管理者,在分布式集群中,数据表会进行水平分区,每个Regionserver只会对一部分分区进行管理------负责数据的写入、查询、缓存和故障恢复等。用户表最终是以文件形式存储在HDFS上,但如何将写入并维护这些文件,则是由Regionserver负责的。

  1. 描述meta表的结构。

在HBase中,meta表是一个核心组成部分,提供了关于HBase中所有表的元数据信息。

命名:meta表一般以"H:meta"或"hbase:meta"命名。

字段:

Row行键包括表名、起始行键和时间戳,用逗号隔开

Regioninfo中记录了行键范围、列族列表和属性;

server记录了负责的Regionserver地址;

serverstartcode则记录了Regionserver的启动时间。

5.预写日志(WAL)的作用。

(1)当数据被写入memstore之前,Regionserver会先将数据写入预写日志(WAL,Writeaheadlog),预写日志一般被写入HDFS,但键值写入时不会被排序,也不会区分Region。

(2)出现节点宕机、线程重启等问题时,memstore中未持久化的数据会丢失。当Regionserver恢复后,会查看当前WAL中的数据,并将记录进行重放(replay),根据记录的表名和分区名,将数据恢复到指定的store中。

(3)在进行自动或手动的数据持久化操作之后,Regionserver会将不需要的WAL清除掉。

相关推荐
廿一夏9 小时前
MySql存储引擎与索引
数据库·sql·mysql
lzhdim11 小时前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室11 小时前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)12 小时前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
YOU OU13 小时前
Spring IoC&DI
java·数据库·spring
Muscleheng13 小时前
Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
数据库·postgresql
罗超驿14 小时前
18.事务的隔离性和隔离级别:MySQL面试高频考点全解析
数据库·mysql·面试
jran-14 小时前
Redis 命令
数据库·redis·缓存
小江的记录本15 小时前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
June`15 小时前
多线程redis下如何解决aof重写和rdb持久化的数据一致性问题
数据库·redis·缓存