Mis on Mapreduce'is liitumine?
Mapreduce Join -operatsiooni kasutatakse kahe suure andmekogumi ühendamiseks. See protsess hõlmab aga reaalse liitumistoimingu sooritamiseks palju koodide kirjutamist. Kahe andmekogumi ühendamine algab iga andmekogumi suuruse võrdlemisega. Kui üks andmekogum on teise andmekogumiga võrreldes väiksem, jaotatakse väiksem klastri igale andmesõlmele väiksem andmekogum.
Kui MapReduce'i liitumine on jaotatud, kasutab Mapper või Reducer väiksemat andmekogumit suurest andmekogumist kirjete otsimiseks ja seejärel ühendab need kirjed väljundikirjete moodustamiseks.
Selles õpetuses saate teada
- Mis on MapReduce'i liitumine?
- Liitumise tüübid
- Kahe andmekomplekti ühendamine: MapReduce näide
- Mis on loendur MapReduce'is?
- MapReduce loendurite tüübid
- Loendurite näide
Liitumise tüübid
Sõltuvalt tegeliku liitumise kohast klassifitseeritakse liitumised Hadoopis
1. Kaardipoolne ühendamine - kui ühendaja teostab kaardistaja, nimetatakse seda kaardipoolseks ühenduseks. Seda tüüpi ühendamine toimub enne, kui kaardifunktsioon andmeid tegelikult tarbib. On kohustuslik, et iga kaardi sisend oleks sektsiooni kujul ja oleks järjestatud. Samuti peab olema võrdne arv partitsioone ja see tuleb sortida liitmisklahvi järgi.
2. Reduktsioonipoolne ühendamine - kui ühendamise teostab reduktor, nimetatakse seda reduktsioonipoolseks ühenduseks. Selles liitumises ei ole vaja andmekogumit struktureeritud kujul (või partitsioonidena).
Siin väljastab kaardi külgprotseduur mõlema tabeli liitumisvõtme ja vastavad kogumid. Selle töötlemise tulemusena satuvad kõik sama liitumisvõtmega rühmad samasse reduktorisse, mis seejärel ühendab kirjad sama liitumisvõtmega.
Hadoopi liitumiste üldine protsessivoog on esitatud allpool skeemil.

Kahe andmekomplekti ühendamine: MapReduce näide
Kahes erinevas failis on kaks andmehulka (näidatud allpool). Key Dept_ID on mõlemas failis tavaline. Nende failide ühendamiseks on eesmärk kasutada MapReduce Join'i


