HBase
 sql >> база данни >  >> NoSQL >> HBase

Ограничения на Hadoop, начини за разрешаване на недостатъците на Hadoop

Обсъдихме Функциите на Hadoop в предишния ни урок за Hadoop. Сега ще покрием ограниченията на Hadoop. Има различни недостатъци на Apache Hadoop рамки.

Например проблем с малки файлове, бавна обработка, само пакетна обработка, закъснение, проблем със сигурността, уязвимост, липса на кеширане и др.

Всички тези ограничения на Hadoop ще обсъдим подробно в този урок за Hadoop.

Какво е Hadoop?

Apache Hadoop е софтуерна рамка с отворен код за разпределено съхранение и обработка на огромно количество набори от данни. Отвореният код означава, че е свободно достъпен и дори ние можем да променим неговия изходен код според изискванията.

Apache Hadoop също така прави възможно стартирането на приложения в система с хиляди възли. Разпределената файлова система осигурява бързи скорости на трансфер на данни между възлите.

Освен това позволява на системата да продължи да работи в случай на повреда на възел. Основните характеристики на Hadoop са както следва:

  • В Apache Hadoop данните са налични въпреки повреда на машината поради много копия на данни. Така че, ако някоя машина се срине, тогава човек може да получи достъп до данните от друг път.
  • Apache Hadoop е мащабируем, тъй като е лесно да добавите нов хардуер към възела.
  • Hadoop е силно устойчив на грешки, тъй като по подразбиране 3 реплики на всеки блок се съхраняват в клъстера. Така че, ако някой възел в клъстера се повреди, данните на този възел могат лесно да бъдат възстановени от другия възел.
  • Apache Hadoop работи на клъстер от обикновен хардуер, който не е много скъп.
  • В Apache Hadoop данните се съхраняват надеждно в клъстера въпреки хардуерната повреда поради репликация на данни в клъстера.

Въпреки че Hadoop е най-мощният инструмент на Big Data, има различни ограничения за него. Поради ограниченията на Hadoop се появиха Apache Spark и Apache Flink.

Ограничения на Hadoop

Различни ограничения на Apache Hadoop са дадени по-долу заедно с тяхното решение-

a. Проблеми с малки файлове

Основният проблем с Hadoop е, че не е подходящ за малки данни. HDFS няма възможност да поддържа произволно отчитане на малки поради дизайна с голям капацитет.

Малките файлове са по-малки от размера на HDFS Block (по подразбиране 128MB). Ако съхранявате този огромен брой малки файлове, HDFS не може да се справи с тези много малки файлове.

Тъй като HDFS е проектиран да работи с малък брой големи файлове за съхранение на големи набори от данни, а не с голям брой малки файлове. Ако има много много малки файлове, тогава NameNode ще бъде претоварен, тъй като съхранява пространството от имена на HDFS.

Решение: 

Просто обединете малките файлове, за да създадете по-големи файлове и след това копирайте по-големи в HDFS.

Архив на Hadoop (HAR файлове) се занимава с проблема с много малки файлове. Hadoop Archives работи чрез изграждане на многопластова файлова система в горната част на HDFS.

С помощта на командата Hadoop archive се създават HAR файлове; това изпълнява задание MapReduce за пакетиране на архивираните файлове в малък брой HDFS файлове. Четенето на файлове през HAR не е по-ефективно от четенето през HDFS.

Тъй като всеки достъп до HAR файл изисква четене на два индексни файла, както и файла с данни за четене, това ще го направи по-бавно.

Файловете с последователности също преодоляват проблема с малкия файл. В който използваме името на файла като ключ и съдържанието на файла като стойност.

Като напишем програма за файлове (100 KB), можем да ги поставим в един файл с последователност и след това можем да ги обработим по начин на поточно предаване, работещ с файла с последователност.

MapReduce в Hadoop може да раздели файла на последователността на парчета и да работи с всяка част независимо, тъй като файлът на последователността може да се раздели.

Съхранявайки файлове в Hbase, можем да преодолеем проблема с малкия файл. Ние всъщност не съхраняваме милиони малки файлове в HBase, а добавяме двоичното съдържание на файла към клетка.

б. Бавна скорост на обработка

MapReduce обработва огромно количество данни. В Hadoop MapReduce работи, като разделя обработката на фази:Карта и Намаляване . Така че MapReduce изисква много време за изпълнение на тези задачи, като по този начин увеличава латентността. Следователно намалява скоростта на обработка.

Решение:

Чрез обработка на данни в паметта Apache Spark преодолява този проблем. Както при обработката в паметта, не се изразходва време за преместване на данните/процесите във и извън диска, което го прави по-бърз.

Apache Spark е 100 пъти по-бърз в сравнение с MapReduce, защото обработва всичко в паметта.

Flink също може да преодолее този проблем. Flink обработва по-бързо от Spark поради своята стрийминг архитектура.

в. Поддръжка само за пакетна обработка

Hadoop поддържа само пакетна обработка, не е подходящ за поточно предаване на данни. Следователно цялостната производителност е по-бавна. MapReduce рамката не използва максимално паметта на клъстера Hadoop.

Решение

