Uso de configuraciones de Hive al ejecutar trabajos de EMR sin servidor - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de configuraciones de Hive al ejecutar trabajos de EMR sin servidor

Puede ejecutar trabajos de Hive en una aplicación con el parámetro type establecido en HIVE. Los trabajos deben ser compatibles con la versión de Hive compatible con la versión de lanzamiento de Amazon EMR. Por ejemplo, cuando ejecuta trabajos en una aplicación con Amazon EMR versión 6.6.0, su trabajo debe ser compatible con Apache Hive 3.1.2. Para obtener información sobre las versiones de la aplicación para cada versión, consulte Versiones lanzamiento de Amazon EMR sin servidor.

Parámetros de los trabajos de Hive

Al utilizar la API StartJobRun para ejecutar un trabajo de Hive, debe especificar los siguientes parámetros.

Rol de tiempo de ejecución de los trabajos de Hive

Utilice executionRoleArn para especificar el ARN del rol de IAM que la aplicación utiliza para ejecutar los trabajos de Hive. Este rol debe tener los siguientes permisos:

  • Lectura de los buckets de S3 u otras fuentes de datos en las que residen sus datos

  • Lectura de los prefijos o buckets de S3 donde residen el archivo de consulta de Hive y el archivo de consulta de init

  • Lectura y escritura en los buckets de S3 donde se residen el directorio de Hive Scratch y el directorio de almacén de Hive Metastore

  • Escritura en los buckets de S3 donde desee escribir el resultado final

  • Escritura en los registros en un bucket o prefijo de S3 que especifique S3MonitoringConfiguration

  • Acceso a las claves de KMS si usa claves de KMS para cifrar los datos en el bucket de S3

  • Acceso al catálogo de datos de AWS Glue

Si su trabajo de Hive lee o escribe datos en –o desde– otras fuentes de datos, especifique los permisos adecuados en este rol de IAM. Si no proporciona estos permisos al rol de IAM, es posible que su trabajo no funcione. Para obtener más información, consulte Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor.

Parámetros del controlador de los trabajos de Hive

Utilice jobDriver para proporcionar datos al trabajo. El parámetro del controlador de trabajo solo acepta un valor para el tipo de trabajo que desee ejecutar. Cuando se especifica hive como tipo de trabajo, EMR sin servidor pasa una consulta de Hive al parámetro jobDriver. Los trabajos de Hive tienen los parámetros siguientes:

  • query: esta es la referencia en Amazon S3 al archivo de consulta de Hive que desea ejecutar.

  • parameters: estas son las propiedades de configuración adicionales de Hive que desea anular. Para anular las propiedades, páselas a este parámetro como --hiveconf property=value. Para anular las variables, páselas a este parámetro como --hivevar key=value.

  • initQueryFile: este es el archivo de consulta de Hive de init. Hive ejecuta este archivo antes de la consulta y puede usarlo para inicializar tablas.

Parámetro de anulación de la configuración de Hive

Utilice configurationOverrides para anular las propiedades de configuración a nivel de monitorización y de aplicación. Este parámetro es un objeto JSON con los dos campos siguientes:

  • monitoringConfiguration: utilice este campo para especificar la URL de Amazon S3 (s3MonitoringConfiguration) donde desea que el trabajo de EMR sin servidor almacene los registros de su trabajo de Hive. Asegúrese de crear este depósito con el mismo Cuenta de AWS que aloja su aplicación y en el mismo Región de AWS lugar en el que se ejecuta su trabajo.

  • applicationConfiguration: puede proporcionar un objeto de configuración en este campo para anular las configuraciones para aplicaciones predeterminadas. Puede utilizar una sintaxis abreviada para proporcionar la configuración o hacer referencia al objeto de configuración en un archivo JSON. Los objetos de configuración se componen de una clasificación, propiedades y configuraciones anidadas opcionales. Las propiedades consisten en las configuraciones que desea anular en ese archivo. Es posible especificar varias clasificaciones para varias aplicaciones en un solo objeto JSON.

    nota

    Las clasificaciones de configuración disponibles varían en función de la versión específica de EMR sin servidor. Por ejemplo, las clasificaciones para el Log4j personalizado spark-driver-log4j2 y spark-executor-log4j2 solo están disponibles en las versiones 6.8.0 y posteriores.

