Utilizzo delle configurazioni Hive quando si EMR eseguono lavori Serverless - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo delle configurazioni Hive quando si EMR eseguono lavori Serverless

È possibile eseguire lavori Hive su un'applicazione con il type parametro impostato su. HIVE I lavori devono essere compatibili con la versione di Hive compatibile con la versione di EMR rilascio di Amazon. Ad esempio, quando esegui lavori su un'applicazione con Amazon EMR release 6.6.0, il tuo lavoro deve essere compatibile con Apache Hive 3.1.2. Per informazioni sulle versioni dell'applicazione per ogni versione, consulta. Versioni di rilascio di Amazon EMR Serverless

Parametri del lavoro Hive

Quando si utilizza il StartJobRunAPIper eseguire un processo Hive, è necessario specificare i seguenti parametri.

Ruolo Hive Job Runtime

executionRoleArnUtilizzatelo ARN per specificare il IAM ruolo utilizzato dall'applicazione per eseguire i job Hive. Questo ruolo deve contenere le seguenti autorizzazioni:

  • Leggi i dati dai bucket S3 o da altre fonti di dati in cui risiedono i tuoi dati

  • Leggi dai bucket o dai prefissi S3 in cui risiedono il file di query Hive e il file di query init

  • Leggi e scrivi nei bucket S3 in cui risiedono la directory Hive Scratch e la directory di magazzino Hive Metastore

  • Scrivi nei bucket S3 in cui intendi scrivere l'output finale

  • Scrivi i log in un bucket o prefisso S3 che specifica S3MonitoringConfiguration

  • Accesso alle KMS chiavi se utilizzi KMS le chiavi per crittografare i dati nel tuo bucket S3

  • Accesso al AWS Glue Data Catalog

Se il tuo lavoro Hive legge o scrive dati da o verso altre fonti di dati, specifica le autorizzazioni appropriate per questo ruolo. IAM Se non fornisci queste autorizzazioni al IAM ruolo, il tuo lavoro potrebbe fallire. Per ulteriori informazioni, consulta Ruoli Job Runtime per Amazon EMR Serverless.

Parametro Hive Job Driver

jobDriverUtilizzato per fornire input al lavoro. Il parametro job driver accetta solo un valore per il tipo di processo che si desidera eseguire. Quando specificate hive come tipo di lavoro, EMR Serverless passa una query Hive al jobDriver parametro. I job Hive hanno i seguenti parametri:

  • query— Questo è il riferimento in Amazon S3 al file di query Hive che desideri eseguire.

  • parameters— Queste sono le proprietà di configurazione aggiuntive di Hive che desideri sovrascrivere. Per sovrascrivere le proprietà, passale a questo parametro come. --hiveconf property=value Per sovrascrivere le variabili, passale a questo parametro come. --hivevar key=value

  • initQueryFile— Questo è il file di query init Hive. Hive esegue questo file prima della query e può usarlo per inizializzare le tabelle.

Parametro di sovrascrittura della configurazione Hive

Utilizzato configurationOverridesper sovrascrivere le proprietà di configurazione a livello di monitoraggio e a livello di applicazione. Questo parametro accetta un JSON oggetto con i due campi seguenti:

  • monitoringConfiguration— Utilizza questo campo per specificare Amazon S3 URL (s3MonitoringConfiguration) in cui desideri che il job EMR Serverless memorizzi i log del tuo processo Hive. Assicurati di creare questo bucket con lo stesso Account AWS che ospita l'applicazione e nello stesso luogo in Regione AWS cui è in esecuzione il processo.

  • applicationConfiguration— È possibile fornire un oggetto di configurazione in questo campo per sovrascrivere le configurazioni predefinite per le applicazioni. È possibile utilizzare una sintassi abbreviata per fornire la configurazione oppure fare riferimento all'oggetto di configurazione in un file. JSON Gli oggetti di configurazione sono composti da una classificazione, proprietà e configurazioni nidificate opzionali. Le proprietà sono costituite dalle impostazioni che desideri ignorare in un dato file. È possibile specificare più classificazioni per più applicazioni in un unico oggetto. JSON

    Nota

    Le classificazioni di configurazione disponibili variano in base alla specifica versione EMR Serverless. Ad esempio, le classificazioni per Log4j personalizzate spark-executor-log4j2 sono disponibili solo con le versioni 6.8.0 spark-driver-log4j2 e successive.

