Kokie Išplėstinė Hadoop MapReduce Įranga?

The basic MapReduce programming explains the work flow details. But it does not cover the actual working details inside the MapReduce programming framework. Šiame straipsnyje bus paaiškinti duomenų judėjimą per MapReduce architektūros ir API naudojamas daryti faktinį apdorojimo. Taip pat aptarsime tinkinimo metodus ir funkcionuoja užvažiuoti Application konkrečius poreikius.

Išplėstinė MapReduce funkcijos aprašo vykdymą ir žemesnio lygio detales. Įprastu MapReduce programavimo, tik žinant API ir jų naudojimas yra pakankamas, kad būtų rašyti paraiškas. Bet vidinis detalės MapReduce yra būtina suprasti tikruosius darbo detales ir įgyti pasitikėjimą.

Dabar aptarkime tolesniuose skyriuose pažangių funkcijų.

Individualizuotos tipai (Data): Dėl Viskas numatyta Mapper ir Reducer, Hadoop MapReduce sistema visada naudokite įvedėte duomenis. Duomenis, kurie eina per prie atvaizdavimo ir Reduktoriai saugomi Java objektų.

  • rašyti sąsaja: Rašomosios sąsaja yra vienas iš svarbiausių sąsajų. Objektai, kurie gali būti marshaled į / iš failų ir per tinklo naudojimo Ši sąsaja. Hadoop taip pat naudoja šią sąsają perduoti duomenis serializowanej formos. Kai kurie iš klasių, kurios įgyvendinamos rašyti sąsaja yra nurodyti žemiau
  1. tekstas klasė(Jame kaupiasi String duomenis)
  2. LongWritable
  3. FloatWritable
  4. IntWritable
  5. BooleanWritable

Šis paprotys duomenų tipas gali būti padaryta įgyvendinant rašyti interface. Hadoop gali perduoti bet kokį užsakymą duomenų tipą (kuris tinka jūsų reikalavimus) kuri įgyvendina rašyti sąsaja.

Žemiau yra Įrašomas sąsaja, kuri turi du metodus readFields ir rašyti. Pirmasis metodas (readFields) inicijuoja objekto iš duomenų esantys duomenys 'į’ dvejetainis srautas. Antrasis būdas (rašyti) yra naudojamas atkurti objektą dvejetainiu srautas "out". Svarbiausias sutarties viso proceso yra tai, kad skaityti ir rašyti į dvejetainiu sraute kad yra tas pats.

Listing1: Rodoma rašyti sąsaja

visuomenės sąsaja Įrašomas {

void readFields(ŽALIAVOS į);

negaliojančiu rašyti(duomenų IŠEIGA iš);

}

Individualizuotos tipai (raktas): Ankstesniame skyriuje aptarėme apie užsakymą duomenų tipas turi atitikti pagal konkrečią duomenų reikalavimą. Ji valdo vertės dalį tik. Dabar mes taip pat diskutuos apie užsakymą rakto tipas. Be Hadoop MapReduce, Reduktorius apdoroja į rūšiuotų kad raktą. Taigi paprotys rakto tipas turi įgyvendinti sąsaja vadinama WritableComparable. Pagrindinės rūšys taip pat turėtų įgyvendinti hashCode ().

Toliau rodo WritableComparable interface. Tai reiškia rašyti kuris taip pat yra Palyginamas.

Listing2: Rodoma WritableComparable interface

visuomenės sąsaja WritableComparable<T>

tęsiasi Įrašomas, Palyginamas<T>

Kaip naudotis Custom Types: Mes jau aptarė muitinė vertė ir pagrindiniai tipai, kurie gali būti tvarkomi Hadoop. Dabar aptarsime mechanizmą taip, kad Hadoop gali ją suprasti. JobConf objektas (kuris apibrėžia darbą) turi du metodus, vadinamų setOutputKeyClass () ir setOutputValueClass () ir šie būdai yra naudojami siekiant kontroliuoti vertę ir pagrindines duomenų tipai. Jei mapper gamina įvairių tipų, kurie nesutampa reduktorius tada JobConf s setMapOutputKeyClass () ir setMapOutputValueClass () metodai gali būti naudojamas, norint nustatyti įvesties tipas, kaip tikimasi sumažinti skirtumą,.

greičiau spektaklio: Pagal nutylėjimą rūšiavimas procesas yra šiek tiek lėčiau, nes ji pirmą kartą skaito pagrindinį tipą upelio tada išanalizuoti baitų srautas (naudojant readFields() metodas) ir galiausiai skambinti palyginti su () metodas iš pagrindinių klasės. Kuo greičiau požiūris būtų sprendžiamas tarp klavišų išdėstymą: patikrinti baitų srautus be analizuojant visą duomenų rinkinį. Siekiant įgyvendinti šį greičiau palyginimo mechanizmo, WritableComparator klasė gali būti pratęstas tam tikra lyginamojo savo duomenų tipus. Po yra klasės deklaracija.

Listing3: Rodoma WritableComparator klasė

visuomenės klasė WritableComparator

tęsiasi Object

įgyvendina RawComparator

Taigi custom duomenys ir pagrindiniai tipai leidžia naudoti aukštesnio lygio duomenų struktūrą Hadoop sistemos. Praktinio Hadoop paraiškos užsakymą duomenų tipas yra vienas iš svarbiausių reikalavimų. Taigi ši funkcija leidžia naudoti pasirinktinį perrašymo rūšių ir suteikia didelį našumą.

