Kio Estas La Altnivela Hadoop MapReduce Ĉefaĵoj?

La baza MapReduce programaro klarigas la laborajn fluajn detalojn. Sed ĝi ne kovras la realajn laborantajn detalojn en la MapReduce programara kadro. Ĉi tiu artikolo klarigos la datuman movadon tra la MapReduce arkitekturo kaj la API vokas uzita fari la realan pretigon. Ni ankaŭ diskutos la customization teknikoj kaj funkcio superreganta por apliko specifaj bezonoj.

La altnivela MapReduce ĉefaĵoj priskribas la ekzekuton kaj pli malaltaj nivelaj detaloj. En normala MapReduce programaro, Nur scianta APIs kaj ilian uzadon estas sufiĉa skribi aplikojn. Sed internaj detaloj de MapReduce estas devas kompreni la realajn laborantajn detalojn kaj akira konfido.

Nun lasita nin diskuti antaŭenirita ĉefaĵojn en la sekvantaj sekcioj.

Laŭmendaj Tipoj (Datumoj): Por uzanto provizis Mapper kaj Reducer, Hadoop MapReduce kadro ĉiam uzi tajpita datumon. La datumo kiu pasas tra Mappers kaj Reducers estas entenita en Java objektoj.

  • Writable Fasado: La Writable fasado estas unu el la plej gravaj fasadoj. La objektoj kiu povas esti marshaled al/de dosieroj kaj super la reto uzas ĉi tiun fasadon. Hadoop ankaŭ uzas ĉi tiun fasadon elsendi datumon en serialized formo. Kelkaj de la klasoj kiu efektivigas Writable fasado estas menciita sub
  1. Teksta klaso(Ĝi entenas Ŝnuran datumon)
  2. LongWritable
  3. FloatWritable
  4. IntWritable
  5. BooleanWritable

La laŭmenda datuma tipo ankaŭ povas esti farita de efektiviganta Writable Fasado. Hadoop estas kapabla elsendi ajnan laŭmendan datuman tipon (Kiu konvenas vian postulon) Kiu efektivigas Writable fasado.

Sekvanta estas la Writable fasado kiu estas havanta du metodojn readFields kaj skribi. La unua metodo (ReadFields) Initializes la datumo de la objekto de la datumo enhavita en la ‘je’ Binara rivereto. La dua metodo (Skribi) Estas uzita rekonstrui la objekton al la binara rivereto ‘ekstere’. La plej grava kontrakto de la tuta procezo estas ke la ordo de legita kaj skribi al la binara rivereto estas sama.

Listing1: Montranta Writable fasado

Publika fasado Writable {

Malplena readFields(DataInput je);

Malpleno skribas(DataOutput ekstere);

}

Laŭmendaj Tipoj (Kerna): En la antaŭa sekcio ni diskutis pri la laŭmenda datuma tipo renkonti aplikon specifa datuma postulo. Ĝi administras la valoran parton nur. Nun ni ankaŭ diskutos pri la laŭmenda kerna tipo. En Hadoop MapReduce, La Reducer pretigas la ŝlosilon en ordigita ordon. Do la laŭmendaj kernaj tipaj bezonoj efektivigi la fasadon vokis WritableComparable. La kernaj tipoj ankaŭ devus efektivigi hashCode ().

Sekvanta estas montranta WritableComparable Fasado. Ĝi reprezentas Writable Kiu estas ankaŭ Komparebla.

Listing2: Montranta WritableComparable Fasado

Publika fasado WritableComparable<T>

Etendas Writable, Komparebla<T>

