Хадооп МапРедуце Придружите се & амп; Бројач са примером

Преглед садржаја:

Anonim

Шта је Придруживање у Мапредуце-у?

Операција Мапредуце Јоин користи се за комбиновање два велика скупа података. Међутим, овај процес укључује писање пуно кода како би се извршила стварна операција спајања. Спајање два скупа података започиње упоређивањем величине сваког скупа података. Ако је један скуп података мањи у односу на други скуп података, тада се мањи скуп података распоређује у сваки чвор података у кластеру.

Једном када се придружи придруживање у МапРедуцеу, Маппер или Редуцер користи мањи скуп података да изврши претрагу за подударање записа из великог скупа података, а затим комбинује те записе у излазне записе.

У овом упутству ћете научити-

  • Шта је придруживање у МапРедуце-у?
  • Врсте придруживања
  • Како спојити два скупа података: Пример МапРедуце
  • Шта је Цоунтер у МапРедуце-у?
  • Врсте бројача МапРедуце
  • Пример бројача

Врсте придруживања

У зависности од места на коме се изводи стварно спајање, придруживања у Хадоопу класификују се у

1. Придруживање на мапи - Када спајање изводи маппер, оно се назива придруживање на страни мапе. У овом типу, спајање се изводи пре него што функција мапе стварно потроши податке. Обавезно је да улаз сваке мапе буде у облику партиције и да буде поредан. Такође, мора постојати једнак број партиција и то мора бити сортирано по кључу за придруживање.

2. Спајање на страни смањења - Када спајање изводи редуктор, оно се назива спајање на страни смањења. У овом удруживању није потребно имати скуп података у структурираном облику (или подељен).

Овде обрада карте на страни емитује кључ за придруживање и одговарајуће корпе обе табеле. Као ефекат ове обраде, све корпице са истим кључем за спајање падају у исти редуктор који затим спаја записе са истим кључем за спајање.

Укупан ток процеса спајања у Хадооп-у приказан је на доњем дијаграму.

Типови придруживања у Хадооп МапРедуце

Како спојити два скупа података: Пример МапРедуце

Постоје два скупа података у две различите датотеке (приказано доле). Кеи Депт_ИД је уобичајен у обе датотеке. Циљ је коришћење МапРедуце Јоин за комбиновање ових датотека

Фајл 1
Филе 2

Улаз: Скуп улазних података је ткт датотека, ДептНаме.ткт & ДепСтренгтх.ткт

Преузмите улазне датотеке одавде

Обавезно инсталирајте Хадооп. Пре него што започнете са стварним поступком примера МапРедуце Јоин, промените корисника у 'хдусер' (ид који се користи током конфигурације Хадооп-а, можете да пређете на идентификациони број који се користи током ваше конфигурације Хадооп-а).

su - hduser_

Корак 1) Копирајте зип датотеку на место по вашем избору

Корак 2) Раскомпресујте Зип датотеку

sudo tar -xvf MapReduceJoin.tar.gz

Корак 3) Идите у директоријум МапРедуцеЈоин /

cd MapReduceJoin/

Корак 4) Покрените Хадооп

$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh

Корак 5) ДептСтренгтх.ткт и ДептНаме.ткт су улазне датотеке које се користе за овај пример МапРедуце Јоин.

Ову датотеку треба копирати у ХДФС користећи наредбу испод -

$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /

Корак 6) Покрените програм користећи наредбу испод

$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin

Корак 7) Након извршења, излазна датотека (названа 'парт-00000') чува се у директоријуму / оутпут_мапредуцејоин на ХДФС

Резултати се могу видети помоћу интерфејса командне линије

$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000

Резултати се такође могу видети путем веб интерфејса као

Сада изаберите „Прегледај систем датотека“ и крећите се горе / оутпут_мапредуцејоин

Отворени део-р-00000

Резултати су приказани

НАПОМЕНА: Имајте на уму да ћете пре следећег покретања овог програма морати да избришете излазни директоријум / оутпут_мапредуцејоин

$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin

Алтернатива је употреба другог назива за излазни директоријум.

Шта је Цоунтер у МапРедуце-у?

Цоунтер-у МапРедуце је механизам се користи за сакупљање и мерење статистичке податке о МапРедуце пословима и догађајима. Бројачи воде евиденцију различитих статистика послова у МапРедуцеу као и број извршених операција и напредак операције. Бројачи се користе за дијагнозу проблема у МапРедуце-у.

Бројачи Хадооп слични су стављању поруке дневника у код за мапу или редукцију. Ове информације могу бити корисне за дијагнозу проблема у обради посла МапРедуце.

Типично су ови бројачи у Хадоопу дефинисани у програму (мапирање или смањење) и повећавају се током извршавања када се догоди одређени догађај или стање (специфично за тај бројач). Врло добра примена Хадооп бројача је праћење важећих и неважећих записа из улазног скупа података.

Врсте бројача МапРедуце

У основи постоје 2 врсте бројача МапРедуце

    1. Уграђени бројачи Хадооп: Постоје неки уграђени Хадооп бројачи који постоје по послу. Испод су уграђене бројачке групе-
      • Бројачи задатака МапРедуце - прикупља специфичне информације о задатку (нпр. Број улазних записа) током његовог извршења.
      • Бројачи датотека система - прикупља информације попут броја бајтова које је задатак прочитао или написао
      • ФилеИнпутФормат бројачи - прикупља информације о одређеном броју бајтова прочитаних кроз ФилеИнпутФормат
      • ФилеОутпутФормат бројачи - прикупља информације о одређеном броју бајтова записаних путем ФилеОутпутФормат
      • Бројачи послова - ове бројаче користи ЈобТрацкер. Статистички подаци које они прикупљају укључују нпр. Број покренутих задатака за посао.
    2. Кориснички дефинисани бројачи

Поред уграђених бројача, корисник може да дефинише сопствене бројаче користећи сличне функционалности које пружају програмски језици. На пример, у Јави се 'енум' користи за дефинисање кориснички дефинисаних бројача.

Пример бројача

Пример МапЦласс са бројачима за бројање броја недостајућих и неважећих вредности. Датотека улазних података која се користи у овом упутству Наш скуп улазних података је ЦСВ датотека, СалесЈан2009.цсв

public static class MapClassextends MapReduceBaseimplements Mapper{static enum SalesCounters { MISSING, INVALID };public void map ( LongWritable key, Text value,OutputCollector output,Reporter reporter) throws IOException{//Input string is split using ',' and stored in 'fields' arrayString fields[] = value.toString().split(",", -20);//Value at 4th index is country. It is stored in 'country' variableString country = fields[4];//Value at 8th index is sales data. It is stored in 'sales' variableString sales = fields[8];if (country.length() == 0) {reporter.incrCounter(SalesCounters.MISSING, 1);} else if (sales.startsWith("\"")) {reporter.incrCounter(SalesCounters.INVALID, 1);} else {output.collect(new Text(country), new Text(sales + ",1"));}}}

Изнад фрагмент кода приказује пример примене бројача у Хадооп Мап Редуце.

Овде је СалесЦоунтерс бројач дефинисан коришћењем 'енум' . Користи се за бројање недостајућих и неваљаних улазних записа.

У фрагменту кода, ако поље 'цоунтри' има нулту дужину, онда његова вредност недостаје и стога се повећава бројач СалесЦоунтерс.МИССИНГ .

Следеће, ако поље „продаја“ започиње са онда се запис сматра НЕВРЕДНИМ. То се означава повећањем бројача СалесЦоунтерс.ИНВАЛИД.