įvesties formatai: The InputFormat yra vienas iš svarbiausių sąsajas, kurias apibrėžia įėjimo specifikacija yra MapReduce darbą. Hadoop siūlo įvairių tipų InputFormat aiškinimo įvairių tipų įvesties duomenų. Dažniausiai ir nutylėjimą yra TextInputFormat kuris yra naudojamas skaityti linijas iš tekstinio failo. Similarly SequenceFileInputFormat naudojamas skaityti dvejetainių failų formatus.

Pagrindinis uždavinys InputFormat yra skaityti duomenis iš įvesties failo. Įgyvendinimas pagal užsakymą InputFormat yra taip pat įmanoma, kaip už savo paraiškos poreikį. už įsipareigojimų nevykdymą TextInputFormat įgyvendinimas svarbiausia yra baitų poslinkis linijos ir vertė yra linijos, pasibaigusią " n turinys’ character. Pagal užsakymą įgyvendinimo, separatorius gali būti bet koks simbolis ir InputFormat atitinkamai apdoroti.

Kitas darbą InputFormat yra padalinti failo įvedimo (duomenų šaltinis) į fragmentus, kurie yra įvesti į žemėlapį užduotis. Šie fragmentai / skyla jie yra aplieti iš InputSplit sąsaja atvejais. Įvesties duomenų šaltinis gali būti bet kas kaip duomenų bazės lentelės, XML failą ar kitą failą. Todėl padalijimas būti atliekamas remiantis paraiškos reikalavimo. Svarbiausias dalykas yra tai, kad padalinti operacija turėtų būti greitai ir nebrangiai.

Atskyrus failus, skaityti operaciją iš individualios skyla yra labai svarbūs. RecordReader yra atsakingas už skaityti duomenis iš įskilimų. The RecordReader turėtų būti pakankamai efektyvus dirbti tai, kad skyla ne visada baigti tvarkingai tuo eilutės pabaigoje. The RecordReader visada skaito iki eilutės pabaigos, net jei jis kerta teorinį galą dalimis. Ši funkcija yra labai svarbi siekiant išvengti trūkstamų įrašų, kurie gali kirto InputSplit ribas.

  • Pasirinktinis InputFormat: Be pagrindinių programų InputFormat yra naudojamas tiesiogiai. Bet pagal užsakymą skaityti geriausias būdas yra poklasio FileInputFormat. Ši abstrakti klasė suteikia funkcijas manipuliuoti failus kaip vienam kartui reikalavimo. Pagal užsakymą apdorojant, the getRecordReader () metodas turi būti nepaisoma, kuri grąžina instancija RecordReader. tai RecordReader yra skaityti ir apdorojant atsako.
  • pakaitinis Šaltinis (Data): InputFormat apibūdina du dalykus, Pirmasis yra duomenų pateikimas į Mapper ir antra yra duomenų šaltinis. Dauguma realizacijos yra grindžiamas FileInputFormat, kai duomenų šaltinis yra vietos failų sistema HDF (Hadoop Distributed File System).Bet ir kitų tipų duomenų šaltinių, užsakymą įgyvendinimas InputFormat reikalingas. For example, NoSQL duomenų kaip HBase suteikia TableInputFormat skaityti duomenis iš duomenų bazės lentelių. Taigi duomenų šaltinis gali būti nieko, kas gali būti tvarkomi pagal užsakymą įgyvendinimo.

išvesties formatai: The OutputFormat yra atsakingas už rašymo operacijos. Mes jau aptarėme, kad InputFormat ir RecordReader sąsajos yra atsakinga už skaitymą duomenis į MapReduce programos. Po duomenų tvarkymą, rašyti operacijos į nuolatinio saugojimo valdo OutputFormat ir RecordWriter interfaces. The default format is TextOutputFormat which writes the key/value pairs as strings to the output file. The other output format is SequenceFileOutputFormat and it keeps the data in binary form. All these classes use rašyti () ir readFields () methods of rašyti classes.

The OutputFormat implementation needs to be customized to write data in a custom format. The FileOutputFormat abstract class must be extended to make the customization. The JobConf.setOutputFormat () method must be modified to use different custom format.

Data Partitioning: Partitioning can be defined as a process that determines which Reducer instance will receive which intermediate key/value pair. Each Mapper should determine the destination Reducer for all its output key/value pairs. The most important point is that for any key regardless of its Mapper instance, the destination partition is the same. For performance reason Mappers never communicate with each other to the partition of a particular key.

The Partitioner sąsaja yra naudojama Hadoop sistemą ir nustatyti paskirties disko rakto / reikšmės poros. Pertvarų skaičius turi sutapti su sumažinti užduočių skaičių. MapReduce sistema nustato pertvaros numerį, kai darbas prasideda.

Po yra programos žymėjimo sąsaja parašo.

Listing 4: Rodoma programos žymėjimo sąsaja

visuomenės sąsaja programos žymėjimo<K2 V2>

tęsiasi JobConfigurable

Išvada: Šioje diskusijoje mes apėmė svarbiausius Hadoop MapReduce funkcijų. These features are helpful for customization purpose. In practical MapReduce applications, the default implementation of APIs does not have much usage. Rather, the custom features (which are based on the exposed APIs) have significant impact. All these customizations can be done easily once the concepts are clear. Hope this article will be helpful for understanding the advanced features and their implementation.

 

Tagged on: , ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share