7. Optimización del rendimiento de Hive y nuevas características de Hive3

1. Optimización del diseño de la tabla Hive

  1. Las tablas particionadas optimizan la velocidad de consulta
  2. Mesa de cangilones para optimizar la velocidad de unión
  3. Optimización de índice (eliminado después de Hive3, solo entienda)

2. Optimización de datos de la tabla Hive

2.1 Formato de archivo

descripción general

  • La esencia del almacenamiento de datos de Hive es HDFS, toda la lectura y escritura de datos se realizan en base a archivos HDFS.
  • Para mejorar el rendimiento de lectura y escritura de archivos HDFS, Hive ofrece una variedad de formatos de almacenamiento de archivos: TextFile, SequenceFile, ORC, Parguet, etc.
  • Los diferentes formatos de almacenamiento de archivos tienen diferentes características de almacenamiento, algunos pueden reducir el espacio de almacenamiento y otros pueden mejorar el rendimiento de las consultas.
  • El formato de archivo de Hive se especifica al crear una tabla y el valor predeterminado es TextFile. Sintaxis especificada: almacenar como formato_de_archivo

Archivo de texto

  • TextFile es el formato de archivo predeterminado en Hive, y el formulario de almacenamiento es fila por fila
  • El formato de archivo de datos más común en el trabajo es TextFile. Casi todos los datos sin procesar se generan en formato TextFile. Por lo tanto, Hive está diseñado para evitar varios problemas de codificación y confusión de datos, y selecciona TextFile como formato predeterminado.
  • Si no especifica el formato de almacenamiento al crear una tabla, será TextFile.Al importar datos, copie el archivo de datos a HDFS sin procesarlo.

Ventajas: el formato de datos más simple, que se puede ver directamente.
Desventajas: consume espacio de almacenamiento y reduce el rendimiento de E/S.

SequenceFile

  • SequenceFile es un formato de archivo utilizado para almacenar pares clave-valor serializados en Hadoop, es decir, binario, generado por insertar + seleccionar
  • SequenceFile también se puede usar como entrada y salida de trabajos de MapReduce, y Hive también admite este formato.

Ventajas: almacena datos en forma de KV binario, interacción amigable con la capa subyacente, rendimiento más rápido
Desventajas: consume la mayor cantidad de espacio de almacenamiento

Parquet

  • Parquet es un formato de archivo de almacenamiento en columnas que admite estructuras anidadas. Método de generación: insertar+seleccionar
  • Es un sistema de almacenamiento en columnas que admite pares de modelos de datos anidados. Como solución de optimización para consultas OLAP en sistemas de big data, ha sido compatible de forma nativa con varios motores desconectados, y algunos motores de rendimiento lo utilizan como formato de almacenamiento de archivos predeterminado.
  • A través de la codificación y compresión de datos, así como funciones como la inserción de mapas y la inserción de predicados, el rendimiento de Parquet también mejora en comparación con otros formatos de archivo.

Ventajas: la compresión y la codificación más eficientes se pueden comprimir y dividir, optimizar la utilización del disco y la E/S, y se pueden usar en una variedad de marcos de procesamiento de datos Desventajas: no admite
actualización, inserción, eliminación, ACID

ORCO

  • El formato de archivo ORC es un formato de almacenamiento en columnas en el ecosistema Hadoop
  • Su vida residual fue a principios de 2013, originalmente generado a partir de Apache Hive, utilizado para reducir el espacio de almacenamiento de datos de Hadoop y acelerar la velocidad de consulta de Hive.
  • ORC no es un formato de almacenamiento en columnas. Renshi primero divide toda la tabla según el grupo de filas y la almacena por columna en cada grupo de filas.
  • El archivo ORC se describe a sí mismo, sus datos de origen se serializan mediante búferes de protocolo y los datos del archivo se comprimen tanto como sea posible para reducir el consumo de espacio de almacenamiento, que actualmente también utiliza Hive. Compatibilidad con motores Spark SQL, Presto, etc.

Ventajas: almacenamiento en columnas, alta eficiencia de almacenamiento, compresibilidad, eficiencia de consulta de acceso a columnas eficiente, índice de soporte, consulta de vector de soporte Desventajas: el consumo de rendimiento es grande
al cargar, y el rendimiento al leer la cantidad total de datos debe generarse a través de un archivo de texto conversión Diferencia

2.2 Compresión de datos

