Probrali jsme Funkce Hadoop v našem předchozím tutoriálu Hadoop. Nyní se podíváme na omezení Hadoopu. Rámce Apache Hadoop mají různé nevýhody.
Například problém s malými soubory, pomalé zpracování, pouze dávkové zpracování, latence, problém se zabezpečením, chyba zabezpečení, žádné ukládání do mezipaměti atd.
Všechna tato omezení Hadoopu podrobně probereme v tomto tutoriálu Hadoop.
Co je Hadoop?
Apache Hadoop je open source softwarový framework pro distribuované ukládání a zpracování velkého množství datových sad. Open source znamená, že je volně dostupný a dokonce i my můžeme změnit jeho zdrojový kód podle požadavků.
Apache Hadoop také umožňuje spouštět aplikace na systému s tisíci uzly. Jeho distribuovaný souborový systém poskytuje rychlé přenosové rychlosti dat mezi uzly.
Umožňuje také pokračovat v provozu systému v případě selhání uzlu. Hlavní rysy Hadoopu jsou následující:
- V Apache Hadoop jsou data dostupná i přes selhání stroje kvůli mnoha kopiím dat. Pokud tedy dojde k selhání jakéhokoli počítače, lze k datům přistupovat z jiné cesty.
- Apache Hadoop je škálovatelný, protože do uzlu lze snadno přidat nový hardware.
- Hadoop je vysoce odolný proti chybám, protože ve výchozím nastavení jsou v clusteru uloženy 3 repliky každého bloku. Pokud tedy některý uzel v clusteru selže, data v tomto uzlu lze snadno obnovit z druhého uzlu.
- Apache Hadoop běží na clusteru komoditního hardwaru, který není příliš drahý.
- V Apache Hadoop jsou data spolehlivě uložena v clusteru i přes selhání hardwaru v důsledku replikace dat v clusteru.
Přestože je Hadoop nejmocnějším nástrojem Big Data, má různá omezení. Kvůli omezením Hadoop vznikly Apache Spark a Apache Flink.
Omezení Hadoop
Různá omezení Apache Hadoop jsou uvedena níže spolu s jejich řešením-
a. Problémy s malými soubory
Hlavním problémem Hadoopu je, že není vhodný pro malá data. HDFS postrádá schopnost podporovat náhodné čtení malých kvůli jeho vysokokapacitnímu designu.
Malé soubory jsou menší než velikost bloku HDFS (výchozí 128 MB). Pokud ukládáte toto obrovské množství malých souborů, HDFS nemůže zpracovat tyto velké množství malých souborů.
Protože HDFS byl navržen pro práci s malým počtem velkých souborů pro ukládání velkých datových sad spíše než s velkým počtem malých souborů. Pokud existuje mnoho malých souborů, bude NameNode přetížen, protože ukládá jmenný prostor HDFS.
Řešení:
Jednoduše sloučte malé soubory a vytvořte větší soubory a pak zkopírujte větší do HDFS.
Archiv Hadoop (HAR soubory) se zabývá problémem spousty malých souborů. Hadoop Archives funguje tak, že na horní části HDFS vytváří vrstvený souborový systém.
Pomocí příkazu help Hadoop archive se vytvoří soubory HAR; tím se spustí úloha MapReduce, která zabalí archivované soubory do malého počtu souborů HDFS. Čtení souborů přes HAR není efektivnější než čtení přes HDFS.
Protože každý přístup k souboru HAR vyžaduje čtení dvou indexových souborů a čtení datového souboru, bude to pomalejší.
Sekvenční soubory také překonávají problém malých souborů. Ve kterém používáme název souboru jako klíč a obsah souboru jako hodnotu.
Napsáním programu pro soubory (100 KB) je můžeme vložit do jednoho sekvenčního souboru a poté je můžeme zpracovávat streamovacím způsobem pracujícím na sekvenčním souboru.
MapReduce v Hadoopu může rozdělit soubor sekvence na bloky a pracovat s každým blokem nezávisle, protože soubor sekvence lze rozdělit.
Ukládáním souborů do Hbase můžeme překonat problém s malými soubory. Ve skutečnosti neukládáme miliony malých souborů do HBase, ale přidáváme binární obsah souboru do buňky.
b. Pomalá rychlost zpracování
MapReduce zpracovává obrovské množství dat. V Hadoopu funguje MapReduce rozdělením zpracování do fází:Mapa a Snížit . MapReduce tedy vyžaduje spoustu času na provedení těchto úkolů, čímž se zvyšuje latence. Tím se snižuje rychlost zpracování.
Řešení:
Zpracováním dat v paměti Apache Spark tento problém překonává. Stejně jako u zpracování v paměti se netráví žádný čas přesunem dat/procesů na disk az disku, takže je rychlejší.
Apache Spark je 100krát rychlejší ve srovnání s MapReduce, protože zpracovává vše v paměti.
Flink může také tento problém vyřešit. Flink zpracovává rychleji než Spark díky své streamovací architektuře.
c. Podpora pouze pro dávkové zpracování
Hadoop podporuje pouze dávkové zpracování, není vhodný pro streamování dat. Celkový výkon je tedy pomalejší. Rámec MapReduce nevyužívá paměť clusteru Hadoop na maximum.
Řešení
Apache Spark tento problém řeší, protože podporuje zpracování streamů. Zpracování proudu Spark však není tak efektivní jako Flink, protože používá mikrodávkové zpracování. Apache Flink zlepšuje celkový výkon, protože poskytuje jediný běh pro streamování i dávkové zpracování.
d. Žádné zpracování v reálném čase
Apache Hadoop je framework pro dávkové zpracování. Znamená to, že na vstupu je potřeba obrovské množství dat, zpracovává je a vytváří výsledek.
Dávkové zpracování je velmi efektivní pro zpracování velkého objemu dat, ale závisí na velikosti zpracovávaných dat a výpočetním výkonu systému; výstup může být výrazně zpožděn. Apache Hadoop není vhodný pro zpracování v reálném čase.
Řešení:
Spark je vhodný pro streamové zpracování. Zpracování v páře poskytuje kontinuální vstupní/výstupní data. Zpracovává data v krátkém čase.
Flink poskytuje jediný běh pro streamování i pro dávkové zpracování.
e. Iterativní zpracování
Apache Hadoop není pro iterativní zpracování příliš efektivní. Protože Hadoop nepodporuje cyklický tok dat (tj. řetězec fází, ve kterém je každý výstup předchozí fáze vstupem do další fáze).
Řešení:
Spark tento problém překonává. Protože Apache Spark přistupuje k datům z RAM místo z disku. To dramaticky zlepšuje výkon iterativního algoritmu, který opakovaně přistupuje ke stejnému souboru dat.
V Apache Spark musí být pro iterativní zpracování každá iterace naplánována a provedena samostatně.
f. Latence
MapReduce v Hadoopu je pomalejší, protože podporuje různé formáty, strukturované a obrovské množství dat. V MapReduce Map vezme sadu dat a převede ji na jinou sadu dat, kde je jednotlivý prvek rozdělen na pár klíč–hodnota.
Reduce přebírá výstup z mapy jako a Reduce přebírá výstup z mapy jako vstup a dále zpracovává. MapReduce vyžaduje mnoho času k provedení těchto úkolů, čímž se zvyšuje latence.
Řešení:
Apache Spark může tento problém snížit. Ačkoli je Spark dávkový systém, je relativně rychlejší, protože ukládá většinu vstupních dat do paměti pomocí RDD. Streamování dat Apache Flink dosahuje nízké latence a vysoké propustnosti.
g. Žádné snadné použití
Vývojář MapReduce v Hadoop musí poskytnout kód pro každou operaci, což velmi ztěžuje práci. V Hadoopu nemá MapReduce žádný interaktivní režim, ale přidání úlu a prasete práci s MapReduce trochu zjednoduší.
Řešení:
Spark tento problém překonal, protože Spark má interaktivní režim. Vývojáři i uživatelé tak mohou mít průběžnou zpětnou vazbu pro dotazy a další aktivity.
Protože Spark má spoustu operátorů na vysoké úrovni, je snadné Spark naprogramovat. Lze také použít Apache Flink, protože má také operátory na vysoké úrovni.
h. Bezpečnostní problém
Apache Hadoop je náročný na údržbu složitých aplikací. Hadoop postrádá šifrování na úrovni úložiště a sítě, což je hlavní problém. Apache Hadoop podporuje ověřování Kerberos, které je obtížné spravovat.
Řešení:
Apache Spark poskytuje bezpečnostní bonus. Pokud spustíte Apache Spark v HDFS, může používat HDFS ACL a oprávnění na úrovni souborů.
i. Zranitelný od přírody
Apache Hadoop je napsán v Javě. Java je nejoblíbenější jazyk, a proto je nejvíce využívána kyberzločinci.
j. Žádné ukládání do mezipaměti
Apache Hadoop není efektivní pro ukládání do mezipaměti. MapReduce nemůže ukládat mezilehlá data do paměti pro další požadavek, což snižuje výkon Hadoopu.
Řešení:
Spark a Flink tento problém překonávají. Spark a Flink cache data v paměti pro další iterace, které zvyšují celkový výkon.
k. Dlouhý kód
Apache Hadoop má 1 20 000 řádků kódu. Počet řádků vytváří počet chyb. Spuštění programů proto zabere více času.
Řešení:
Spark a Flink jsou napsány ve Scale a Javě. Ale implementace je ve Scale, takže počet řádků kódu je menší než Hadoop. Spuštění programů tedy zabere méně času.
Závěr
V důsledku omezení Hadoopu se objevila potřeba Spark a Flink. Udělejte tak systém přátelštější pro hraní s velkým množstvím dat.
Apache Spark zajišťuje zpracování dat v paměti, čímž zvyšuje rychlost zpracování. Flink zlepšuje výkon, protože poskytuje jedno spuštění pro streamování i dávkové zpracování.
Spark poskytuje bezpečnostní bonus. Všechna tato omezení Hadoop lze tedy vyřešit použitím jiných technologií velkých dat, jako jsou Apache Spark a Flink.
Pokud najdete další omezení Hadoopu, dejte nám prosím vědět zanecháním komentáře v sekci níže.