2014-08-27 15 views
5

Stavo cercando di vedere cosa rende Apache Tez con Hive molto più veloce di quanto la mappa riduca con l'alveare. Non riesco a capire il concetto di DAG.
Chiunque ha un buon riferimento per comprendere l'architettura di Apache TEZ.Apache Tez architecture Spiegazione

risposta

3

Non sto ancora usando Tez ma ne ho letto. Credo che le due principali ragioni che renderanno Hive per correre più veloce nel corso Tez sono:

  1. Tez condividerà i dati tra Map ridurre posti di lavoro in memoria quando possibile, evitando il sovraccarico di scrittura/lettura da/per HDFS
  2. Con Tez puoi eseguire più map/ridurre i DAG definiti su Hive, in una sessione di Tez senza dover avviare ogni volta un nuovo application master.

È possibile trovare un elenco di link che vi aiuterà a capire Tez meglio qui: http://hortonworks.com/hadoop/tez/

8

La presentazione da Hadoop Summit (slide 35) ha discusso come l'approccio DAG è ottimale vs MapReduce paradigma:

http://www.slideshare.net/Hadoop_Summit/murhty-saha-june26255pmroom212

In sostanza si permetterà strumenti di livello superiore (come Hive e maiale) per definire i loro passi complessivi di lavorazione (workflow alias, alias Directed aciclico Graph) prima che il lavoro comincia. Un DAG è un grafico di tutti i passaggi necessari per completare il lavoro (query hive, job Pig, ecc.). Poiché i passaggi dell'intero lavoro possono essere calcolati prima del tempo di esecuzione, il sistema può trarre vantaggio dalla cache dei risultati intermedi del lavoro "in memoria". Mentre in MapReduce tutti i dati intermedi tra le fasi di MapReduce richiedevano la scrittura su HDFS (disco) aggiungendo la latenza.

YARN consente inoltre il riutilizzo dei contenitori per le attività di Tez. Per esempio. ogni server viene tagliato in più "contenitori" anziché in "mappa" o "riduzione". Per ogni punto dato nell'esecuzione del lavoro, ciò consente a Tez di utilizzare l'intero cluster per le fasi della mappa o le fasi di riduzione secondo necessità. Mentre in Hadoop v1 precedente a YARN, il numero di slot di mappa (e di riduzione degli slot) era fisso/programmato a livello di piattaforma. Il migliore utilizzo di tutte le risorse cluster disponibili generalmente porta a tempi più rapidi

3

Apache Tez rappresenta un'alternativa al tradizionale MapReduce che consente ai lavori di soddisfare richieste di tempi di risposta rapidi e un throughput estremo a scala di petabyte.

Le applicazioni di elaborazione dati di livello più elevato come Hive e Pig richiedono un framework di esecuzione in grado di esprimere la loro logica di query complessa in modo efficiente e quindi eseguirlo con prestazioni elevate gestite da Tez. Tez raggiunge questo obiettivo modellando l'elaborazione dei dati non come un singolo lavoro, ma piuttosto come un grafico del flusso di dati.

... con i vertici nel grafico che rappresentano la logica dell'applicazione ei bordi che rappresentano il movimento di dati. Un'API ricca di definizione del flusso di dati consente agli utenti di esprimere una logica di query complessa in un modo intuitivo ed è un adattamento naturale per i piani di query prodotti da applicazioni dichiarative di livello superiore come Hive e Pig ... [La] pipeline del flusso di dati può essere espressa come un singolo lavoro di Tez che eseguirà l'intero calcolo. L'espansione di questo grafico logico in un grafico fisico delle attività e l'esecuzione di esso è curata da Tez.

Data Processing API in Apache Tez post del blog descrive una semplice API Java utilizzata per esprimere un DAG del trattamento dei dati. L'API ha tre componenti

DAG. questo definisce il lavoro complessivo. L'utente crea un oggetto DAG per ogni processo di elaborazione dati.

Vertex. questo definisce la logica dell'utente e l'ambiente risorse & necessario per eseguire la logica dell'utente. L'utente crea un oggetto Vertex per ogni fase del lavoro e lo aggiunge al DAG.

bordo. questo definisce la connessione tra i vertici del produttore e del consumatore. L'utente crea un oggetto Edge e collega i vertici del produttore e del consumatore che lo utilizzano.

proprietà bordo definito da Tez consentano di istanziare attività utente, configurare gli ingressi e le uscite, programmare in modo appropriato e definire come instradare i dati tra i compiti. Tez consente inoltre di definire il parallelismo per ogni esecuzione di vertici specificando la guida per l'utente, la dimensione dei dati e le risorse.

spostamento dati: Definisce il routing dei dati tra le attività ◦One-to-One: i dati dai produttori esimo percorsi compito al compito esimo consumatore.

Trasmissione: dati da un task route del produttore a tutte le attività del consumatore.

Scatter-Gather: i task del produttore disperdono i dati in frammenti e le attività dei consumatori raccolgono i frammenti. Il frammento di ith da tutte le attività del produttore viene indirizzato al rispettivo compito del consumatore.

Scheduling. Definisce quando è pianificata un'attività di consumo ◦Equenziale: l'attività consumatore può essere pianificata dopo il completamento di un'attività di produzione. Concorrente: L'attività consumer deve essere co-programmata con un'attività produttore.

Fonte dei dati: Definisce la durata/affidabilità di un uscita compito ◦Persisted: uscita sarà disponibile dopo le uscite di attività. L'uscita potrebbe essere persa in seguito. persistenti In-Reliable: L'uscita è affidabile memorizzato e sarà sempre disponibile Ephemeral: uscita è disponibile solo quando il compito produttore è in esecuzione.

Ulteriori dettagli sull'architettura Tez sono presentati in questo Apache Tez Design Doc.

0

La differenza principale tra MR e TEZ è la scrittura di dati intermedi sul disco locale in MR. Ma, in TEZ, la funzionalità di mapper/riduttore verrà eseguita in una singola istanza su ciascun contenitore utilizzando in memoria. TEZ inoltre esegue operazioni come transazioni o azioni in operazioni spark.

0

Tez è un DAG (Directed grafo aciclico) architettura.Un tipico Mappa ridurre lavoro ha seguenti fasi:

  1. leggere i dati da File -> l'accesso di un disco

  2. Run mapper

  3. Write mappa di output -> Accesso secondo disco

  4. Esegui shuffle e ordina -> leggi output mappa, accesso terzo disco

  5. scrittura shuffle e ordinamento - -> scrittura allineati i dati per riduttori -> Accesso quarto disco

  6. Run riduttori che legge i dati ordinati -> quinta uscita del disco

  7. Write riduttori di uscita -> l'accesso al disco sesto

Tez funziona molto simile a Spark (Tez è stato creato da Hortonworks ben prima scintilla):

  1. eseguire il piano, ma non c'è bisogno di leggere i dati dal disco.

  2. Una volta pronti a eseguire alcuni calcoli (simili alle azioni in scintilla), recuperare i dati dal disco ed eseguire tutti i passaggi e produrre output.

Solo una lettura e una scrittura.

Si noti l'efficienza introdotta dal non andare sul disco più volte. I risultati intermedi vengono archiviati in memoria (non scritti nei dischi). Oltre a ciò c'è la vettorizzazione (processo batch di righe anziché una riga alla volta). Tutto ciò contribuisce all'efficienza nel tempo di interrogazione.

Riferimenti http://www.slideshare.net/Hadoop_Summit/w-235phall1pandey https://community.hortonworks.com/questions/83394/difference-between-mr-and-tez.html