30+ Hadoop Interview Otázky a odpovědi

Photo of author

By etechblogcz

Podle statistik, které zveřejnil Forbes, až 90 % globálních firem využívá analýzu rozsáhlých dat pro tvorbu svých investičních zpráv.

S narůstající popularitou Big Data se pochopitelně zvyšuje i poptávka po odbornících na Hadoop.

Abychom vám usnadnili cestu k pozici experta na Hadoop, připravili jsme pro vás soubor otázek a odpovědí, které vám pomohou úspěšně zvládnout pracovní pohovor.

Možná vás znalost výše platů, díky kterým jsou pozice spojené s Hadoopem a Big Data tak atraktivní, ještě více namotivuje k tomu, abyste se o tuto práci ucházeli, co myslíte? 🤔

  • Server really.com uvádí, že průměrný roční plat vývojáře Big Data Hadoop v USA dosahuje 144 000 $.
  • Podle itjobswatch.co.uk je průměrný plat vývojáře Big Data Hadoop ve Velké Británii 66 750 GBP.
  • V Indii, dle zdroje Actual.com, se průměrný plat pohybuje kolem 1 600 000 ₹.

Zajímavé, že? Nyní se pojďme blíže podívat na samotný Hadoop.

Co je Hadoop?

Hadoop je široce používaný framework, napsaný v jazyce Java, který využívá programovací modely pro zpracování, ukládání a analýzu rozsáhlých datových souborů.

Jeho architektura je primárně navržena pro škálování z jednoho serveru na více strojů, poskytujíc lokální výpočetní a úložné kapacity. Důležitá je také jeho schopnost detekovat a řešit selhání na aplikační vrstvě, což z něj činí velmi spolehlivé řešení.

Přejděme nyní k nejčastějším otázkám, které se objevují u pracovních pohovorů a podívejme se na správné odpovědi.

Otázky a odpovědi pro pohovory týkající se Hadoop

Jaká je úložná jednotka v Hadoop?

Odpověď: Úložnou jednotkou v Hadoop je Hadoop Distributed File System (HDFS).

Jaký je rozdíl mezi síťovým úložištěm a distribuovaným souborovým systémem Hadoop?

Odpověď: HDFS, primární úložiště Hadoopu, je distribuovaný systém souborů určený pro ukládání obrovských souborů s využitím běžného hardwaru. Na druhou stranu, NAS (Network Attached Storage) je server pro ukládání dat na úrovni souborů, který poskytuje přístup k datům heterogenní skupině klientů.

Zatímco data v NAS jsou uložena na dedikovaném hardwaru, HDFS distribuuje datové bloky mezi všechny počítače v clusteru Hadoop.

NAS používá špičková úložná zařízení, což je poměrně nákladné, zatímco běžný hardware, který využívá HDFS, je finančně efektivnější.

NAS ukládá data odděleně od výpočtů, což ho činí nevhodným pro MapReduce. Naopak, design HDFS je přizpůsoben pro spolupráci s frameworkem MapReduce. V MapReduce se výpočty přesouvají k datům, nikoli naopak.

Vysvětlete MapReduce a Shuffling v Hadoop

Odpověď: MapReduce představuje dvě základní úlohy, které Hadoop provádí pro zajištění vysoké škálovatelnosti v rámci clusteru. Shuffling naopak představuje proces přesunu výstupu z Mappers do odpovídajících Reducerů v rámci MapReduce.

Stručná charakteristika architektury Apache Pig

Architektura Apache Pig

Odpověď: Architektura Apache Pig zahrnuje interpret jazyka Pig Latin, který zpracovává a analyzuje rozsáhlé datové sady prostřednictvím skriptů napsaných v Pig Latin.

Apache Pig také obsahuje datové sady, na kterých se provádějí operace jako spojování, načítání, filtrování, třídění a seskupování.

Jazyk Pig Latin využívá mechanismy spouštění, jako je Grant shell, UDF a vestavěné funkce pro psaní skriptů, které provádějí požadované úlohy.

Pig usnadňuje práci programátorům tím, že tyto skripty převádí na řadu úloh MapReduce.

Komponenty architektury Apache Pig zahrnují:

  • Parser – zpracovává skripty v jazyce Pig, kontroluje jejich syntaxi a typovou správnost. Výstupem parseru jsou příkazy a logické operátory Pig Latin reprezentované jako DAG (directed acyclic graph).
  • Optimalizátor – aplikuje logické optimalizace na DAG, například projekci a přesun.
  • Kompilátor – převádí optimalizovaný logický plán na sérii úloh MapReduce.
  • Execution Engine – Zajišťuje konečné provedení úloh MapReduce a generování požadovaného výstupu.
  • Execution Mode – Mezi režimy spouštění v Apache Pig patří především lokální režim a Map Reduce.

