Preguntas de la entrevista de HBase

1. ¿Cuáles son las características de HBase?

1)大:一个表可以有数十亿行,上百万列;
2)无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中
不同的行可以有截然不同的列;
3)面向列:面向列(族)的存储和权限控制,列(族)独立检索;
4)稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
5)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入
时的时间戳;
6)数据类型单一:Hbase中的数据都是字符串,没有类型。

2. ¿La diferencia entre HBase y Hive?

Inserte la descripción de la imagen aquí

	1)Hive和Hbase是两种基于Hadoop的不同技术--Hive是一种类SQL的引擎,并
且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。
	2)这两种工具可以同时使用的。Hive可以用来进行统计查询,HBase可以用来
进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。
最后再结合自己的实际应用说出来.

3. ¿Para qué tipo de escenarios es adecuado HBase?

1) Almacenar datos estructurados o semiestructurados

对于数据结构字段不够确定或杂乱无章很难按一个概念去进行抽取的数据适合用
HBase,HBase支持动态增加字段,而RDBMS需要统计维护.

2) Registrar datos escasos

HBase对于为null的数据不会被存储,节省了空间又提高了读性能。

3) Datos de múltiples versiones

时间戳和版本号

4) Gran cantidad de datos

可以存储数十亿行,上百万列的数据

4. Describe los principios de diseño de rowKey de HBase.

  • Principio de longitud de la clave de fila La clave de
    fila es una secuencia binaria. Muchos desarrolladores sugieren que la longitud de la clave de fila debe ser de 10 ~ 100 bytes. Sin embargo, se recomienda que la longitud sea lo más corta posible y no exceda los 16 bytes.

  • Principio de hash rowKey
    evita el tema candente de regionserver , porque un rowKey sólo puede pertenecer a una regionserver, por lo que el diseño de rowKey debe seguir el principio de hash. ( Pre-partición se puede utilizar en la construcción de la tabla )

③ Principio único de Rowkey

5. Describa las funciones y las diferencias de implementación de escanear y obtener en HBase

La implementación de consultas de HBase solo proporciona dos formas:
obtener la función:

  • Escaneo parcial, obtenga el único registro especificado de acuerdo con la clave de fila
  • Escanear es escanear todo, obtener un lote de registros) escanear puede agregar filtros a través del método setFilter, que también es la base de la búsqueda de paginación y de múltiples condiciones; también puede agregar la clave de inicio y la clave final

6 Describa en detalle la estructura de una célula en HBase.

HBase中通过row和columns确定的为一个存贮单元称为cell。
 Cell:由{
    
    rowkey, column(=<family> + <label>), version}唯一确定的单元。cell 中的数据是 没有类型的,全部是字节码形式存贮。

7. Describa brevemente cuál es el propósito de compact en HBase, cuándo se activa, cuáles se dividen, cuáles son las diferencias y cuáles son los parámetros de configuración relevantes.

在hbase中每当有memstore数据flush到磁盘之后,就形成一个storefile,当
storeFile的数量达 到一定程度后,就需要将 storefile 文件来进compaction 操作。
 	Compact 的作用:
 	 ① 合并文件 
 	 ② 清除过期,多余版本的数据
 	 ③ 提高读写数据的效率

HBase 中实现了两种 compaction 的方式:minor and major. 这两种 compaction 方式的
区别是:
	1、Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过期版
本清理,不做任何删除数据、多版本数据的清理工作。
	2、Major 操作是对 Region 下的HStore下的所有StoreFile执行合并操作,最终的结果是整理
合并出一个文件。

8. Cada día se almacenan diez mil millones de datos en HBase ¿Cómo garantizar que los datos se almacenen correctamente y que todos los datos se ingresen dentro del tiempo especificado sin datos residuales?

需求分析:
	1)百亿数据:证明数据量非常大;
	2)存入HBase:证明是跟HBase的写入数据有关;
	3)保证数据的正确:要设计正确的数据结构保证正确性;
	4)在规定时间内完成:对存入速度是有要求的。


解决思路:
	1)数据量百亿条,什么概念呢?假设一整天60x60x24 = 86400秒都在写入数据,那么每秒的
写入条数高达100万条,HBase当然是支持不了每秒百万条数据的,所以这百亿条数据可能不是通
过实时地写入,而是批量地导入。批量导入推荐使用BulkLoad方式(推荐阅读:Spark之读写HBase),
性能是普通写入方式几倍以上;
	2)存入HBase:普通写入是用JavaAPI put来实现,批量导入推荐使用BulkLoad;
	3)保证数据的正确:这里需要考虑RowKey的设计、预建分区和列族设计等问题;
	4)在规定时间内完成也就是存入速度不能过慢,并且当然是越快越好,使用BulkLoad。

9. ¿Cómo proporciona HBase interfaces para el acceso front-end web?

使用JavaAPI来编写WEB应用,使用HBase提供的RESTFul接口。

10. Por favor, enumere varios métodos de optimización de HBase.

结合你们自己的项目说吧!!!

11. ¿El principio de RowFilter y BloomFilter en HBase?

1)RowFilter原理简析
	RowFilter顾名思义就是对rowkey进行过滤,那么rowkey的过滤无非就是相等(EQUAL)、
大于(GREATER)、小于(LESS),大于等(GREATER_OR_EQUAL),小于等于(LESS_OR_EQUAL)和
不等于(NOT_EQUAL)几种过滤方式。Hbase中的RowFilter采用比较符结合比较器的方式来进行过滤

比较器的类型如下:
	BinaryComparator
	BinaryPrefixComparator
	NullComparator
	BitComparator
	RegexStringComparator
	SubStringComparator
例如:
Filter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL,
new BinaryComparator(Bytes.toBytes(rowKeyValue)));
Scan scan = new Scan();
scan.setFilter(rowFilter)
...

2)BloomFilter原理简析
	主要功能:提供随机读的性能

Supongo que te gusta

Origin blog.csdn.net/m0_49834705/article/details/112256943
Recomendado
Clasificación