descripción general

  • Cuando Hive ejecuta el programa MapReduce en la capa inferior, las operaciones de E/S del disco, la transmisión de datos de red, la reproducción aleatoria y la fusión toman mucho tiempo, especialmente cuando el tamaño de los datos es grande y la carga de trabajo es intensiva.
  • Dado que la E/S del disco y el ancho de banda de la red son recursos preciosos para Hadoop, la compresión de datos es muy útil para ahorrar recursos y minimizar las transferencias de red y la E/S del disco.
  • La compresión Hive en realidad se refiere a la compresión de MapReduce

Ventajas de la compresión
Reducir el espacio ocupado por el almacenamiento de archivos
Acelerar la eficiencia de la transferencia de archivos, mejorando así la velocidad de procesamiento del sistema
Reducir el número de lecturas y escrituras de E/S

Desventajas de la compresión
Al usar datos, primero debe descomprimir el archivo, lo que aumenta la carga de la CPU. Cuanto más complejo sea el algoritmo de compresión, mayor será el tiempo de descompresión.

Compresión en Hive
La compresión en Hive se implementa usando la compresión en Hadoop, por lo que la compresión admitida en Hadoop puede usar directamente los
algoritmos de compresión admitidos en Hadoop en Hive: DEFLATE, gzip, bzip2, LZO, LZ4,
Snappy Para usar la compresión en Hive, MapReduce y Hive deben configurarse en consecuencia

Configuración de compresión en Hive

-- 开启hive中间传输数据压缩功能
-- 1)开启hive中间传输数据压缩功能
set hive.exec.compress.insermediate=true;
-- 2)开启mapreduce中map输出压缩功能
set mapreduce.map.output.compress=true;
-- 3)设置mapreduce中map输出数据的压缩方式
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;

-- 开启Reduce输出阶段压缩
-- 1)开启hive最终输出数据压缩功能
set hive.exec.compress.output=true;
-- 2)开启mapreduce最终输出数据压缩
set mapreduce.output.fileoutputformat.compress=true;
-- 3)设置mapreduce最终数据输出压缩方式
set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;
-- 4)设置mapreduce最终数据输出压缩为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;

Prueba de compresión en Hive
Cree una tabla, especifíquela como formato de archivo de texto y use snappy para comprimir

create table tb_sogou_snappy
stored as textfile
as select * from tb_sogou_source;

Cree una tabla, especifíquela en formato orco y use snappy para comprimirla

create table tb_sogou_orc_snappy
stored as orc tblproperties ("orc.compress"="SNAPPY")
as select * from tb_sogou_source;

2.3 Optimización del almacenamiento

Evite la generación de archivos pequeños
. El almacenamiento de Hive es esencialmente HDFS. HDFS no es propicio para el almacenamiento de archivos pequeños, porque cada archivo pequeño generará una porción de información de metadatos y no utiliza el procesamiento de MapReduce. Cada archivo pequeño en MapReduce iniciará una MapTask cálculo. El procesamiento conduce a la pérdida de recursos, por lo que cuando utilice Hive para el procesamiento y el análisis, trate de evitar la generación de archivos pequeños. Hive
proporciona un mecanismo especial que puede determinar automáticamente si es un archivo pequeño y si es un archivo pequeño. , combinará automáticamente los archivos pequeños.

-- 如果hive的程序,只有maptask,将MapTask产生的所有小文件进行合并
set hive.merge.mapfiles=true;
-- 如果hive的程序,有Map和ReduceTask,将ReduceTask生成的所有小文件进行合并
set hive.merge.mapredfiles=true;
-- 每一个合并的文件大小(244M)
set hive.merge.size.per.task=256000000;
-- 平均每个文件的大小,如果小于这个值就会进行合并(15M)
set hive.merge.smallfiles.avgsize=16000000;

Combinar archivos pequeños
Si encuentra archivos de entrada pequeños para el procesamiento de datos, Hive también proporciona una clase de entrada CombineHiveInputFormat, que se usa para procesar archivos pequeños después de fusionarlos.

-- 设置Hive中底层MapReduce读取数据的输入类;将所有文件合并为一个大文件作为输入
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

Índice de archivos ORC

  • Cuando se utilizan archivos ORC, para acelerar la lectura del contenido de los datos en los archivos ORC, ORC proporciona dos mecanismos de índice: el índice de grupo de filas y el índice de filtro Bloom pueden ayudar a mejorar el rendimiento de las consultas de archivos ORC.
  • Cuando los usuarios escriben datos, pueden especificar la creación de un índice. Cuando los usuarios consultan datos, pueden filtrar los datos por adelantado de acuerdo con el índice para evitar un análisis de datos innecesario.

