Kio estas Printempo por Apache Hadoop?

Superrigardo: Printempo Estas unu el la ĝenerale uzita kadrojn en entreprenaj aplikoj evoluado. Printempo Havas malsamajn erojn kiel Printempa ORM, Printempa JDBC ktp. subtenas malsamajn ĉefaĵojn. Printempo por Apache Hadoop estas la kadro subteni aplikan konstruaĵon kun Hadoop eroj kiel HDFS, MapReduce kaj Hive ktp. Printempo Provizas APIs labori kun ĉiuj ĉi tiuj eroj. Salti ankaŭ subtenas integrigon de Hadoop kun aliaj Printempaj ekosistemaj projektoj por vera viva apliko evoluado. En ĉi tiu artikolo ni diskutos la uzadon de Printempo Por Apache Hadoop kadroj.

Enkonduko:
Apache Hadoop estas malferma fonta softvara kadro, Kiu estas uzita enteni kaj proceza datumo-aroj de pli granda volumo. Printempo estas ankaŭ malferma fonta kadro, Kiu estas ĝenerale uzita en Java/J2ee aplikoj. La dependeca injekto de printempo (DI) Aŭ inversion de kontrolo (IO) Mekanismo fariĝis populara alternativo al la Entrepreno Java Faboj (Aŭ EJB) Modelo. Printempo havas la avantaĝon de estanta fleksebla sufiĉa esti facile ŝtopita kun ajna alia evoluada kadro. Uzanta ĉi tiun avantaĝon de printempo, Ni povas ŝtopi ĝin kun Apache Hadoop helpi nin akiri la maksimuman utilon de ĉiu de ĉi tiuj du kadroj.

Akiranta Komencita:
En ĉi tiu sekcio ni parolos pri kiel krei Hadoop MapReduce Job uzanta Printempon. Tio ĉi okupas la sekvantajn paŝojn –

  • Paŝo 1 – Akiri la postulatajn dependecojn uzanta Fakulon – Kiel ni scias fakulon estas tre dependa sur la pom.Xml dosiero, Ni faras la sekvantajn enirojn en nia pom.Xml dosiero. Ĉi tiuj dependecaj eniroj estas por Hadoop kerno kaj Printempa kadro.

Listing1: Ekzempla konfiguracio eniroj en pom.Xml dosiero

[Kodo]

< !– Printempa Datumo Apache Hadoop — >
< Dependeco >
< GroupId > Org.Springframework.Datumo </ GroupId >
< ArtifactId > Printempo-datumo-hadoop </ ArtifactId >
< Versio > 1.0.0.ELKARCERIGO </ Versio >
< /Dependeco >
< !– Apache Hadoop Kerno –- >
< Dependeco >
< GroupId > Org.Apache.Hadoop </ GroupId >
< ArtifactId > Hadoop-kerno </ ArtifactId >
< Versio > 1.0.3 </Versio >
</Dependeco>

[/ Kodo]

  • Paŝo 2 – Krei la mapper ero – Kiel ni scias mapper ero estas uzita rompi la realan problemon en pli malgrandaj eroj. Ĉi tiuj pli malgrandaj eroj tiam fariĝi pli facila solvi. Ni povas havi nian propran personigis mapper ero de etendanta la Apache mapo reduktas Mapper klaso. Ni devas superregi la mapan metodon de ĉi tiu klaso. La mapper klaso atendas la sekvantan kvar parametroj –

Por enigo: Sekvanta parametrojn estas por eniga ŝlosilo kaj valoro

  • KEYIN Ĉi tiu parametro priskribas la kernan tipon kiu estas provizita kiel enigo al la mapper ero.
  • VALUEIN Ĉi tiu parametro priskribas la tipon de la valoro kiu estas provizita kiel enigo al la mapper ero.

Por produktado: Sekvanta parametrojn estas por produktada ŝlosilo kaj valoro

  • KEYOUTĈi tiu parametro priskribas la tipon de la ekstere metita kernan parametron de la mapper ero.
  • VALUEOUTĈi tiu parametro priskribas la tipon de la produktada valoro de la mapper ero.

Ĉiu de ĉi tiuj parametroj devas efektivigi la Writable Fasado. En la donita ekzemplon, Ni uzis nia mapper legi la enhavojn de dosiero unu linio samtempe kaj prepari kernan-valoraj paroj de ĉiu linio. Nia efektivigo de la mapa metodo elfaras la sekvantajn taskojn –

  • Unue, Fendi ĉiun ununuran linion en vortoj
  • Due, Iterate tra ĉiu ununura vorto kaj elpreni nek ĉiuj la Unicode karakteroj kiu estas nek leteroj nek karakteroj.
  • Tria, Konstrui kernan-valora paro uzanta la skribi metodon de la Kunteksto Klasifiki kiun estas kongrua kun la atendata produktada ŝlosilo-valora paro.