Se si passa la stessa configurazione in un'applicazione override e nei parametri Hive, i parametri Hive hanno la priorità. L'elenco seguente classifica le configurazioni dalla priorità più alta alla priorità più bassa.

  • Configurazione fornita come parte dei parametri Hive con. --hiveconf property=value

  • La configurazione fornita come parte dell'applicazione ha la precedenza quando si avvia un lavoro.

  • La configurazione fornita come parte della configurazione runtimeConfiguration quando si crea un'applicazione.

  • Configurazioni ottimizzate che Amazon EMR assegna per il rilascio.

  • Configurazioni open source predefinite per l'applicazione.

Per ulteriori informazioni sulla dichiarazione delle configurazioni a livello di applicazione e sulla sovrascrittura delle configurazioni durante l'esecuzione del processo, vedere. Configurazione predefinita dell'applicazione per Serverless EMR

Proprietà del lavoro di Hive

La tabella seguente elenca le proprietà obbligatorie che è necessario configurare quando si invia un lavoro Hive.

Impostazione Descrizione
hive.exec.scratchdir La posizione Amazon S3 in cui EMR Serverless crea file temporanei durante l'esecuzione del job Hive.
hive.metastore.warehouse.dir La posizione Amazon S3 dei database per le tabelle gestite in Hive.

La tabella seguente elenca le proprietà opzionali di Hive e i relativi valori predefiniti che puoi sostituire quando invii un lavoro Hive.