Índice de grupo de filas

  • Un archivo ORC contiene una o más franjas (grupos de datos de fila), cada franja contiene los datos de índice del valor mínimo/máximo de cada columna
  • Cuando hay una operación mayor o igual a menor que en la consulta, las franjas que no están incluidas en el escaneo se omitirán de acuerdo con el valor mínimo/máximo
  • Entre ellos, el índice que contiene el valor mínimo/máximo establecido para cada franja se convierte en el índice de grupo de filas del índice de grupo de filas, también conocido como índice de comparación de tamaño de índice mínimo-máximo o índice de almacenamiento.
  • Al crear una tabla en formato ORC, después de especificar el parámetro de tabla 'orc.create.index'='true', se creará el índice de grupo de filas
  • Para hacer un uso efectivo del índice de grupo de filas, al cargar datos en la tabla, los campos que necesitan usar el índice deben ordenarse
-- 1.开启索引配置
set hive.optimize.index.filter=true
-- 2.创建表并指定构建索引
create table tb_sogou_orc_index
    stored as orc tblproperties("orc.create.index"="true")
as select * from tb_sogou_source
    distribute by stime
    sort by stime;
-- 3.当进行范围或者等职查询时就可以基于构建的索引进行查询
select count(*) from tb_sogou_orc_index where stime > '12:00:00' and stime < '18:00:00';

Índice de filtro de floración

  • Al crear una tabla, utilice el parámetro "orc.bloom.filter.columns"="columnName..." para especificar para qué campos crear un índice BloomFilter. Al generar datos, se creará una estructura de datos BloomFilter para este campo en cada raya
  • Cuando la condición de consulta contiene un filtro equivalente para este campo, primero obtenga si el siguiente valor está incluido del BloomFilter, si no, omita la franja
-- 创建表指定创建布隆索引
create table tb_sougou_orc_bloom
stored as orc tblproperties
("orc.create.index"="true","orc.bloom.filter.columns"="stime,userid")
as select * from tb_sogou_source
distribute by stime
sort by stime;

-- stime的范围过滤可以走row group index,userrid的过滤可以走bloom filter index
select count(*) from tb_sogou_orc_index
where stime > '12:00:00' and stime < '18:00:00'
and userid = '3933336519818919';

3. Optimización de la ejecución de tareas de Hive Job

3.1 Explicar el plan de consulta

  • HQL es un lenguaje similar a SQL. Es un lenguaje declarativo desde el punto de vista de la especificación del lenguaje. Los usuarios enviarán consultas HQL realistas de acuerdo con los requisitos de la consulta, y Hive las convertirá en Mapreduce/Tez/Spark en función de la informática subyacente. motor trabajo
  • El comando de explicación puede ayudar a los usuarios a comprender el proceso de implementación subyacente de un lenguaje HQL. En términos sencillos, así es como Hive pretende hacer esto
  • Explique analizará la declaración HQL y analizará y devolverá los pasos de implementación, las dependencias y el proceso de implementación de toda la declaración HQL. Puede comprender cómo una declaración HQL implementa el proceso de consulta y procesamiento de datos en la capa inferior. Tenga en cuenta que el el usuario optimiza Hive

* Comandos de sintaxis comunes

EXPLAIN [FORMATTED|EXTENDED|DEPENDENCY|AUTHORIZATION|] query

FORMATTED:对执行计划进行格式化,返回JSON格式的执行计划
EXTENDED:提供一些额外的i西南西,比如文件的路径信息
DEPENDENCY:以JSON格式返回查询所依赖的表和分区的列表
AUTHORIZATION:列出需要被授权的条目,包括输入于输出

Cada plan de consulta consta de las siguientes partes:
1. Árbol de sintaxis abstracta (AST): Hive usa el generador de analizador Antlr para generar automáticamente un árbol de sintaxis abstracta a partir de HQL
2. Dependencias de etapa: se enumerarán las etapas que ejecutan el plan de consulta y el dependencias entre
3. contenido de la etapa: contiene información muy importante de cada etapa, como información específica como el operador y los órdenes de clasificación en tiempo de ejecución

3.2 Optimización de atributos de MapReduce