Sisend: sisendandmekogum on txt-fail, DeptName.txt & DepStrength.txt
Laadige sisendfailid alla siit
Veenduge, et Hadoop oleks installitud. Enne MapReduce Join tegeliku protsessi näitega alustamist muutke kasutaja nimeks 'hduser' (ID-d kasutatakse Hadoopi seadistamise ajal, saate üle minna oma Hadoopi seadistamise ajal kasutatavale kasutajatunnusele).
su - hduser_
Samm 1) Kopeerige ZIP-fail teie valitud asukohta
Samm 2) Pakkige ZIP-fail lahti
sudo tar -xvf MapReduceJoin.tar.gz
Samm 3) Minge kataloogi MapReduceJoin /
cd MapReduceJoin/
4. samm. Käivitage Hadoop
$HADOOP_HOME/sbin/start-dfs.sh
$HADOOP_HOME/sbin/start-yarn.sh
Samm 5) DeptStrength.txt ja DeptName.txt on sisendfailid, mida kasutatakse selle MapReduce Join näidisprogrammi jaoks.
Need failid tuleb kopeerida HDFS-i, kasutades allpool olevat käsku
$HADOOP_HOME/bin/hdfs dfs -copyFromLocal DeptStrength.txt DeptName.txt /
Samm 6) Käivitage programm alloleva käsu abil
$HADOOP_HOME/bin/hadoop jar MapReduceJoin.jar MapReduceJoin/JoinDriver/DeptStrength.txt /DeptName.txt /output_mapreducejoin
Samm 7) Pärast käivitamist salvestatakse väljundfail (nimega "osa-00000") HDFS-i kataloogi / output_mapreducejoin
Tulemusi saab näha käsurea liidese abil
$HADOOP_HOME/bin/hdfs dfs -cat /output_mapreducejoin/part-00000
Tulemusi saab näha ka veebiliidese kaudu
Nüüd vali 'Sirvi failisüsteemi' ja navigeeri üles / output_mapreducejoin
Avatud osa-r-00000
Tulemused on näidatud
MÄRKUS. Pange tähele, et enne järgmise programmi käivitamist peate kustutama väljundkataloogi / output_mapreducejoin
$HADOOP_HOME/bin/hdfs dfs -rm -r /output_mapreducejoin
Alternatiiv on kasutada väljundkataloogi jaoks teist nime.
Mis on loendur MapReduce'is?
Counter sisse MapReduce on kasutatav mehhanism kogumise ja mõõtmise statistilise info MapReduce töökohti ja üritusi. Loendurid jälgivad MapReduce'is erinevat tööstatistikat, nagu toimingute arv ja toimingu edenemine. Loendureid kasutatakse MapReduce'i probleemide diagnoosimiseks.
Hadoopi loendurid sarnanevad logisõnumi lisamisega kaardi koodi või vähendamiseks. See teave võib olla kasulik MapReduce'i tööprotsessi probleemi diagnoosimiseks.
Tavaliselt on need Hadoopi loendurid määratletud programmis (kaardistage või vähendage) ja neid suurendatakse käivitamise ajal, kui ilmneb konkreetne sündmus või tingimus (sellele loendurile omane). Hadoopi loendurite väga hea rakendus on kehtivate ja kehtetute kirjete jälgimine sisendandmekogumist.
MapReduce loendurite tüübid
MapReduce loendureid on põhimõtteliselt kahte tüüpi
- Hadoopi sisseehitatud loendurid: töö jaoks on olemas mõned sisseehitatud Hadoopi loendurid. Allpool on sisseehitatud loendurigrupid-
- MapReduce Task Counters - kogub selle täitmise ajal ülesandepõhist teavet (nt sisendkirjete arv).
- FileSystemi loendurid - kogub teavet, näiteks ülesande poolt loetud või kirjutatud baitide arv
- FileInputFormati loendurid - kogub FileInputFormati kaudu loetud baitide arvu teavet
- FileOutputFormati loendurid - kogub teavet mitme faili kohta, mis on kirjutatud FileOutputFormati kaudu
- Tööloendurid - neid loendureid kasutab JobTracker. Nende kogutud statistika sisaldab näiteks töö jaoks käivitatud ülesannete arvu.
- Kasutaja määratud loendurid
Lisaks sisseehitatud loenduritele saab kasutaja oma loendurid määratleda, kasutades programmeerimiskeelte pakutavaid sarnaseid funktsioone. Näiteks kasutatakse Java-s kasutaja määratletud loendurite määratlemiseks sõna „enum”.
Loendurite näide
MapClassi näide loenduritega puuduvate ja kehtetute väärtuste arvu lugemiseks. Selles õpetuses kasutatud sisendandmete fail Meie sisendandmete komplekt on CSV-fail 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"));}}}
Koodijupi kohal on loendurite rakenduse näide rakenduses Hadoop Map Reduce.
Siin on SalesCounters loendur, mis on määratletud 'enum' abil . Seda kasutatakse Puuduvate ja KEHTETUD sisendkirjete loendamiseks .
Kui väljal „riik” on koodilõigus null pikkust, puudub selle väärtus ja seega suureneb vastav loendur SalesCounters.MISSING .
Järgmine, kui väli 'müük' algab tähega ", loetakse kirje KEHTETU. Seda näitab kasvav loendur SalesCounters.INVALID.