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

Настройка на производителността в MapReduce за подобряване на производителността

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

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

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

Въведение в настройката на производителността на Hadoop MapReduce

Инсталирането на клъстер Hadoop в производството е само половината спечелена битка. За администратора на Hadoop е изключително важно да настроите настройката на клъстера на Hadoop, за да постигнете максимална производителност.

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

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

Много е важно администраторите на Hadoop да са запознати с няколко хардуерни спецификации, като капацитет на RAM памет, брой дискове, монтирани на DataNodes, брой ядра на процесора, брой физически или виртуални ядра, NIC карти и др.

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

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

За да извършим същото, трябва да повторим гореспоменатия процес, докато желаният резултат бъде постигнат по оптимален начин.
Изпълнение на задачата –> Идентифициране на затруднено място –> Адрес на затруднено място.

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

Съвети и трикове за настройка на производителността на MapReduce

Начините, използвани за настройка на производителността на Hadoop MapReduce, могат да бъдат категоризирани в две категории. Тези две категории са:

1. Настройка на производителността на базата на параметри по време на изпълнение на Hadoop

2. Настройка на производителността за специфично приложение на Hadoop

Нека сега да обсъдим как можем да подобрим производителността на клъстера Hadoop въз основа на тези две категории.

1. Настройка на производителността, базирана на параметри по време на изпълнение на Hadoop

Тази категория се занимава с настройка на параметрите по време на изпълнение на Hadoop, като настройка на използване на процесора, използване на паметта, използване на диск и използване на мрежата за настройка на производителността. Техниките, включени в тази категория, са:

a. Настройка на паметта

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

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

Задачите на Hadoop обикновено не са обвързани от процесора. И така, основната грижа е да се оптимизира използването на паметта и дисковете.

Най-доброто правило за настройка на паметта за максимизиране на производителността е да се гарантира, че заданията на MapReduce не задействат размяна. Това означава, че използвайте колкото можете повече памет, без да задействате размяната.

Софтуерите като Cloudera Manager, Nagios или Ganglia могат да се използват за наблюдение на използването на суап памет.

Всеки път, когато има огромно използване на суап памет, тогава използването на паметта трябва да се оптимизира чрез конфигуриране на mapred.child.java.opts свойство чрез намаляване на количеството RAM, разпределено за всяка задача в mapred.child.java.opts .

Можем да коригираме паметта за задачата, като зададем mapred.child.java.opts до -Xmx2048M в mapred-site.xml.

б. Намалете до минимум разливането на диск с карта

Disk IO е тесното място в производителността в Apache Hadoop. Имаше много параметри, които можем да настроим за минимизиране на разливането. Можем да настроим параметрите като:

  • Компресиране на изхода на картографа
  • Уверете се, че картографът използва 70% от паметта на купчина за буфера за разливане.

Но смятате ли, че честото разливане наистина е добра идея?

Силно препоръчително е да не разливате повече от веднъж, защото ако разлеем веднъж, тогава трябва да препрочетем и пренапишем всички данни:3 пъти повече от IO.

в. Настройка на задачи на Mapper

Можем имплицитно да зададем броя на картографските задачи. Най-често срещаният и ефективен начин за настройка на производителността на Hadoop за картографа е да се контролира количеството картографи и размера на всяко задание.

Докато се занимава с големите файлове, рамката разделя файла на по-малки парчета, така че картографът да може да го изпълнява паралелно. Въпреки това, инициализацията на нова задача за картографиране обикновено отнема няколко секунди, което също е излишно и трябва да бъде сведено до минимум. Така че предложенията за същото са:

  • Използвайте повторно jvm задача
  • Насочете се към задачите на картата с продължителност от 1 до 3 минути всяка. Така че, ако средното време на работа на картографа е по-малко от една минута, увеличете mapred.min.split.size, за да разпределите по-малко мапери в слота и по този начин да намалите допълнителните разходи за инициализиране на картографа.
  • Използвайте формата за въвеждане на комбиниран файл за куп по-малки файлове.

2. Настройка на производителността за специфично приложение на Hadoop

Техниките, включени в тази категория, са:

a. Минимизиране на изхода на Mapper

Чрез минимизиране на изхода на картографа можем да подобрим производителността, тъй като изходът на картографа е много чувствителен към дисковото IO, мрежовото IO и чувствителността на паметта на фазата на разбъркване. Можем да постигнем това чрез:

  • Филтриране на записите от страна на картографа вместо от страна на редуктор.
  • Използване на минимални данни за формиране на нашия изходен ключ и стойност на картографа в MapReduce.
  • Компресиране на изхода на картографа
б. Балансиращ редуктор Зареждане

Небалансираните редуцирани задачи създават проблеми с производителността. Някои от редукторите вземат по-голямата част от изхода от картографа и работят изключително дълго в сравнение с другите редуктори. Можем да балансираме натоварването на редуктора чрез:

  • Внедряване на по-добра хеш функция в класа Partitioner.
  • Написване на задание за предварителна обработка за разделяне на ключове с помощта на множество изходи. След това използвайте друга задача за намаляване на картата за обработка на специалните ключове, които могат да причинят проблема.
в. Намалете междинните данни с Combiner в Hadoop

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

г. Спекулативно изпълнение

Производителността на заданията MapReduce е сериозно засегната, когато задачите отнемат повече време, за да завършат изпълнението си. Спекулативното изпълнение в Hadoop е често срещаният подход за решаване на този проблем чрез архивиране на бавните задачи на алтернативните машини.

Можем да активираме спекулативното изпълнение, като зададем конфигурационните параметри ‘mapreduce.map.tasks.speculative.execution’ и ‘mapreduce.reduce.tasks.speculative.execution’ до истина. Това ще намали времето за изпълнение на заданието.

Резюме

И накрая, видяхме как настройката на производителността в Hadoop помага за оптимизиране на производителността на клъстера на Hadoop. Статията обяснява различни съвети и трикове за настройка на производителността на клъстера Hadoop.

Статията подчерта някои от най-добрите и най-ефективните трикове за максимизиране на производителността.

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Какво е автоматичен отказ при отказ в NameNode в Hadoop HDFS?

  2. Apache HBase репликация:Оперативен преглед

  3. Въведение, работа и предимства на Hadoop Combiner

  4. Надстройка на HBase върху извора на събития и архитектурата CQRS за 3 седмици

  5. Hadoop RecordReader Въведение, работа и типове