modo local

  • En el proceso de uso de Hive, algunas tablas con una pequeña cantidad de datos también se convertirán al procesamiento de MapReduce. Al enviar al clúster, debe solicitar recursos, esperar la asignación de recursos, iniciar el proceso de JVM y luego ejecutar el Tarea. Una serie de procesos son engorrosos. La cantidad de datos en sí no es grande, y enviarlos a YARN para ejecutarlos y devolverlos provocará un bajo rendimiento.
  • Para resolver este problema, Hive sigue el diseño de MapReduce y proporciona un modo de computación local, que permite que los programas se ejecuten localmente sin enviarlos a YARN, para mejorar el rendimiento de los programas con pequeños volúmenes de datos.
-- 配置
-- 开启本地模式
set hive.exec.mode.local.auto = true;

提交任务满足以下三个条件(均可调)则使用本地模式:
输入大小小于128M
maptasks数小于4
reducetasks是0或1

Reutilización de JVM
1. Hadoop iniciará una JVM para cada tarea de forma predeterminada para ejecutarse, y la sobrecarga de memoria es grande cuando se inicia la JVM
2. En el caso de una gran cantidad de trabajos, si el volumen de datos de una sola tarea es pequeño, También se solicitará la JVM, lo que genera tensión y desperdicio de recursos
3. La reutilización de la JVM puede hacer que la instancia de la JVM se reutilice N veces en el mismo trabajo. la siguiente tarea hasta que se ejecuten N tareas, liberará
4. El valor de N se puede configurar en el archivo mapred-site.xml de Hadoop, generalmente entre 10 y 20

-- Hadoop3之前的配置在mapred-site.xml中添加以下参数
-- Hadoop3不再支持
mapreduce.job.jvm.numtasks=10

La ejecución paralela de
Hive se analizará en varias etapas al implementar los cálculos de HQL. A veces, las etapas tienen dependencias entre sí y solo se pueden ejecutar una por una. Sin embargo, en otros escenarios, no hay dependencia entre muchas etapas. Al modificar los parámetros, habilite la ejecución en paralelo. Cuando no hay dependencia entre varias etapas, se permite que varias etapas se ejecuten en paralelo para mejorar el rendimiento.

-- 开启stage并行化,默认为false
set hive.exec.parallel=true;
-- 指定并行化线程数,默认为8
set hive.exec.parallel.thread.number=16;

2.3 Optimización de unión

  • Join es una operación esencial en el proceso de análisis y procesamiento de datos, y Hive también admite la sintaxis de Join
  • La capa subyacente de Hive Join se implementó mediante MapReduce. Cuando Hive implementa Join, para mejorar el rendimiento de MapReduce, proporciona una variedad de soluciones de Join para lograr
  • Por ejemplo, Map Join es adecuado para unir tablas pequeñas con tablas grandes, ReduceJoin es adecuado para unir tablas grandes y Bucket Join es un esquema de optimización para unir tablas grandes.

El principio de Map Join
: coloque los datos pequeños en cada memoria de MapRask para almacenar datos completos, y cada parte de los datos grandes se puede unir con los datos completos de los datos pequeños. La capa inferior no necesita pasar por la reproducción aleatoria, y necesita ocupar espacio para
el almacenamiento Uso de archivos de datos pequeños
: intente usar Map Join para implementar el proceso de unión. Map Join se habilita automáticamente de forma predeterminada en Hive: hive.auto. convert.join=true

Límite de tamaño para tablas pequeñas en Hive

-- 2.0版本之前的控制属性
hive.mapjoin.smalltable.filesize=25M
-- 2.0之后
hive.auto.convert.join.noconditionaltask.size=512000000

El principio de Reduce Join
: en la etapa de reproducción aleatoria, los datos de las dos tablas se combinan mediante la agrupación aleatoria de acuerdo con los campos asociados. Debe
ser aleatoria, y la agrupación en el proceso aleatorio se utiliza para realizar la asociación
. Uso: Colmena determinará automáticamente si Map Join está satisfecho, si Map Join no está satisfecho, Reduce Join se ejecutará automáticamente

Principio de combinación de depósitos
: divide los datos entre dos tablas de acuerdo con las reglas deseadas, une los datos de acuerdo con las reglas correspondientes, reduce el número de comparaciones y mejora el rendimiento Sintaxis:
agrupado por colName
Parámetros: set hive.optimize.bucketmapjoin=true;
Requisitos: Campo de depósito = campo de unión, el número de depósitos es igual o múltiple