Listing2: Provi personigita Mapper klaso

[Kodo]

Publika klaso MyWordMapper etendas Mapper<LongWritable, Teksto, Teksto, IntWritable> {
Privata Teksto myword = nova Teksto();

@Superregi
Protektis malplenan mapon(LongWritable ŝlosilo, Teksta valoro, Kunteksta kunteksto) Ĵetas IOException, InterruptedException {
Ŝnura linio = valoro.ToString();
StringTokenizer lineTokenz = nova StringTokenizer(Linio);
Dum (LineTokenz.HasMoreTokens()) {
Laĉi purigadita_datumon = removeNonLettersNonNumbers(LineTokenz.NextToken());
Myword.Aro(Purigadita_datumon);
Kunteksto.Skribas(Myword, Nova IntWritable(1));
}
}

/**
* Anstataŭigi ĉiuj Unicode karakteroj kiu estas nek nombroj nek leteroj kun senhoma ŝnuro.
* @Param originalo, Ĝi estas la originala ŝnuro
* @Reveni ŝnuran objekton kiu enhavas nurajn leterojn kaj nombrojn
*/
Privata Ŝnuro removeNonLettersNonNumbers (Ŝnura originalo) {
Revena originalo.ReplaceAll(“[^\P{L}\\P{N}]”, “”);
}
}

[/Kodo]

Paŝo 3 – Krei la Reducer Ero – Reducer estas ero kiu forigas la nedeziratajn mezajn valorojn kaj avanulojn nur tiuj kernaj valoraj paroj kiu estas rilata. Havi nia personigita reducer, Nia klaso devus etendi la Reducer Klaso kaj super rajdi la redukti metodon. La reducer klaso atendas la sekvantan kvar parametroj.

Por enigo: Sekvanta parametrojn estas por eniga ŝlosilo kaj valoro

  • KEYIN Ĉi tiu parametro priskribas la kernan tipon kiu estas provizita kiel enigo al la mapper ero.
  • VALUEIN Ĉi tiu parametro priskribas la tipon de la valoro kiu estas provizita kiel enigo al la mapper ero.

Por produktado: Sekvanta parametrojn estas por produktada ŝlosilo kaj valoro

  • KEYOUTĈi tiu parametro priskribas la tipon de la ekstere metita kernan parametron de la mapper ero
  • VALUEOUTĈi tiu parametro priskribas la tipon de la produktada valoro de la mapper ero.

Dum efektiviganta nin devas fari certe ke la datatype de la ‘keyin' kaj ‘keyout' parametroj estas samaj. Ankaŭ la ‘valuein' kaj valueout' parametroj devus esti de sama tipo. Nia efektivigo de la redukti metodon elfaras la sekvantajn paŝojn –

  • Unue, Kontroli ke la eniga ŝlosilo enhavas la dezirita vorton.
  • Due, Se la supra paŝo estas vera, Akiri la nombron de okazoj de la vorto.
  • Tria, Konstrui novan kerna-valora paro de vokanta la skribi metodon de la reducer klaso.

Listing3: Provi personigita Reducer klaso

[Kodo]

Importi org.Apache.Hadoop.Io.IntWritable;
Importi org.Apache.Hadoop.Io.Teksto;
Importi org.Apache.Hadoop.Mapreduce.Reducer;

Publika klaso MyWordReducer etendas Reducer<Teksto, IntWritable, Teksto, IntWritable> {
Protektis senmovan finan Ŝnuron MYa_CELO_TEKSTO = “Hadoop”;

@Superregi
Protektita malplenon reduktas(Teksto keyTxt, Iterable<IntWritable> Valoroj, Kunteksta kunteksto) Ĵetas IOException, InterruptedException {
Se (ContainsTargetWord(KeyTxt)) {
Int wCount = 0;
Por (IntWritable valoro: Valoroj) {
WCount = valoro.Akiras();
}
Kunteksto.Skribas(Kerna, Nova IntWritable(WCount));
}
}
Privata boolea containsTargetWord(Teksto keyTxt) {
Revena keyTxt.ToString().Egaluloj(MYa_CELO_TEKSTO);
}
}

[/Kodo]

  • Paŝo 4 – Krei la aplikan kuntekston – Sekvanta paŝo estas krei la aplikan kuntekston uzanta XML. Ni povas formi la aplikan kuntekston de nia apliko uzanta la sekvantajn paŝojn –
    • Krei nemoveblaĵan dosieron kiu enhavas la valoron de la konfiguraciaj nemoveblaĵoj. Ekzempla aplika nemoveblaĵa dosiero estas montrita sub –

[Kodo]
Fs.Nerepago.Nomo=hdfs://Localhost:9000
Mapred.Laborposteno.Spuristo=localhost:9001
Enigo.Voja=/vojo//@input/dosieron/
Eligita.Voja=/vojo//eligi/dosieron
[/Kodo]

  • Formi nemoveblaĵan lokan posedanton kiu estas uzita venigi la valorojn de konfiguraciaj nemoveblaĵoj de la kreita nemoveblaĵan dosieron. Tio ĉi povas esti farita de aldonanta la sekvantaron en nia aplika kunteksta XMLa dosiero –

