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ā.

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


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
- 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.
- 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.