Use Sort Merge Bucket Join
basado en datos ordenados Join
Sintaxis: agrupado por colName ordenado por (colName)
Parámetros:
set hive.optimize.bucketmapjoin=true;
set hive.auto.convert.sortmerge.join=true;
set hive.optimize. bucketmapjoin .sortedmerge=true;
establezca hive.auto.convert.sortmerge.join.noconditionaltask=true;
Requisitos: campo de depósito=campo de unión=campo de clasificación, el número de depósitos es igual o múltiple

2.4 Optimizer - Optimización de asociaciones

Optimización de correlación
Cuando algunas operaciones en un programa se correlacionan entre sí, se puede habilitar la optimización de correlación y, al analizar operaciones relacionadas, intente ponerlas en una
configuración de MapReduce: establezca hive.optimize.correlation=true;

2.5 Motor optimizador

Antecedentes
Cuando el optimizador predeterminado de Hive analiza algún procesamiento estadístico agregado, la solución de análisis de nivel inferior a veces no es la mejor solución.

Optimizador CBO
RBO: optimizador basado en reglas, optimice el programa de acuerdo con las reglas establecidas
CBO: optimizador basado en costos, seleccione el esquema de optimización apropiado de acuerdo con el costo de diferentes escenarios
Hive admite RBO y CBO Dos motores, RBO por defecto

Configurar CBO

set hive.cbo.enable=true;
set hive.compute.query.using.stats=true;
set hive.stats.fetch.column.stats=true;

Función Analyze Analyzer
: se utiliza para ejecutar un programa MapReduce por adelantado para construir algunos metadatos de la tabla o partición y distribuirlos al motor CBO para su uso.

gramática