Odpověď: Služba Metastore v Local Metastore běží ve stejném JVM jako Hive, ale připojuje se k databázi, která běží v samostatném procesu na stejném nebo vzdáleném počítači. Na druhou stranu, Metastore ve vzdáleném Metastore běží ve svém vlastním JVM odděleně od JVM služby Hive.

Co je 5V v Big Data?

Odpověď: Pět V reprezentuje klíčové charakteristiky Big Data. Patří sem:

  • Hodnota: Cílem Big Data je poskytnout významné výhody v podobě vysoké návratnosti investic (ROI) pro organizace, které je využívají. Tuto hodnotu Big Data vytváří prostřednictvím odhalování nových poznatků, rozpoznávání vzorců, což vede k silnějším vztahům se zákazníky a efektivnějším operacím.
  • Rozmanitost: Zahrnuje různorodost typů shromažďovaných dat. Mezi různé formáty patří CSV, video, audio a další.
  • Objem: Definuje významné množství a velikost dat, které organizace spravuje a analyzuje. Množství těchto dat exponenciálně narůstá.
  • Rychlost: Exponenciální rychlost růstu dat.
  • Pravdivost: Pravdivost se týká nejistoty nebo nepřesnosti dat z důvodu jejich neúplnosti nebo nekonzistence.

Vysvětlete datové typy v Pig Latin.

Odpověď: Datové typy v Pig Latin se dělí na atomické a komplexní.

Atomické datové typy jsou základní typy, které jsou běžné i v jiných programovacích jazycích. Patří mezi ně:

  • Int – reprezentuje 32bitové celé číslo se znaménkem. Příklad: 13
  • Long – reprezentuje 64bitové celé číslo. Příklad: 10L
  • Float – reprezentuje 32bitové číslo s plovoucí desetinnou čárkou se znaménkem. Příklad: 2.5F
  • Double – reprezentuje 64bitové číslo s plovoucí desetinnou čárkou se znaménkem. Příklad: 23.4
  • Boolean – reprezentuje booleovskou hodnotu. Hodnoty: True/False
  • Datetime – reprezentuje hodnotu data a času. Příklad: 1980-01-01T00:00.00.000+00:00