Apache Spark решава този проблем, тъй като поддържа обработка на поток. Но обработката на Spark поток не е толкова ефективна, колкото Flink, тъй като използва микро-пакетна обработка. Apache Flink подобрява цялостната производителност, тъй като осигурява единично време за изпълнение за поточно предаване, както и пакетна обработка.

г. Без обработка в реално време

Apache Hadoop е рамка за пакетна обработка. Това означава, че приема огромно количество данни във входа, обработва ги и произвежда резултата.

Пакетната обработка е много ефективна за обработка на голям обем данни, но зависи от размера на обработваните данни и изчислителната мощност на системата; изходът може да се забави значително. Apache Hadoop не е подходящ за обработка в реално време.

Решение:

Spark е подходящ за обработка на поток. Обработката на пара осигурява непрекъснато въвеждане/изход на данни. Той обработва данни в рамките на малко време.

Flink осигурява единично време за изпълнение както за поточно предаване, така и за пакетна обработка.

д. Итеративна обработка

Apache Hadoop не е много ефективен за итеративна обработка. Тъй като Hadoop не се поддържа цикличен поток от данни (т.е. верига от етапи, в които всеки изход от предишния етап е вход за следващия етап).

Решение:

Spark преодолява този проблем. Тъй като Apache Spark има достъп до данни от RAM вместо от диска. Това драстично подобрява производителността на итеративен алгоритъм, който многократно осъществява достъп до същия набор от данни.

В Apache Spark, за итеративна обработка, всяка итерация трябва да бъде планирана и изпълнена отделно.

f. Закъснение

MapReduce в Hadoop е по-бавен, защото поддържа различен формат, структуриран и огромно количество данни. В MapReduce Map взема набор от данни и го преобразува в друг набор от данни, където отделен елемент се разбива на двойка ключ-стойност.

Reduce приема изхода от картата като, а Reduce взема изхода от картата като вход и обработва по-нататък. MapReduce изисква много време за изпълнение на тези задачи, като по този начин се увеличава латентността.

Решение:

Apache Spark може да намали този проблем. Въпреки че Spark е пакетна система, тя е относително по-бърза, тъй като кешира голяма част от входните данни в паметта от RDD. Apache Flink поточно предаване на данни постига ниска латентност и висока пропускателна способност.

ж. Без лекота на използване

Разработчикът на MapReduce в Hadoop трябва да предаде код за всяка операция, което го прави много труден за работа. В Hadoop MapReduce няма интерактивен режим, но добавянето на кошер и прасе прави работата с MapReduce малко по-лесна.

Решение:

Spark е преодолял този проблем, тъй като Spark има интерактивен режим. Така че разработчиците и потребителите могат да имат междинна обратна връзка за запитвания и други дейности.

Тъй като Spark има множество оператори от високо ниво, е лесно да се програмира Spark. Може да се използва и Apache Flink, тъй като има и оператори от високо ниво.

h. Проблем със сигурността

Apache Hadoop е предизвикателство в поддръжката на сложните приложения. Hadoop липсва криптиране на нивата за съхранение и мрежа, което е основен проблем. Apache Hadoop поддържа удостоверяване на Kerberos, което е трудно за управление.

Решение:

Apache Spark осигурява бонус за сигурност. Ако стартирате Apache Spark в HDFS, той може да използва HDFS ACL и разрешения на ниво файл.

i. Уязвими от природата

Apache Hadoop е написан на Java. Java е най-популярният език, следователно Java е най-силно експлоатиран от киберпрестъпниците.

j. Без кеширане

Apache Hadoop не е ефективен за кеширане. MapReduce не може да кешира междинните данни в паметта за по-нататъшно изискване и това намалява производителността на Hadoop.

Решение:

Spark и Flink преодоляват този проблем. Spark и Flink кешират данни в паметта за по-нататъшни итерации, които подобряват цялостната производителност.

k. Дълъг код

Apache Hadoop има 1 20 000 реда код. Броят на редовете произвежда броя на грешките. Следователно изпълнението на програмите ще отнеме повече време.

Решение:

Spark и Flink са написани на Scala и Java. Но реализацията е в Scala, така че броят на реда код е по-малък от Hadoop. По този начин отнема по-малко време за изпълнение на програмите.

Заключение

В резултат на ограничението на Hadoop се появи нуждата от Spark и Flink. По този начин направете системата по-удобна за игра с огромно количество данни.

Apache Spark осигурява обработка на данни в паметта, като по този начин подобрява скоростта на обработка. Flink подобрява производителността, тъй като осигурява единично време за изпълнение за поточно предаване, както и пакетна обработка.

Spark осигурява бонус за сигурност. Следователно, човек може да разреши всички тези ограничения на Hadoop, като използва други технологии за големи данни като Apache Spark и Flink.

Ако откриете други ограничения на Hadoop, моля, уведомете ни, като оставите коментар в раздел, даден по-долу.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защита на оперативната база данни – част 1

  2. Hadoop Partitioner – Научете основите на MapReduce Partitioner

  3. Представяне на политиките за уплътняване на дялове на Apache HBase Medium Object Storage (MOB).

  4. Как да:Добавете Cloudera Search към вашия клъстер с помощта на Cloudera Manager

  5. HDFS урок – пълно въведение в HDFS за начинаещи