-- 构建分区信息元数据
ANALYZE TABLE tablename
[PARTITION(partcol1 [=val1], partcol2[=val2],...]
COMPUTE STATISTICS [noscan];

-- 构建列的元数据
ANALYZE TABLE tablename
[PARTITION(partcol1 [=val1], partcol2[=val2],...]
COMPUTE STATISTICS FOR COLUMNS (columns name1, columns name2...) [noscan];

-- 查看元数据
DESC FORMATTED [tablename] [columnname];
-- 分析优化器
-- 构建表中分区数据的元数据信息
analyze table tb_login_part partition(logindate) compute statistics;
-- 构建表中列的数据的元数据信息
analyze table tb_login_part compute statistics for columns userid;
-- 查看构建的列的元数据
desc formatted tb_login_part userid;

2.5 Empuje de predicado (PPD)

La idea básica de la inserción de predicados es mover la expresión de filtro lo más cerca posible de la fuente de datos, de modo que los datos irrelevantes se puedan omitir directamente durante la ejecución real. En pocas palabras, sin afectar el resultado final, intente ejecutar las condiciones del filtro por adelantado.

Habilitar parámetro (habilitado de forma predeterminada): hive.optimize.ppd=true;

Regla
1. Para unión (unión interna) y unión externa completa, no hay diferencia si la condición se escribe después de en o después de donde
2. Para unión externa izquierda, la tabla de la derecha se escribe después de y la tabla en la izquierda se escribe después de donde. Rendimiento 3.
Para la combinación externa derecha, la tabla de la izquierda se escribe después de y la tabla de la derecha se escribe después de donde, y el rendimiento mejora.
4. Cuando las condiciones están dispersas en dos tablas, el predicado se puede empujar hacia abajo de acuerdo con las conclusiones anteriores 2 y 3 combinación libre

2.6 Desviación de datos

El sesgo de datos significa que cuando se envía un programa, la mayoría de las tareas de este programa ya han terminado de ejecutarse y solo se ha estado ejecutando una determinada tarea.
Cuando el programa ejecuta group by o count (distinto) y otra agregación de grupo, si los datos en sí están sesgados, de acuerdo con las reglas de partición Hash de MapReduce, definitivamente se producirá un sesgo de datos.

Solución
Solución 1: active la agregación del lado del mapa
hive.map.aggr=true;
al reducir la cantidad de datos aleatorios y el tiempo de ejecución de la fase Reductor, evite la desviación de datos debido a las grandes diferencias en los datos de cada tarea

Solución 2: Realice la partición aleatoria
seleccione * de la tabla Distribuir por rand(); Distribuir por
se usa para especificar qué campo se usa como clave en la capa inferior para implementar la partición, agrupación, etc.
función de rango para evitar sesgo de datos

Solución 3: Equilibrio de carga automático de sesgo de datos
hive.groupby.skewindata=true;
después de abrir, el programa se ejecutará automáticamente a través de dos MapReduces.
El primer MapReduce se divide aleatoriamente automáticamente en Reducers, y la parte izquierda de cada Reducer se agrega y genera el Resultado
El segundo MapReduce procesa los resultados de la agregación en el paso anterior según el negocio para garantizar que se realice la misma distribución en conjunto, y los resultados finales de la agregación

Combinación de sesgo de datos
Durante la operación de combinación, si las dos tablas son relativamente grandes, no se puede implementar la combinación de mapas y solo se puede usar la combinación reducida. Luego, cuando hay demasiados valores en un determinado tipo de campo asociado, se generarán datos. sesgar.

Solución 1: Filtrado previo, convirtiendo big data en small data para implementar Map Join

Solución 2: utilice la combinación de cubos
para crear dos tablas en tablas de cubos

Solución 3: cuando se usa Skew Join
Skew Join es un proceso de unión especial especialmente diseñado para evitar la asimetría de datos en Hive. El
principio de esta unión es combinar Map Join y Reduce Join. Si hay una asimetría de datos en un valor determinado, la asimetría de datos Map Join se usa para implementar los datos solos.
Otros datos sin sesgo de datos se implementan mediante Reduce Join, lo que evita el problema del sesgo de datos en Reduce Join.
Finalmente, los resultados de Map Join y los resultados de Reduce Join se combinan mediante Unión

Usar unión sesgada

-- 开启运行过程中Skejoin
set hive.optimize.skewjoin=true;
-- 如果这个key的出现次数超过这个范围
set hive.skewjoin.key=100000;
-- 在编译时判断是否会产生数据倾斜
set hive.optimize.skewjoin.compiletime=true;
-- 不合并,提升性能
set hive.optimize.union.remove=true;
-- 如果Hive的底层走的时MapReduce,必须开启这个属性,才能实现合并
set mapreduce.input.fileinputformat.input.dir.recursive=true;

3. Nuevas características de Hive3

Hive ha indicado que no se recomienda MR desde la versión 2.X. Es posible que no esté disponible en futuras versiones. Se recomienda usar Tes o Spark en su lugar.

3.1 Rápido

Tez es un marco informático de código abierto en la comunidad Apache que admite trabajos DAG.
Puede convertir varios trabajos dependientes en un solo trabajo para mejorar el rendimiento de los trabajos DAG. Al final, Tez también enviará el programa a YARN para realizar la ejecución de
Tez. Para los usuarios finales, en realidad permite a los desarrolladores crear nuevas canciones para los usuarios finales más rápido. Aplicaciones que escalan mejor

3.2 Actualización de LLAP

La característica introducida en hive2.0 en LLAP es más madura en Hive3 y Tez
.System IO e interacción con HDFS DataNode, con un rendimiento de programa extremadamente alto, LLAP actualmente solo admite el motor Tez
LLAP no reemplazará el modelo de ejecución existente, sino que lo mejorará
El demonio LLAP es opcional.
LLAP no es un motor de ejecución.
Ejecución parcial: los resultados del trabajo realizado por el programa LLAP pueden generar parte de los resultados de la consulta de Hive.
Gestión de recursos: las personas de YARn son responsables de la gestión y asignación de recursos.

3.3 Modo independiente Metastore

  • Todos los objetos en Hive, como bases de datos, tablas, funciones, etc. Sus definiciones se denominan metadatos metadatos
  • Metastore es un servicio de almacenamiento de metadatos para operar y acceder a metadatos
  • HIVe u otros motores de ejecución utilizarán estos metadatos en tiempo de ejecución para decidir cómo analizar, autorizar y realizar de manera efectiva la desconexión del usuario.
  • Los metadatos de los metadatos se pueden almacenar configurados como un RDBMS de Apache Derby incorporado o conectados a un RDBMS externo
  • El Metastore en sí está completamente integrado en el proceso del usuario y también puede ejecutarse como un servicio para que otros procesos se conecten.

A partir de Hive 3.0, Metastore se lanza como un paquete separado que puede ejecutarse sin otras partes de Hive.

Supongo que te gusta

Origin blog.csdn.net/hutc_Alan/article/details/131481195
Recomendado
Clasificación