Kiel uzi Laŭmendajn Tipojn: Ni jam diskutis laŭmendan valoron kaj kernaj tipoj kiu povas esti pretigita de Hadoop. Nun ni diskutos la mekanismon por ke Hadoop povas kompreni ĝin. La JobConf objekto (Kiu difinas la laborpostenon) Havas du metodojn vokis SetOutputKeyClass () Kaj SetOutputValueClass () Kaj ĉi tiuj metodoj estas uzita kontroli la valoron kaj kernaj datumaj tipoj. Se la Mapper produktoj malsamaj tipoj kiu ne egalas Reducer tiam JobConf’s SetMapOutputKeyClass () Kaj SetMapOutputValueClass () Metodoj povas esti uzita fiksi la enigan tipon kiel atendita de la Reducer.

Pli rapida Elfaro: La defaŭlta ordiganta procezo estas iom pli malrapida kiel ĝi unue legas la kernan tipon de rivereto tiam analizi la byte rivereto (Uzanta ReadFields() Metodo) Kaj tiam fine voki la CompareTo () Metodo de la kerna klaso. La pli rapida alproksimiĝo estus decidanta ordonantan inter la ŝlosiloj de kontrolanta la byte riveretoj sen analizanta la tutan datuman aron. Efektivigi ĉi tiun rapidan komparan mekanismon, WritableComparator Klaso povas esti etendita kun komparilo specifa al viaj datumaj tipoj. Sekvanta estas la klasa deklaro.

Listing3: Montranta WritableComparator Klaso

Publika klaso WritableComparator

Etendas Objekton

Efektivigas RawComparator

Tiel laŭmenda datumo kaj kernaj tipoj permesas uzi pli altan nivelan datumon strukturo en Hadoop kadro. En praktika Hadoop apliko laŭmenda datuma tipo estas unu el la plej gravaj postuloj. Do ĉi tiu ĉefaĵo permesas uzanta laŭmendan writable tipoj kaj provizas gravan elfaran plibonigon.

Enigaj Formatoj: La InputFormat Estas unu el la plej gravaj fasadoj kiu difinas la enigan specifon de MapReduce laborposteno. Hadoop proponas malsamajn tipojn de InputFormat Por interpreto de diversaj tipoj de eniga datumo. La plej ofta kaj nerepago estas TextInputFormat Kiu estas uzita legi liniojn de teksta dosiero. Simile SequenceFileInputFormat Estas uzita legi binarajn dosierajn formatojn.

La fundamenta tasko de InputFormat Estas legi la datumon de la eniga dosiero. Efektivigo de kutimo InputFormat Estas ankaŭ ebla kiel por via aplika bezono. Por nerepago TextInputFormat Efektivigo la ŝlosilo estas la byte ofseto de la linio kaj valoro estas la enhavo de la linio finita de ‘n’ Karaktero. Por laŭmenda efektivigo, La apartigilo povas esti ajna karaktero kaj la InputFormat Analizos sekve.

La alia laborposteno de InputFormat Estas fendi la enigan dosieron (Datuma fonto) En fragmentoj kiu estas la enigo mapi taskojn. Ĉi tiuj fragmentaj/fendoj estas personigita en la okazoj de InputSplit fasado. La eniga datuma fonto povas esti io ajn kiel datumara tablo, Xml dosiero aŭ kelkaj alia dosiero. Do la fendo estos elfaris bazita sur la aplika postulo. La plej grava punkto estas ke la fenda operacio devus esti rapida kaj rabate.