Mezi komplexní datové typy patří:

  • Map – reprezentuje sadu párů klíč-hodnota. Příklad: [‘color’#’yellow’, ‘number’#3]
  • Bag – reprezentuje kolekci n-tic a používá symbol ‘{}’. Příklad: {(Henry, 32), (Kiti, 47)}
  • N-tice – reprezentuje uspořádanou sadu polí. Příklad: (Věk, 33)

Co jsou Apache Oozie a Apache ZooKeeper?

Odpověď: Apache Oozie je plánovač pro Hadoop, který zodpovídá za plánování a spojování úloh Hadoopu do jedné logické operace.

Apache ZooKeeper naopak koordinuje různé služby v distribuovaném prostředí. Ušetří čas vývojářů tím, že poskytuje jednoduché služby jako synchronizace, seskupování, správa konfigurace a pojmenování. Také poskytuje běžnou podporu pro řazení do fronty a volbu lídra.

Jaká je role Combineru, RecordReaderu a Partitioneru v MapReduce?

Odpověď: Combiner funguje jako mini-reduktor. Přijímá a zpracovává data z mapperů a poté předává výstup reduktoru.

RecordReader komunikuje s InputSplit a převádí data na páry klíč-hodnota, aby je mapper mohl číst.

Partitioner je zodpovědný za rozhodování o počtu potřebných redukčních úloh pro shrnutí dat a za potvrzení toho, jak jsou výstupy z combinera odesílány reduktoru. Také řídí rozdělení klíčů mezi výstupy mapperů.

Uveďte různé distribuce Hadoopu od různých dodavatelů.

Odpověď: Mezi dodavatele, kteří nabízejí rozšířené verze Hadoopu, patří:

  • IBM Open Platform.
  • Cloudera CDH Hadoop Distribution
  • MapR Hadoop Distribution
  • Amazon Elastic MapReduce
  • Hortonworks Data Platform (HDP)
  • Pivotal Big Data Suite
  • Datastax Enterprise Analytics
  • HDInsight od Microsoft Azure – cloudová distribuce Hadoop.

Proč je HDFS odolný proti chybám?

Odpověď: HDFS replikuje data na různých DataNodes, díky čemuž je odolný proti chybám. Uložení dat na různých uzlech umožňuje načítání z jiných uzlů, pokud jeden selže.

Rozdíl mezi federací a vysokou dostupností?

Odpověď: HDFS Federation poskytuje odolnost proti chybám, která umožňuje nepřetržitý tok dat v jednom uzlu, pokud jiný selže. Na druhou stranu, vysoká dostupnost vyžaduje dva samostatné počítače, na kterých jsou aktivní NameNode a sekundární NameNode samostatně konfigurovány.

Federace může mít neomezený počet nesouvisejících NameNodes, zatímco u vysoké dostupnosti jsou k dispozici pouze dva související NameNodes (aktivní a pohotovostní), které pracují nepřetržitě.

NameNodes ve federaci sdílejí fond metadat, přičemž každý NameNode má svůj vlastní vyhrazený fond. V režimu vysoké dostupnosti se však aktivní NameNodes spouštějí jeden po druhém, zatímco pohotovostní NameNodes zůstávají neaktivní a pouze příležitostně aktualizují svá metadata.

Jak zjistit stav bloků a zdraví souborového systému?

Odpověď: Ke kontrole stavu souborového systému HDFS se používá příkaz hdfs fsck / jak na úrovni root, tak na úrovni jednotlivých adresářů.

Příkaz HDFS fsck se používá takto:

hdfs fsck / -files --blocks –locations> dfs-fsck.log

Popis příkazu:

  • -files: Vypíše soubory, které se kontrolují.
  • –locations: Během kontroly vypíše umístění všech bloků.

Příkaz pro kontrolu stavu bloků:

hdfs fsck <path> -files -blocks
  • <path>: Zahájí kontrolu od zadané cesty.
  • –blocks: Během kontroly vypíše bloky souboru.

Kdy se používají příkazy rmadmin-refreshNodes a dfsadmin-refreshNodes?

Odpověď: Tyto příkazy jsou užitečné při obnově informací o uzlu, a to jak při spuštění uzlu, tak po dokončení spouštění.

Příkaz dfsadmin-refreshNodes spustí HDFS klienta a aktualizuje konfiguraci NameNode uzlu. Příkaz rmadmin-refreshNodes naproti tomu provádí administrativní úlohy Resource Manager.

Co je kontrolní bod?

Odpověď: Kontrolní bod je operace, která sloučí nejnovější změny souborového systému s aktuálním FSImage, aby soubory protokolu úprav zůstaly malé a urychlily proces spouštění NameNode. Kontrolní bod se provádí v sekundárním NameNode.

Proč používáme HDFS pro aplikace s velkými datovými sadami?

Odpověď: HDFS poskytuje architekturu DataNode a NameNode, která implementuje distribuovaný systém souborů.

Tyto dvě architektury poskytují vysoce výkonný přístup k datům prostřednictvím škálovatelných clusterů Hadoop. Jeho NameNode ukládá metadata souborového systému do paměti RAM, což znamená, že množství paměti omezuje počet souborů systému souborů HDFS.

Co dělá příkaz ‘jps’?

Odpověď: Příkaz JPS (Java Virtual Machine Process Status) kontroluje, zda jsou spuštěny konkrétní démoni Hadoop, jako NodeManager, DataNode, NameNode a ResourceManager. Je nutné ho spustit z kořenového adresáře a zkontrolovat provozní uzly hostitele.

Co je spekulativní spouštění v Hadoop?

Odpověď: Je to proces, při kterém hlavní uzel v Hadoop místo opravy pomalých úloh spouští jinou instanci stejné úlohy jako zálohovací (spekulativní) úlohu na jiném uzlu. Spekulativní provádění šetří čas, zejména v prostředích s vysokým pracovním zatížením.

Uveďte tři režimy, ve kterých může Hadoop běžet.

Odpověď: Mezi tři primární režimy, ve kterých Hadoop běží, patří:

  • Standalone Node – výchozí režim, který spouští služby Hadoop s využitím lokálního systému souborů a jednoho procesu Java.
  • Pseudodistribuovaný uzel – spouští všechny služby Hadoop pomocí jediné instance Hadoop.
  • Plně distribuovaný uzel – spouští hlavní a podřízené služby Hadoop na samostatných uzlech.

Co je UDF?

Odpověď: UDF (User Defined Functions) umožňuje vytvářet vlastní funkce, které lze použít pro zpracování hodnot sloupců během dotazu v Impala.

Co je DistCp?

Odpověď: DistCp neboli Distributed Copy je nástroj pro kopírování dat ve velkém množství mezi clustery. Využitím MapReduce DistCp efektivně implementuje distribuované kopírování velkého množství dat a také další úlohy, jako je zpracování chyb, obnova a reportování.

Odpověď: Hive Metastore je služba, která ukládá metadata pro tabulky Hive do relační databáze, jako je například MySQL. Poskytuje rozhraní API služby metastore, která umožňuje centrální přístup k metadatům.

Definujte RDD.

Odpověď: RDD neboli Resilient Distributed Datasets je datová struktura v Sparku a je to neměnná distribuovaná kolekce datových prvků, která se zpracovává na různých uzlech clusteru.

Jak lze nativní knihovny začlenit do úloh YARN?

Odpověď: Lze to implementovat pomocí -Djava.library.path v příkazu nebo nastavením LD_LIBRARY_PATH v souboru .bashrc v následujícím formátu:

<property>
<name>mapreduce.map.env</name>
<value>LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/my/libs</value>
</property>

Vysvětlete WAL v HBase.

Odpověď: Write Ahead Log (WAL) je protokol pro obnovu, který zaznamenává změny dat MemStore v HBase do souborového úložiště. WAL zajistí obnovení těchto dat v případě selhání RegionalServeru nebo před vyprázdněním MemStore.

Je YARN náhradou za Hadoop MapReduce?

Odpověď: Ne, YARN není náhrada Hadoop MapReduce. Je to technologie nazývaná Hadoop 2.0 nebo MapReduce 2, která podporuje MapReduce.

Jaký je rozdíl mezi ORDER BY a SORT BY v Hive?

Odpověď: Oba příkazy načítají data v Hive seřazeně, ale výsledky pomocí SORT BY mohou být seřazené pouze částečně.

Navíc SORT BY vyžaduje reduktor pro třídění řádků. Těchto redukcí může být pro konečný výstup více. V takovém případě může být konečný výstup seřazen částečně.

Na druhou stranu, ORDER BY vyžaduje pouze jeden reduktor pro celkové seřazení výstupu. Klíčové slovo LIMIT se dá použít pro zkrácení celkové doby třídění.

Jaký je rozdíl mezi Sparkem a Hadoopem?

Odpověď: Hadoop i Spark jsou frameworky pro distribuované zpracování dat, ale klíčový rozdíl spočívá v jejich způsobu zpracování. Hadoop je vhodnější pro dávkové zpracování, zatímco Spark je efektivní pro zpracování dat v reálném čase.

Hadoop čte a zapisuje soubory do HDFS, zatímco Spark používá koncept Resilient Distributed Dataset pro zpracování dat v RAM.

Hadoop má vysokou latenci a nenabízí interaktivní zpracování dat, zatímco Spark se vyznačuje nízkou latencí a umožňuje interaktivní zpracování.

Porovnejte Sqoop a Flume.

Odpověď: Sqoop a Flume jsou nástroje Hadoopu pro shromažďování dat z různých zdrojů a jejich načítání do HDFS.

  • Sqoop (SQL-to-Hadoop) extrahuje strukturovaná data z databází jako Teradata, MySQL, Oracle apod., zatímco Flume je určen pro extrakci nestrukturovaných dat z různých zdrojů a jejich načítání do HDFS.
  • Pokud jde o řízení událostmi, Flume je řízen událostmi, zatímco Sqoop ne.
  • Sqoop používá architekturu založenou na konektorech, kde konektory vědí, jak se připojit k jinému zdroji dat. Flume používá architekturu založenou na agentech, kde agent je zodpovědný za načítání dat.
  • Díky distribuované povaze Flume může snadno shromažďovat a agregovat data. Sqoop je vhodný pro paralelní přenos dat, takže výstup je rozdělen do více souborů.

Vysvětlete BloomMapFile.

Odpověď: BloomMapFile je třída, která rozšiřuje třídu MapFile a používá filtry bloom, které umožňují rychlé testování přítomnosti klíče.

Jaký je rozdíl mezi HiveQL a PigLatin?

Odpověď: HiveQL je deklarativní jazyk podobný SQL, zatímco PigLatin je vysokoúrovňový procedurální jazyk pro datové toky.

Co je čištění dat?

Odpověď: Čištění dat je důležitý proces, který spočívá v odstraňování nebo opravě chyb v datech. Zahrnuje odstraňování nesprávných, neúplných, poškozených, duplicitních a nesprávně formátovaných dat v datové sadě.

Tento proces má za cíl zlepšit kvalitu dat a zajistit přesnější, konzistentnější a spolehlivější informace, které jsou potřebné pro efektivní rozhodování v organizaci.

Závěr 💃

Vzhledem k současnému nárůstu pracovních příležitostí v oblasti Big Data a Hadoop je ideální čas pro navýšení svých šancí na získání pozice. Otázky a odpovědi, které byly zmíněny v tomto článku, by vám měly pomoci zdolat vaše nadcházející pohovory.

Dále doporučujeme shlédnout kvalitní zdroje pro studium Big Data a Hadoop.

Hodně štěstí! 👍