Si pasa la misma configuración en una anulación de aplicación y en los parámetros de Hive, los parámetros de Hive tendrán prioridad. La siguiente lista clasifica las configuraciones de mayor a menor prioridad.

  • Configuración que se proporciona como parte de los parámetros de Hive con --hiveconf property=value.

  • Configuración que se proporciona como parte de la aplicación que se anula al iniciar un trabajo.

  • Configuración que se proporciona como parte de la runtimeConfiguration al crear una aplicación.

  • Configuraciones optimizadas que Amazon EMR asigna a la versión.

  • Configuraciones de código abierto predeterminadas para la aplicación.

Para obtener más información sobre cómo declarar las configuraciones a nivel de aplicación y anular las configuraciones durante la ejecución de un trabajo, consulte Configuración predeterminada de aplicación para EMR sin servidor.

Propiedades de los trabajos de Hive

En la siguiente tabla se enumeran las propiedades obligatorias que debe configurar al enviar un trabajo de Hive.

Opción Descripción
hive.exec.scratchdir La ubicación de Amazon S3 en la que EMR sin servidor crea archivos temporales durante la ejecución del trabajo de Hive.
hive.metastore.warehouse.dir La ubicación de Amazon S3 de las bases de datos para tablas administradas en Hive.

La siguiente tabla enumera las propiedades opcionales de Hive y sus valores predeterminados que puede anular al enviar un trabajo de Hive.