Post kiam fendanta la dosierojn, Legita operacion de individuaj fendoj estas tre gravaj. La RecordReader estas priresponda por leganta la datumon de la fendoj. La RecordReader Devus esti efika sufiĉa pritrakti la fakton ke la fendoj ne ĉiam finas bonorde fine de linio. La RecordReader Ĉiam legas kasregistrilo la fino de la linio eĉ se ĝi transiras la teorian finon de fendo. Ĉi tiu ĉefaĵo estas tre grava eviti perdiĝanta de rekordoj kiu eble transirus la InputSplit limoj.

  • Laŭmenda InputFormat: En bazaj aplikoj InputFormat Estas uzita rekte. Sed por kutimo legis la plej bonan vojon estas al subklaso FileInputFormat. Ĉi tiu abstrakta klaso provizas funkciojn manipuli dosierojn kiel por aplika postulo. Por laŭmenda analizanta, La GetRecordReader () Metodo devas esti overridden kiu revenas okazon de RecordReader. Tio ĉi RecordReader Estas la priresponda por leganta kaj analizanta.
  • Sinsekva Fonto (Datumoj): La InputFormat priskribas du aferojn, Unue estas la prezento de datumo al la Mapper kaj la sekundo estas la datuma fonto. Plejparto de la efektivigoj estas bazita sur la FileInputFormat, Kie la datuma fonto estas loka dosiera sistemo de HDFS (Hadoop Distribuita Dosieran Sistemon).Sed por aliaj tipoj de datumaj fontoj, Laŭmenda efektivigo de InputFormat estas postulita. Ekzemple, NoSQL datumaro kiel HBase provizas TableInputFormat Por leganta datumon de datumaraj tabloj. Do la datuma fonto povas esti io ajn kiu povas esti pritraktita de laŭmenda efektivigo.

Eligita Formatojn: La OutputFormat Estas priresponda por skribi operacion. Ni jam diskutis tion InputFormat Kaj RecordReader Fasadoj estas prirespondaj por leganta datumon en MapReduce programo. Post kiam pretiganta la datumon, La skribi operacion al la konstanta tenado estas administrita de OutputFormat Kaj RecordWriter Fasadoj. La defaŭlta formato estas TextOutputFormat Kiu skribas la kernajn/valorajn parojn kiel ŝnuroj al la produktada dosiero. La alia produktada formato estas SequenceFileOutputFormat Kaj ĝi tenas la datumon en binara formo. Ĉiuj ĉi tiu klasa uzo Skribi () Kaj ReadFields () Metodoj de Writable Klasoj.

La OutputFormat Efektivigaj bezonoj esti personigita skribi datumon en laŭmenda formato. La FileOutputFormat Abstrakta klaso devas esti etendita fari la customization. La JobConf.SetOutputFormat () Metodo devas esti modifita uzi malsaman laŭmendan formaton.

Datumo Partitioning: Partitioning povas esti difinita kiel procezo kiu determinas kiun Reducer okazo ricevos kiun meza kerna/valoro paro. Ĉiu Mapper devus determini la cellokon Reducer por ĉiuj ĝiaj produktadaj kernaj/valoraj paroj. La plej grava punkto estas ke pro tio ke ajna ŝlosilo ĉiaokaze de ĝia Mapper okazo, La celloka septo estas la sama. Por elfara kialo Mappers neniam komuniki kun ĉiu alia al la septo de aparta ŝlosilo.

La Partitioner Fasado estas uzita de la Hadoop sistemo determini la cellokan septon por kerna/valora paro. La nombro de septoj devus egali kun la nombro de redukti taskojn. La MapReduce kadro determinas la nombron de septoj kiam laborpostenaj komencoj.

Sekvanta estas la subskribo de Partitioner fasado.

Enlistiganta 4: Montranta Partitioner fasado

Publika fasado Partitioner<K2,V2>

Etendas JobConfigurable

Konkludo: En ĉi tiu diskuto ni kovris la plej gravan Hadoop MapReduce ĉefaĵoj. Ĉi tiuj ĉefaĵoj estas helpemaj por customization celo. En praktika MapReduce aplikoj, La defaŭlta efektivigo de APIs ne havas multe da uzadon. Prefere, La laŭmendaj ĉefaĵoj (Kiu estas bazita sur la senŝirma APIs) Havas gravan efikon. Ĉiuj ĉi tiuj customizations povas esti farita facile unufoje la konceptojn estas klara. Hope ĉi tiu artikolo estos helpema por komprenanta la altnivelajn ĉefaĵojn kaj ilia efektivigo.

?

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

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share