V našem předchozím blogu jsme studovali Hadoop Počítadla podrobně. Nyní v tomto tutoriálu probereme RecordReader v Hadoop.
Zde pokryjeme úvod do Hadoop RecordReader, fungování RecordReaderu. V tomto kurzu MapReduce také probereme typy RecordReader v MapReduce, velikost jednoho záznamu v Hadoop MapReduce.
Co je RecordReader v MapReduce?
Čtečka záznamů převádí bajtově orientované zobrazení vstupu na záznamově orientované zobrazení pro Mapper a reduktor úkoly ke zpracování.
Abychom pochopili Hadoop RecordReader, musíme porozumět MapReduce Dataflow. Pojďme se dozvědět, jak tok dat:
MapReduce je jednoduchý model zpracování dat. Vstupy a výstupy pro funkce mapy a redukce jsou páry klíč–hodnota . Následuje obecná podoba mapy a funkcí redukce:
- Mapa: (Z1, V1) → seznam (Z2, V2)
- Snížit: (K2, seznam (V2)) → seznam (K3, V3)
Nyní před zahájením zpracování potřebuje vědět, která data zpracovat. Takže InputFormat třída k tomu pomáhá. Tato třída vybere soubor z HDFS to je vstup do funkce mapy. Je také zodpovědný za vytváření vstupních rozdělení.
Také je rozdělte do záznamů. Rozdělí data na počet rozdělení (obvykle 64/128 MB) v HDFS. Toto je známé jako InputSplit. InputSplit je logická reprezentace dat. V úloze MapReduce je počet provedení mapových úloh roven počtu InputSplits.
Zavoláním „getSplit ()“ klient vypočítá rozdělení zakázky. Poté byl odeslán do aplikačního masteru. Používá jejich umístění úložiště k plánování mapových úloh, které je zpracují v clusteru.
Po této úloze mapy předá rozdělení do createRecordReader () metoda. Z toho získá RecordReader pro rozdělení. RecordReader generuje záznam (pár klíč-hodnota). Poté přejde na funkci mapy.
Hadoop RecordReader při provádění úlohy MapReduce používá data v rámci hranic, které jsou vytvářeny inputsplit. A pak vytvoří páry klíč–hodnota pro mapovače. „Start“ je pozice bajtu v souboru.
Na začátku začne Hadoop RecordReader generovat páry klíč/hodnota. „Konec“ je místo, kde RecorReader zastaví čtení záznamů. V RecordReaderu se data načtou ze svého zdroje.
Poté jsou data převedena na páry klíč-hodnota vhodné pro čtení mapovačem. Komunikuje se vstupem, dokud není čtení souboru dokončeno.
Jak RecorReader funguje v Hadoopu?
Je to více než jen opakování záznamů. Úloha mapy používá jeden záznam ke generování páru klíč-hodnota, který předává funkci mapy. Můžeme to vidět také pomocí funkce spuštění mapovače uvedené níže:
public void run(Context context ) throws IOException, InterruptedException{ setup(context); while(context.nextKeyValue()) { map(context.setCurrentKey(),context.getCurrentValue(),context) } cleanup(context); }
Ačkoli není povinné, aby RecordReader zůstával mezi hranicemi vytvořenými inputsplit pro generování párů klíč-hodnota, obvykle zůstává. Vlastní implementace také může číst více dat mimo inputsplit.
Poté po spuštění setup() , nextKeyValue() se bude opakovat v kontextu. Tím se naplní objekty klíče a hodnoty pro mapovače. V kontextu kontextu získává framework hodnotu klíč-hodnota ze čtečky záznamů. Poté přejděte na map() způsob, jak dělat svou práci.
Proto vstup (klíč-hodnota) do mapové funkce probíhá podle logiky uvedené v mapovém kódu. Když se záznam dostane na konec záznamu, nextKeyValue() metoda vrací false.
Typy Hadoop RecordReader
InputFormat definuje instanci RecordReader v Hadoop. Ve výchozím nastavení pomocí TextInputFormat ReordReader převádí data na páry klíč–hodnota. TextInputFormat také poskytuje 2 typy čteček záznamů, které jsou následující:
1. LineRecordReader
Je to výchozí čtečka záznamů. TextInputFormat poskytuje tento RecordReader. Také považuje každý řádek vstupního souboru za novou hodnotu. Pak je přidružený klíč bajtový offset. Vždy přeskočí první řádek v rozdělení (nebo jeho část), pokud to není první rozdělení.
Na konci vždy čte jeden řádek za hranicí rozdělení (pokud jsou k dispozici data, tak to není poslední rozdělení).
2. SequenceFileRecordReader
Tento Hadoop RecorReader čte data určená záhlavím sekvenčního souboru.
Maximální velikost jednoho záznamu
Pomocí níže uvedeného parametru nastavíme maximální hodnotu.
conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);
Závěr
Na závěr, Hadoop RecorReader vytvoří vstup (klíč-hodnota) pro Mapper. Také používá TextInputFormat pro převod dat na pár klíč–hodnota.
Doufám, že se vám tento blog líbil, pokud máte nějaké dotazy týkající se Hadoop RecordReader, neváhejte se s námi podělit. Rádi je vyřešíme.