Hadoop MapReduce Join & Skaitītājs ar piemēru

Satura rādītājs:

Anonim

Kas ir Mapreduce pievienošanās?

Mapreduce Join darbību izmanto, lai apvienotu divas lielas datu kopas. Tomēr šis process ietver daudz koda rakstīšanu, lai veiktu faktisko pievienošanās darbību. Savienošana ar divām datu kopām sākas, salīdzinot katras datu kopas lielumu. Ja viena datu kopa ir mazāka salīdzinājumā ar citu datu kopu, tad mazāka datu kopa tiek izplatīta katram klastera datu mezglam.

Kad ir izdalīta apvienošanās mapē MapReduce, Mapper vai Reducer izmanto mazāku datu kopu, lai meklētu atbilstošu ierakstu meklēšanu no lielās datu kopas un pēc tam apvienotu šos ierakstus, lai izveidotu izvades ierakstus.

Šajā apmācībā jūs uzzināsiet

  • Kas ir pievienošanās MapReduce?
  • Pievienošanās veidi
  • Kā apvienot divas datu kopas: MapReduce piemērs
  • Kas ir skaitītājs programmā MapReduce?
  • MapReduce skaitītāju veidi
  • Skaitītāju piemērs

Pievienošanās veidi

Atkarībā no vietas, kur notiek faktiskā pievienošanās, pievienošanās Hadoopā tiek klasificēta

1. Kartes savienojums - kad savienojumu veic kartētājs, to sauc par savienojumu kartes pusē. Šāda veida savienošana tiek veikta, pirms kartes funkcija faktiski patērē datus. Ir obligāti, lai katras kartes ievade būtu nodalījuma veidā un sakārtota. Turklāt ir jābūt vienādam nodalījumu skaitam, un tas ir jāšķiro pēc pievienošanās atslēgas.

2. Redukcijas puses savienojums - kad savienojumu veic reduktors, to sauc par reduktora savienojumu. Šajā savienojumā nav nepieciešams, lai datu kopa būtu strukturētā formā (vai sadalīta).

Šeit kartes puses apstrāde izstaro pievienošanās atslēgu un atbilstošos abu tabulu kopas. Šīs apstrādes rezultātā visi kopas ar tādu pašu pievienošanās atslēgu ietilpst vienā reduktorā, kas pēc tam savieno ierakstus ar to pašu pievienošanās atslēgu.

Kopējā savienojumu plūsma Hadoopā ir parādīta zemāk esošajā diagrammā.

Savienojumu veidi Hadoop MapReduce

Kā apvienot divas datu kopas: MapReduce piemērs

Divos dažādos failos ir divi datu kopas (parādīts zemāk). Key Dept_ID ir izplatīts abos failos. Mērķis ir izmantot MapReduce Join, lai šos failus apvienotu

1. fails
2. fails

Ievade: ievades datu kopa ir txt fails, DeptName.txt un DepStrength.txt

Lejupielādējiet ievades failus no šejienes

Pārliecinieties, vai esat instalējis Hadoop. Pirms sākat ar MapReduce Join faktiskā procesa piemēru, nomainiet lietotāju uz “hduser” (ID tiek izmantots, kamēr konfigurējat Hadoop, varat pārslēgties uz lietotāja ID, kas tika izmantots jūsu Hadoop konfigurācijas laikā).

su - hduser_

1. solis) Kopējiet zip failu izvēlētajā vietā

2. solis) Atspiest ZIP failu

sudo tar -xvf MapReduceJoin.tar.gz

3. solis) Doties uz direktoriju MapReduceJoin /

cd MapReduceJoin/

4. solis) Sāciet Hadoop

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

5. solis. DeptStrength.txt un DeptName.txt ir ievades faili, kas izmantoti šai MapReduce Join paraugprogrammai.

Šie faili ir jākopē HDFS, izmantojot zemāk esošo komandu

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

6. solis) Palaidiet programmu, izmantojot zemāk esošo komandu

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

7. solis. Pēc izpildes izejas fails (ar nosaukumu “part-00000”) tiks saglabāts direktorijā / output_mapreducejoin HDFS