[Kodo]
<Kunteksto:Nemoveblaĵo-rezervila loko=”Classpath:Apliko.Nemoveblaĵoj” />

[/Kodo]

  • Formi Apache Hadoop kaj ĝia laborposteno – Ni povas formi la defaŭltan dosieran sistemon kaj ĝian laborpostenan spuriston de aldonanta la sekvantaron en nia aplika kunteksta dosiero

[Kodo]

<Hdp:Konfiguracio>
Fs.Nerepago.Nomo=${Fs.Nerepago.Nomo}
Mapred.Laborposteno.Spuristo=${Mapred.Laborposteno.Spuristo}
</Hdp:Konfiguracio>

[/Kodo]

Ni devus aldoni la sekvantaron en nia aplika kunteksta XMLa dosiero difini la laborpostenan spuriston –

[Kodo]
<Hdp:Laborpostena identigaĵo=”WordCountJobId”
Enigo-vojo=”${Enigo.Vojo}”
Eligi-vojo=”${Eligita.Vojo}”
Bokalo-de-klaso=”Reto.Qs.Printempo.Datumo.Apachehadoop.Ĉefa”
Mapper=”Reto.Qs.Printempo.Datumo.Apachehadoop.MyWordMapper”
Reducer=”Reto.Qs.Printempo.Datumo.Apachehadoop.MyWordReducer”/>

[/Kodo]

  • Formi la laborpostenan kuriston kiu kuras la kreita hadoop laborposteno. La Laborpostena kuristo povas esti formita de aldonanta la sekvantaron en nia aplika kunteksta XMLa dosiero

[Kodo]
<Hdp:Laborposteno-kurista identigaĵo=”WordCountJobRunner” Laborposteno-ref=”WordCountJobId” Kuri-ĉe-noventrepreno=”Vera”/>
[/Kodo]

  • Paŝo 5 – Ŝarĝanta la aplikan kuntekston ĉe noventrepreno – Ni nun povas efektivigi la kreita Hadoop laborposteno de ŝarĝanta la aplikan kuntekston kiam la apliko komencas supre. Ni povas fari tion ĉi de kreanta la okazon de la ClasspathXmlApplicationContext objekto kiu akceptas la nomon de nia aplika kunteksta dosiero kiel eniga parametro al la constructor. Tio ĉi povas esti farita kiel nesufiĉe –

Listing4: Provi montranta ŝarĝadon de aplika kunteksto

[Kodo]
Importi org.Springframework.Kunteksto.ApplicationContext;
Importi org.Springframework.Kunteksto.Subteno.ClassPathXmlApplicationContext;

Publika klaso Ĉefa {
Publika senmova malplena ĉefa(Ŝnuro[] Argumentoj) {
ApplicationContext ctx = nova ClassPathXmlApplicationContext(“ApplicationContext.Xml”);
}
}

[/Kodo]

  • Paŝo 6 – Kuri la Mapreduce laborposteno – Ni povas komenci nian mapon reduktas laborpostenon uzanta la sekvantajn paŝojn –
  • Alŝuto eniga dosiero en HDFS – Ni povas fari tion ĉi de efektiviganta la sekvantan komandon sur la komanda akurata –

[Kodo]

Hadoop dfs -metita ekzemplon.Txt /eniga/ekzemplo.Txt

[/Kodo]

Sekvanta estas ekzempla eniga dosiero kiu estis uzita en ĉi tiu ekzemplo. La celo kerna vorto ‘Hadoop' Estas reliefigita en VERDA. La vorto ‘Hadoop' Ekzistas 4 Tempoj en la ekzemplo.

Input

Enigo

Image1: Ekzempla enigo dosiero

  • Kontroli se la dosiero estis uploaded sukcese de kuranta la sekvantan komandon. Ĝi montros la enigan dosieron.

[Kodo]

Hadoop dfs -ls /enigo

[/Kodo]

  • Kuri la Mapreduce laborposteno. Tio ĉi povas esti farita de efektiviganta la ĉefan metodon de nia java dosiero de la IDE. Se ĉiuj la paŝoj laboras kiel atendatan tiam la sekvantaro estos la produktado.

Eligita: Hadoop 4
Resuma: Lasi nin konkludi kion ni diskutis tiel ege en la sekvantaj kugloj –

  • Ambaŭ Printempo Kaj Hadoop Estas utilaj kadroj de la malferma fonta komunumo.
  • De kombinanta ĉi tiujn ni povas akiri la utilon de ambaŭ la kadroj.
  • Kreanta mapon reduktas laborpostenon uzanta printempon estas ses paŝa procezo kiel klarigita sur.
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