Impostazione Descrizione Valore predefinito
fs.s3.customAWSCredentialsProvider Il provider di AWS credenziali che desideri utilizzare. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
fs.s3a.aws.credentials.provider Il provider di AWS credenziali che desideri utilizzare con un file system S3A. com.amazonaws.auth.d efaultAWSCredentials ProviderChain
hive.auto.convert.join Opzione che attiva la conversione automatica dei join comuni in mapjoin, in base alla dimensione del file di input. TRUE
hive.auto.convert.join.noconditionaltask Opzione che attiva l'ottimizzazione quando Hive converte un common join in un mapjoin in base alla dimensione del file di input. TRUE
hive.auto.convert.join.noconditionaltask.size Un join si converte direttamente in un mapjoin di dimensioni inferiori a questa dimensione. Il valore ottimale viene calcolato in base alla memoria delle attività Tez
hive.cbo.enable Opzione che attiva ottimizzazioni basate sui costi con il framework Calcite. TRUE
hive.cli.tez.session.async Opzione per avviare una sessione Tez in background durante la compilazione della query Hive. Se impostato sufalse, Tez AM si avvia dopo la compilazione della query Hive. TRUE
hive.compute.query.using.stats Opzione che attiva Hive per rispondere a determinate domande con statistiche memorizzate nel metastore. Per le statistiche di base, imposta su. hive.stats.autogather TRUE Per una raccolta di interrogazioni più avanzata, analyze table queries esegui. TRUE
hive.default.fileformat Il formato di file predefinito per le CREATE TABLE istruzioni. Puoi sovrascriverlo in modo esplicito se lo specifichi STORED AS [FORMAT] nel tuo CREATE TABLE comando. TEXTFILE
hive.driver.cores Il numero di core da utilizzare per il processo del driver Hive. 2
hive.driver.disk La dimensione del disco per il driver Hive. 20G
hive.driver.disk.type Il tipo di disco per il driver Hive. Standard
hive.tez.disk.type La dimensione del disco per i tez worker. Standard
hive.driver.memory La quantità di memoria da utilizzare per ogni processo del driver Hive. Hive CLI e Tez Application Master condividono questa memoria in parti uguali con il 20% di margine di crescita. 6 G
hive.emr-serverless.launch.env.[KEY] Opzione per impostare la variabile di KEY ambiente in tutti i processi specifici di Hive, come il driver Hive, Tez AM e l'attività Tez.
hive.exec.dynamic.partition Opzioni che attivano le partizioni dinamiche in/. DML DDL TRUE
hive.exec.dynamic.partition.mode Opzione che specifica se si desidera utilizzare la modalità rigorosa o la modalità non rigorosa. In modalità rigorosa, è necessario specificare almeno una partizione statica in caso di sovrascrittura accidentale di tutte le partizioni. In modalità non rigorosa, tutte le partizioni possono essere dinamiche. strict
hive.exec.max.dynamic.partitions Il numero massimo di partizioni dinamiche create da Hive in totale. 1000
hive.exec.max.dynamic.partitions.pernode Numero massimo di partizioni dinamiche che Hive crea in ogni nodo mapper e reducer. 100
hive.exec.orc.split.strategy Prevede uno dei seguenti valori:, o. BI ETL HYBRID Questa non è una configurazione a livello utente. BIspecifica che si desidera dedicare meno tempo alla generazione frazionata rispetto all'esecuzione delle query. ETLspecifica che si desidera dedicare più tempo alla generazione frazionata. HYBRIDspecifica una scelta delle strategie di cui sopra in base all'euristica. HYBRID
hive.exec.reducers.bytes.per.reducer La dimensione di ogni riduttore. L'impostazione predefinita è 256 MB. Se la dimensione di input è 1G, il job utilizza 4 riduttori. 256000000
hive.exec.reducers.max Il numero massimo di riduttori. 256
hive.exec.stagingdir Il nome della directory che memorizza i file temporanei creati da Hive all'interno delle posizioni delle tabelle e nella posizione della directory scratch specificata nella proprietà. hive.exec.scratchdir .hive-staging
hive.fetch.task.conversion Prevede uno dei seguenti valori: NONEMINIMAL, o. MORE Hive è in grado di convertire le interrogazioni di selezione in una singola attività. FETCH Ciò riduce al minimo la latenza. MORE
hive.groupby.position.alias Opzione che fa sì che Hive utilizzi un alias di posizione della colonna nelle istruzioni. GROUP BY FALSE
hive.input.format Il formato di input predefinito. Imposta su HiveInputFormat se riscontri problemi conCombineHiveInputFormat. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
hive.log.explain.output Opzione che attiva le spiegazioni dell'output esteso per qualsiasi query nel registro di Hive. FALSE
hive.log.level Il livello di registrazione di Hive. INFO
hive.mapred.reduce.tasks.speculative.execution Opzione che attiva il lancio speculativo dei riduttori. Supportato solo con Amazon EMR 6.10.x e versioni precedenti. TRUE
hive.max-task-containers Il numero massimo di contenitori simultanei. La memoria del mapper configurata viene moltiplicata per questo valore per determinare la memoria disponibile utilizzata per il calcolo diviso e la priorità delle attività. 1000
hive.merge.mapfiles Opzione che causa l'unione di file di piccole dimensioni alla fine di un lavoro basato sulla sola mappa. TRUE
hive.merge.size.per.task La dimensione dei file uniti alla fine del lavoro. 256000000
hive.merge.tezfiles Opzione che attiva l'unione di file di piccole dimensioni alla fine di un Tez. DAG FALSE
hive.metastore.client.factory.class Il nome della classe factory che produce oggetti che implementano l'IMetaStoreClientinterfaccia. com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory
hive.metastore.glue.catalogid Se il AWS Glue Data Catalog funge da metastore ma viene eseguito in un ambiente Account AWS diverso dai lavori, l'ID del Account AWS luogo in cui i lavori sono in esecuzione. NULL
hive.metastore.uris La parsimonia URI che il client metastore utilizza per connettersi al metastore remoto. NULL
hive.optimize.ppd Opzione che attiva il predicate pushdown. TRUE
hive.optimize.ppd.storage Opzione che attiva il pushdown dei predicati verso i gestori di archiviazione. TRUE
hive.orderby.position.alias Opzione che fa sì che Hive utilizzi un alias di posizione della colonna nelle istruzioni. ORDER BY TRUE
hive.prewarm.enabled Opzione che attiva il preriscaldamento del contenitore per Tez. FALSE
hive.prewarm.numcontainers Il numero di contenitori da preriscaldare per Tez. 10
hive.stats.autogather Opzione che fa sì che Hive raccolga automaticamente le statistiche di base durante il comando. INSERT OVERWRITE TRUE
hive.stats.fetch.column.stats Opzione che disattiva il recupero delle statistiche delle colonne dal metastore. Il recupero delle statistiche sulle colonne può essere costoso quando il numero di colonne è elevato. FALSE
hive.stats.gather.num.threads Il numero di thread utilizzati dai comandi partialscan and noscan analysis per le tabelle partizionate. Questo vale solo per i formati di file che implementano StatsProvidingRecordReader (come). ORC 10
hive.strict.checks.cartesian.product Opzioni che attivano controlli di join cartesiani rigorosi. Questi controlli non consentono l'utilizzo di un prodotto cartesiano (un cross join). FALSE
hive.strict.checks.type.safety Opzione che attiva rigorosi controlli di sicurezza tipografici e disattiva il confronto tra entrambi string e. bigint double TRUE
hive.support.quoted.identifiers Si aspetta un valore di NONE oCOLUMN. NONEimplica che solo i caratteri alfanumerici e i caratteri di sottolineatura siano validi negli identificatori. COLUMNimplica che i nomi delle colonne possono contenere qualsiasi carattere. COLUMN
hive.tez.auto.reducer.parallelism Opzione che attiva la funzione di parallelismo del riduttore automatico Tez. Hive stima ancora le dimensioni dei dati e imposta le stime di parallelismo. Tez campiona le dimensioni di output dei vertici della sorgente e regola le stime in fase di esecuzione, se necessario. TRUE
hive.tez.container.size La quantità di memoria da utilizzare per il processo di operazione Tez. 6144
hive.tez.cpu.vcores Il numero di core da utilizzare per ogni attività Tez. 2
hive.tez.disk.size La dimensione del disco per ogni contenitore di attività. 20G
hive.tez.input.format Il formato di input per la generazione di split in Tez AM. org.apache.hadoop.hive.ql.io.HiveInputFormat
hive.tez.min.partition.factor Limite inferiore di riduttori specificato da Tez quando si attiva il parallelismo del riduttore automatico. 0.25
hive.vectorized.execution.enabled Opzione che attiva la modalità vettoriale di esecuzione delle query. TRUE
hive.vectorized.execution.reduce.enabled Opzione che attiva la modalità vettorializzata del lato ridotto dell'esecuzione di una query. TRUE
javax.jdo.option.ConnectionDriverName Il nome della classe di driver per un metastore. JDBC org.apache.derby.jdbc.EmbeddedDriver
javax.jdo.option.ConnectionPassword La password associata a un database metastore. NULL
javax.jdo.option.ConnectionURL La stringa di JDBC connessione per un JDBC metastore. jdbc:derby:;databaseName=metastore_db;create=true
javax.jdo.option.ConnectionUserName Il nome utente associato a un database metastore. NULL
mapreduce.input.fileinputformat.split.maxsize La dimensione massima di una divisione durante il calcolo delle suddivisioni quando il formato di input è. org.apache.hadoop.hive.ql.io.CombineHiveInputFormat Un valore pari a 0 indica che non ci sono limiti. 0
tez.am.dag.cleanup.on.completion Opzione che attiva la pulizia casuale dei dati al termine. DAG TRUE
tez.am.emr-serverless.launch.env.[KEY] Opzione per impostare la variabile di KEY ambiente nel processo Tez AM. Per Tez AM, questo valore sostituisce il valore. hive.emr-serverless.launch.env.[KEY]
tez.am.log.level Il livello di registrazione root che EMR Serverless passa all'app master Tez. INFO
tez.am.sleep.time.before.exit.millis EMRServerless dovrebbe inviare ATS gli eventi dopo questo periodo di tempo dopo la richiesta di spegnimento di AM. 0
tez.am.speculation.enabled Opzione che causa l'avvio speculativo di attività più lente. Ciò può aiutare a ridurre la latenza del lavoro quando alcune attività sono più lente a causa di macchine danneggiate o lente. Supportato solo con Amazon EMR 6.10.x e versioni precedenti. FALSE
tez.am.task.max.failed.attempts Il numero massimo di tentativi che possono fallire per una determinata attività prima che l'operazione abbia esito negativo. Questo numero non include i tentativi terminati manualmente. 3
tez.am.vertex.cleanup.height Una distanza alla quale, se tutti i vertici dipendenti sono completi, Tez AM eliminerà i dati relativi allo shuffle dei vertici. Questa funzione è disattivata quando il valore è 0. EMRLe versioni di Amazon 6.8.0 e successive supportano questa funzionalità. 0
tez.client.asynchronous-stop Opzione che fa sì che EMR Serverless invii gli ATS eventi prima che termini il driver Hive. FALSE
tez.grouping.max-size Il limite massimo di dimensione (in byte) di una divisione raggruppata. Questo limite impedisce suddivisioni eccessivamente grandi. 1073741824
tez.grouping.min-size Il limite di dimensione inferiore (in byte) di una divisione raggruppata. Questo limite impedisce troppe suddivisioni di piccole dimensioni. 16777216
tez.runtime.io.sort.mb La dimensione del soft buffer quando Tez ordina l'output viene ordinata. Il valore ottimale viene calcolato in base alla memoria delle attività di Tez
tez.runtime.unordered.output.buffer.size-mb La dimensione del buffer da usare se Tez non scrive direttamente su disco. Il valore ottimale viene calcolato in base alla memoria delle attività di Tez
tez.shuffle-vertex-manager.max-src-fraction La frazione di attività di origine che deve essere completata prima che EMR Serverless pianifichi tutte le attività per il vertice corrente (in caso di ScatterGather connessione). Il numero di attività pronte per la pianificazione sul vertice corrente varia linearmente tra e. min-fraction max-fraction Il valore predefinito è il valore predefinito o, a seconda del valore maggiore. tez.shuffle-vertex-manager.min-src-fraction 0.75
tez.shuffle-vertex-manager.min-src-fraction La frazione di attività di origine che deve essere completata prima che EMR Serverless pianifichi le attività per il vertice corrente (in caso di connessione). ScatterGather 0.25
tez.task.emr-serverless.launch.env.[KEY] Opzione per impostare la variabile di KEY ambiente nel processo di attività Tez. Per le attività Tez, questo valore ha la precedenza sul valore. hive.emr-serverless.launch.env.[KEY]
tez.task.log.level Il livello di registrazione principale che EMR Serverless passa alle attività Tez. INFO
tez.yarn.ats.event.flush.timeout.millis Il periodo massimo di attesa che AM deve attendere prima che gli eventi vengano eliminati prima dello spegnimento. 300000

Esempi di lavoro in Hive

Il seguente esempio di codice mostra come eseguire una query Hive con. StartJobRun API

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" } }] }'

Puoi trovare altri esempi di come eseguire i job Hive nel repository EMRServerless Samples. GitHub