Rezultātus var redzēt, izmantojot komandrindas saskarni

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

Rezultātus var redzēt arī caur tīmekļa saskarni

Tagad atlasiet 'Pārlūkot failu sistēmu' un dodieties uz upto / output_mapreducejoin

Atvērt daļu r-00000

Rezultāti tiek parādīti

PIEZĪME: Lūdzu, ņemiet vērā, ka pirms nākamreiz palaidīsit šo programmu, jums būs jāizdzēš izvades direktorijs / output_mapreducejoin

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

Alternatīva ir izejas direktorijai izmantot citu nosaukumu.

Kas ir skaitītājs programmā MapReduce?

Counter in MapReduce ir mehānisms, ko izmanto, lai apkopotu un mērīšanas statistikas informāciju par MapReduce darbiem un pasākumiem. Skaitītāji veic dažādu darba statistikas datu uzskaiti MapReduce, piemēram, veikto darbību skaitu un darbības gaitu. Skaitītāji tiek izmantoti problēmu diagnosticēšanai MapReduce.

Hadoop skaitītāji ir līdzīgi žurnāla ziņojuma ievietošanai kartes kodā vai samazināšanai. Šī informācija varētu būt noderīga, lai diagnosticētu problēmu MapReduce darba apstrādē.

Parasti šie skaitītāji Hadoopā ir definēti programmā (kartē vai samazina) un tiek palielināti izpildes laikā, kad notiek noteikts notikums vai nosacījums (specifisks šim skaitītājam). Ļoti labs Hadoop skaitītāju pielietojums ir derīgu un nederīgu ierakstu izsekošana no ievades datu kopas.

MapReduce skaitītāju veidi

Būtībā ir divu veidu MapReduce skaitītāji

    1. Hadoop iebūvētie skaitītāji: ir daži iebūvēti Hadoop skaitītāji, kas pastāv katram darbam. Zemāk ir iebūvētas skaitītāju grupas-
      • MapReduce Task Counters - apkopo uzdevumam raksturīgu informāciju (piemēram, ievades ierakstu skaitu) tā izpildes laikā.
      • FileSystem Counters - apkopo informāciju, piemēram, uzdevuma nolasīto vai rakstīto baitu skaitu
      • FileInputFormat Counters - apkopo informāciju par vairākiem baitiem, kas nolasīti, izmantojot FileInputFormat
      • FileOutputFormat Counters - apkopo informāciju par vairākiem baitiem, kas rakstīti, izmantojot FileOutputFormat
      • Darba skaitītāji - šos skaitītājus izmanto JobTracker. Viņu apkopotā statistika ietver, piemēram, darbu uzsākto uzdevumu skaitu.
    2. Lietotāja noteikti skaitītāji

Papildus iebūvētajiem skaitītājiem lietotājs var definēt pats savus skaitītājus, izmantojot līdzīgas funkcijas, kuras nodrošina programmēšanas valodas. Piemēram, Java valodā “enum” tiek lietots, lai definētu lietotāja definētos skaitītājus.

Skaitītāju piemērs

MapClass ar Counters piemērs, lai uzskaitītu trūkstošo un nederīgo vērtību skaitu. Šajā apmācībā izmantotais ievades datu fails Mūsu ievades datu kopa ir CSV fails SalesJan2009.csv

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"));}}}

Virs koda fragmenta parādīts skaitītāju ieviešanas piemērs Hadoop Map Reduce.

Šeit SalesCounters ir skaitītājs, kas definēts, izmantojot “enum” . To izmanto, lai uzskaitītu PĀRTRAUKŠOS un NEDERĪGUS ievades ierakstus.

Ja lauka “valsts” lauka garums ir nulle, koda fragmentā trūkst tā vērtības un tādējādi tiek palielināts atbilstošais skaitītājs SalesCounters.MISSING .

Pēc tam, ja lauks “pārdošanas” sākas ar “, tad ieraksts tiek uzskatīts par NEDERĪGU. To norāda ar pieaugošu skaitītāju SalesCounters.INVALID.