Opción Descripción Valor predeterminado
fs.s3.customAWSCredentialsProvider El proveedor de AWS credenciales que quieres usar. com.amazonaws.auth.default AWSCredentials ProviderChain
fs.s3a.aws.credentials.provider El proveedor de AWS credenciales que desea utilizar con un sistema de archivos S3A. com.amazonaws.auth.default AWSCredentials ProviderChain
hive.auto.convert.join Opción que activa la conversión automática de las uniones comunes en mapjoins, en función del tamaño del archivo de entrada. TRUE
hive.auto.convert.join.noconditionaltask Opción que activa la optimización cuando Hive convierte una unión común en un mapjoin en función del tamaño del archivo de entrada. TRUE
hive.auto.convert.join.noconditionaltask.size Una unión se convierte directamente en un mapjoin con un tamaño inferior a este tamaño. El valor óptimo se calcula en función de la memoria de tareas de Tez
hive.cbo.enable Opción que activa las optimizaciones basadas en los costes con el marco Calcite. TRUE
hive.cli.tez.session.async Opción para iniciar una sesión de Tez en segundo plano mientras se compila la consulta de Hive. Si se establece en false, Tez AM se inicia después de compilar la consulta de Hive. TRUE
hive.compute.query.using.stats Opción que activa a Hive para responder a determinadas consultas con estadísticas almacenadas en el metaalmacén. Para obtener estadísticas básicas, establezca hive.stats.autogather en TRUE. Para obtener una colección de consultas más avanzada, ejecute analyze table queries. TRUE
hive.default.fileformat El formato de archivo predeterminado para las instrucciones CREATE TABLE. Puede anular esto de forma explícita si especifica STORED AS [FORMAT] en su comando CREATE TABLE. TEXTFILE
hive.driver.cores El número de núcleos que se necesitarán para el proceso del controlador de Hive. 2
hive.driver.disk El tamaño del disco para el controlador de Hive. 20 G
hive.driver.disk.type El tipo de disco para el controlador de Hive. Estándar
hive.tez.disk.type El tamaño del disco para los trabajadores Tez. Estándar
hive.driver.memory La cantidad de memoria que utilizar por proceso de controlador de Hive. El maestro de aplicación de Tez y la CLI de Hive CLI comparten esta memoria a partes iguales con un 20 % de espacio libre. 6 G
hive.emr-serverless.launch.env.[KEY] Opción para establecer la variable de entorno KEY en todos los procesos específicos de Hive, como el controlador de Hive, Tez AM y la tarea de Tez.
hive.exec.dynamic.partition Opciones que activan las particiones dinámicas en DML/DDL. TRUE
hive.exec.dynamic.partition.mode Opción que especifica si desea utilizar el modo estricto o el modo no estricto. En modo estricto, debe especificar al menos una partición estática en caso de que sobrescriba todas las particiones de forma accidental. En el modo no estricto, todas las particiones pueden ser dinámicas. strict
hive.exec.max.dynamic.partitions El número máximo de particiones dinámicas que Hive crea en total. 1 000
hive.exec.max.dynamic.partitions.pernode Número máximo de particiones dinámicas que Hive crea en cada nodo mapeador y reductor. 100
hive.exec.orc.split.strategy Se espera que sea uno de los siguientes valores: BI, ETL o HYBRID. No se trata de una configuración a nivel de usuario. BI especifica que desea dedicar menos tiempo a la generación dividida en lugar de a la ejecución de consultas. ETL especifica que desea dedicar más tiempo a la generación dividida. HYBRID especifica una selección de las estrategias anteriores en función de la heurística. HYBRID
hive.exec.reducers.bytes.per.reducer El tamaño por reductor. El valor predeterminado es 256 MB. Si el tamaño de entrada es de 1 G, el trabajo utiliza 4 reductores. 256000000
hive.exec.reducers.max El número máximo de reductores. 256
hive.exec.stagingdir El nombre del directorio que almacena los archivos temporales que Hive crea dentro de las ubicaciones de las tablas y en la ubicación del directorio inicial especificada en la propiedad hive.exec.scratchdir. .hive-staging
hive.fetch.task.conversion Se espera que sea uno de los siguientes valores: NONE, MINIMAL o MORE. Hive puede convertir consultas seleccionadas en una sola tarea FETCH. Esto minimiza la latencia. MORE
hive.groupby.position.alias Opción que hace que Hive utilice un alias de posición de columna en las instrucciones GROUP BY. FALSE
hive.input.format El formato de entrada predeterminado. Establézcalo en HiveInputFormat si surgen problemas con CombineHiveInputFormat. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
hive.log.explain.output Opción que activa las explicaciones de los resultados ampliados para cualquier consulta del registro de Hive. FALSE
hive.log.level El nivel de registro de Hive. INFO
hive.mapred.reduce.tasks.speculative.execution Opción que activa el lanzamiento especulativo de los reductores. Solo se admite con Amazon EMR 6.10.x y versiones anteriores. TRUE
hive.max-task-containers El número máximo de contenedores simultáneos. La memoria del mapeador configurada se multiplica por este valor para determinar la memoria disponible que divide el uso de computación y de prioridad de tareas. 1 000
hive.merge.mapfiles Opción que hace que los archivos pequeños se fusionen al final de un trabajo de solo mapas. TRUE
hive.merge.size.per.task El tamaño de los archivos fusionados al final del trabajo. 256000000
hive.merge.tezfiles Opción que activa una fusión de archivos pequeños al final de un Tez DAG. FALSE
hive.metastore.client.factory.class El nombre de la clase de fábrica que produce los objetos que implementan la interfaz IMetaStoreClient. com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
hive.metastore.glue.catalogid Si el catálogo de datos de AWS Glue actúa como un metaalmacén pero se ejecuta en un Cuenta de AWS lugar diferente al de los trabajos, el ID del Cuenta de AWS lugar en el que se ejecutan los trabajos. NULL
hive.metastore.uris El URI de Thrift que el cliente del metaalmacén utiliza para conectarse al metaalmacén remoto. NULL
hive.optimize.ppd Opción que activa la pulsación de predicados. TRUE
hive.optimize.ppd.storage Opción que activa la pulsación de predicados en los controladores de almacenamiento. TRUE
hive.orderby.position.alias Opción que hace que Hive utilice un alias de posición de columna en las instrucciones ORDER BY. TRUE
hive.prewarm.enabled Opción que activa el precalentamiento del contenedor para Tez. FALSE
hive.prewarm.numcontainers El número de contenedores que se deben precalentar para el té. 10
hive.stats.autogather Opción que hace que Hive recopile estadísticas básicas automáticamente durante el comando INSERT OVERWRITE. TRUE
hive.stats.fetch.column.stats Opción que desactiva la búsqueda de estadísticas de columnas desde el metaalmacén. La búsqueda de estadísticas de columnas puede resultar costosa cuando el número de columnas es elevado. FALSE
hive.stats.gather.num.threads El número de subprocesos que utilizan los comandos Analyze partialscan y noscan para las tablas particionadas. Esto solo se aplica a los formatos de archivo que implementan StatsProvidingRecordReader (como ORC). 10
hive.strict.checks.cartesian.product Opciones que activan las comprobaciones de unión cartesianas estrictas. Estas comprobaciones no permiten un producto cartesiano (una unión cruzada). FALSE
hive.strict.checks.type.safety Opción que activa las comprobaciones de seguridad de tipo estricto y desactiva la comparación de bigint con tanto string como double. TRUE
hive.support.quoted.identifiers Espera un valor de NONE o COLUMN. NONE implica que solo los caracteres alfanuméricos y de subrayado son válidos en los identificadores. COLUMN implica que los nombres de las columnas pueden contener cualquier carácter. COLUMN
hive.tez.auto.reducer.parallelism Opción que activa la característica de paralelismo del autorreductor Tez. Hive sigue calculando los tamaños de los datos y establece cálculos de paralelismo. Tez toma muestras de los tamaños de salida de los vértices de la fuente y ajusta los cálculos en tiempo de ejecución según sea necesario. TRUE
hive.tez.container.size La cantidad de memoria que se utilizará por proceso de tarea de Tez. 6144
hive.tez.cpu.vcores La cantidad de núcleos que se utilizarán para cada tarea de Tez. 2
hive.tez.disk.size El tamaño del disco de cada contenedor de tareas. 20 G
hive.tez.input.format El formato de entrada para la generación de divisiones en el Tez AM. org.apache.hadoop.hive.ql.io.HiveInputFormat
hive.tez.min.partition.factor Límite inferior de reductores que Tez especifica al activar el paralelismo del autorreductor. 0,25
hive.vectorized.execution.enabled Opción que activa el modo vectorizado de ejecución de consultas. TRUE
hive.vectorized.execution.reduce.enabled Opción que activa el modo vectorizado en el lado de reducción de ejecución de una consulta. TRUE
javax.jdo.option.ConnectionDriverName El nombre de clase de controlador para un metaalmacén de JDBC. org.apache.derby.jdbc.EmbeddedDriver
javax.jdo.option.ConnectionPassword La contraseña asociada a una base de datos de metaalmacén. NULL
javax.jdo.option.ConnectionURL La cadena para una conexión de JDBC para un metaalmacén de JDBC. jdbc:derby:;databaseName=metastore_db;create=true
javax.jdo.option.ConnectionUserName El nombre de usuario asociado a una base de datos de metaalmacén. NULL
mapreduce.input.fileinputformat.split.maxsize El tamaño máximo de una división durante la computación de división cuando el formato de entrada es org.apache.hadoop.hive.ql.io.CombineHiveInputFormat. Un valor de 0 indica que no hay ningún límite. 0
tez.am.dag.cleanup.on.completion Opción que activa la limpieza de los datos aleatorios cuando finaliza el DAG. TRUE
tez.am.emr-serverless.launch.env.[KEY] Opción para establecer la variable de entorno KEY en el proceso de Tez AM. Para Tez AM, este valor anula el valor hive.emr-serverless.launch.env.[KEY].
tez.am.log.level El nivel de registro raíz que EMR sin servidor pasa al maestro de aplicaciones de Tez. INFO
tez.am.sleep.time.before.exit.millis EMR sin servidor debería enviar los eventos ATS después de este período de tiempo tras la solicitud de cierre de AM. 0
tez.am.speculation.enabled Opción que provoca el lanzamiento especulativo de tareas más lentas. Esto puede ayudar a reducir la latencia de los trabajos cuando algunas tareas se ejecutan más lentamente debido a máquinas defectuosas o lentas. Solo se admite con Amazon EMR 6.10.x y versiones anteriores. FALSE
tez.am.task.max.failed.attempts El número máximo de intentos que se pueden fallar para una tarea en particular antes de que la tarea de error. En este número no se incluyen intentos finalizados manualmente. 3
tez.am.vertex.cleanup.height Distancia a la que, si todos los vértices dependientes están completos, Tez AM eliminará los datos aleatorios de vértices. Esta característica se desactiva cuando el valor es 0. Las versiones 6.8.0 y posteriores de Amazon EMR admiten esta característica. 0
tez.client.asynchronous-stop Opción que hace que EMR sin servidor envíe los eventos ATS antes de finalizar el controlador Hive. FALSE
tez.grouping.max-size El límite de tamaño superior (en bytes) de una división agrupada. Este límite evita que se produzcan divisiones excesivamente grandes. 1073741824
tez.grouping.min-size El límite de tamaño inferior (en bytes) de una división agrupada. Este límite evita que se produzcan demasiadas divisiones pequeñas. 16777216
tez.runtime.io.sort.mb El tamaño del búfer flexible cuando Tez ordena la salida. El valor óptimo se calcula en función de la memoria de tareas de Tez
tez.runtime.unordered.output.buffer.size-mb El tamaño del búfer que se utilizará si Tez no escribe directamente en el disco. El valor óptimo se calcula en función de la memoria de tareas de Tez
tez.shuffle-vertex-manager.max-src-fraction La fracción de tareas de la fuente que deben completarse antes de que EMR sin servidor programe todas las tareas para el vértice actual (en caso de una conexión ScatterGather). La cantidad de tareas listas para su programación en el vértice actual se escala linealmente entre min-fraction y max-fraction. Este valor predeterminado es el valor predeterminado o tez.shuffle-vertex-manager.min-src-fraction, el que sea mayor. 0.75
tez.shuffle-vertex-manager.min-src-fraction La fracción de tareas de la fuente que deben completarse antes de que EMR sin servidor programe las tareas para el vértice actual (en caso de una conexión ScatterGather). 0,25
tez.task.emr-serverless.launch.env.[KEY] Opción para establecer la variable de entorno KEY en el proceso de tareas de Tez. Para las tareas de Tez, este valor anula el valor hive.emr-serverless.launch.env.[KEY].
tez.task.log.level El nivel de registro raíz que EMR sin servidor pasa al las tareas de Tez. INFO
tez.yarn.ats.event.flush.timeout.millis El tiempo máximo que AM debe esperar para que se vacíen los eventos antes de apagarse. 300000

Ejemplos de trabajos de Hive

El siguiente ejemplo de código muestra cómo ejecutar una consulta de Hive con la API StartJobRun.

aws emr-serverless start-job-run \ --application-id application-id \ --execution-role-arn job-role-arn \ --job-driver '{ "hive": { "query": "s3://amzn-s3-demo-bucket/emr-serverless-hive/query/hive-query.ql", "parameters": "--hiveconf hive.log.explain.output=false" } }' \ --configuration-overrides '{ "applicationConfiguration": [{ "classification": "hive-site", "properties": { "hive.exec.scratchdir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/scratch", "hive.metastore.warehouse.dir": "s3://amzn-s3-demo-bucket/emr-serverless-hive/hive/warehouse", "hive.driver.cores": "2", "hive.driver.memory": "4g", "hive.tez.container.size": "4096", "hive.tez.cpu.vcores": "1" } }] }'

Puede encontrar ejemplos adicionales de cómo ejecutar trabajos de Hive en el repositorio de muestras sin servidor GitHub de EMR.