Mis on Spring Apache Hadoop?

Ülevaade: kevad on üks laialt levinud raamistike ettevõtte rakenduste arendamine. kevad on erinevaid komponente nagu Spring ORM, Spring JDBC jne, et toetada erinevaid funktsioone. Kevad Apache Hadoop on raamistik, et toetada taotluse hoone Hadoop komponendid nagu HDFS, MapReduce ja taru jne. kevad pakub API tööle kõik need komponendid. Kevad toetab ka integratsiooni Hadoop teiste Spring ökosüsteemi projektide rakendamist tegelikus elus areng. Selles artiklis me arutada kasutamine kevad Apache Hadoop raamistike.

Sissejuhatus:
Apache Hadoop on avatud lähtekoodiga tarkvara raamistik, mida kasutatakse salvestada ja töödelda-komplekti suurema mahuga. Kevad on ka avatud lähtekoodiga raamistik, mis on laialt kasutusel Java / J2EE rakenduste. Kevad sõltuvust süsti (OF) või inversioon kontrolli (IO) mehhanism on muutunud populaarseks alternatiiviks Enterprise Java Beans (või EJB) mudel. Spring eeliseks on piisavalt paindlik neid hõlpsasti ühendatud ühegi muu arenguraamistikku. Kasutades seda ära kevadel, saame ühendage see Apache Hadoop aidata meil saada maksimaalset kasu mõlemad neist raamistike.

Alustamine:
Selles osas räägib, kuidas luua Hadoop MapReduce Töö kasutades Spring. See hõlmab järgmisi etappe -

  • Step 1 - Saada vajalik sõltuvuste abil Maven - Nagu me teame maven on väga sõltuv pom.xml faili, teeme järgmised kanded meie pom.xml faili. Need sõltuvust kirjed on mõeldud Hadoop südamik ja Kevade raames.

Listing1: Proovi konfiguratsiooni kirjed pom.xml faili

[kood]

< !– Kevad Apache Hadoop — >
< sõltuvus >
< groupId > org.springframework.data </ groupId >
< artifactId > Kevadel-data-hadoop </ artifactId >
< version > 1.0.0.RELEASE </ version >
< /sõltuvus >
< !– Apache Hadoop Core -- >
< sõltuvus >
< groupId > org.apache.hadoop </ groupId >
< artifactId > hadoop-core </ artifactId >
< version > 1.0.3 </version >
</sõltuvus>

[/ kood]

  • Step 2 - Loo kaardistaja komponent - Nagu me teame kaardistajad kasutatakse nende osade murda tegelik probleem väiksemateks osadeks. Need väiksemad osad muutuma lihtsam lahendada. Me võime on oma kohandatud kaardistaja komponent, laiendades Apache kaart vähendada Mapper klassi. Meil on vaja alistada kaardi meetod selle klassi. Kaardistaja klassi loodab järgmised neli parameetrit -

Sest sisend: Pärast parameetrid on sisend ja väärtuse

  • SIIS - See parameeter kirjeldab key type mis on ette sisendiks kaardistaja osa.
  • VALUEIN - See parameeter kirjeldab tüüpi väärtus, mis on varustatud sisendiks kaardistaja komponent.

toodangu: Pärast parameetrid on toodangu ja väärtuse

  • KEYOUT - See parameeter kirjeldab tüüpi välja panna võti parameetri kaardistaja osa.
  • VALUEOUT - See parameeter kirjeldab tüüpi väljundsignaali väärtus kaardistaja komponent.

Kõik need parameetrid peavad rakendama kirjutatav interface. Antud näites, oleme kasutanud meie kaardistaja lugeda faili sisu üks rida korraga ja valmistada võtme-väärtuse paarid igale reale. Meie rakendamise kaardi meetod täidab järgmisi ülesandeid -

  • First, jagada iga üherealine sõnadesse
  • Teine, itereerima läbi iga sõna ja võtab välja ei kogu Unicode sümboleid, mis ei ole tähti ega tähemärki.
  • Kolmas, ehitada võtmeväärtuste paari abil kirjutada meetodil kontekst klassi, mis on kooskõlas oodatud väljundit võtmeväärtusega paari.

Listing2: Proovi kohandatud Mapper klassi

[Code]

avalik klassi MyWordMapper ulatub Mapper<LongWritable, tekst, tekst, IntWritable> {
era- Tekst myword = uus tekst();

@ Alistamine
kaitstud tühine kaart(LongWritable võti, tekst väärtus, kontekstis kontekstis) viskab IOException, InterruptedException {
String rida = value.toString();
StringTokenizer lineTokenz = uus StringTokenizer(line);
kuigi (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, uus IntWritable(1));
}
}

/**
* Vahetage kõik Unicode sümboleid, mis ei ole numbreid ega tähti tühi string.
* @ param originaal, See on originaal string
* @return string objekt, mis sisaldab ainult tähti ja numbreid
*/
erasektori String removeNonLettersNonNumbers (string originaal) {
tagasi original.replaceAll(“[^ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - Loo reduktor Komponent - reduktor on komponent, mis kustutab soovimatu vahepealsed väärtused ja edasi ainult need põhiväärtus paari, mis on olulised. Selleks, et meie kohandatud reduktor, meie klass peaks laiendama reduktor klassi ja üle sõita vähendada meetod. Reduktori klassi loodab järgmise nelja parameetreid.

Sest sisend: Pärast parameetrid on sisend ja väärtuse

  • SIIS - See parameeter kirjeldab key type mis on ette sisendiks kaardistaja osa.
  • VALUEIN - See parameeter kirjeldab tüüpi väärtus, mis on varustatud sisendiks kaardistaja komponent.

toodangu: Pärast parameetrid on toodangu ja väärtuse

  • KEYOUT - See parameeter kirjeldab tüüpi välja panna võti parameetri kaardistaja osa
  • VALUEOUT - See parameeter kirjeldab tüüpi väljundsignaali väärtus kaardistaja komponent.

Kuigi rakendamisel peame tagama, et datatype nn keyin "ja" keyout "parameetrid on samad. Ka "valuein ja valueout" parameetrid peavad olema sama tüüpi. Meie rakendamine vähendab meetod täidab järgmisi samme -

  • First, kontrollima, et sisendklahv sisaldab soovitud sõna.
  • Teine, kui eelmises etapis on tõsi, saada esinemiste arv sõna.
  • Kolmas, ehitada uue võtme-väärtuse paari helistades kirjutada meetod vähendanud klassi.

Listing3: Proovi kohandatud Reducer klassi

[Code]

import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;

avalik klassi MyWordReducer ulatub Reducer<tekst, IntWritable, tekst, IntWritable> {
kaitstud staatiline lõplik String MY_TARGET_TEXT = “Hadoop”;

@ Alistamine
kaitstud tühine vähendada(tekst keyTxt, Iterable<IntWritable> väärtused, kontekstis kontekstis) viskab IOException, InterruptedException {
kui (containsTargetWord(keyTxt)) {
int wCount = 0;
eest (IntWritable väärtus: väärtused) {
wCount = value.get();
}
context.write(key, uus IntWritable(wCount));
}
}
erasektori boolean containsTargetWord(tekst keyTxt) {
tagasi keyTxt.toString().võrdub(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Loo rakenduse kontekstis - Järgmine samm on luua rakenduse kontekstis XML. Meil saab seadistada rakenduse oma taotluse kontekstis, kasutades järgmisi samme -
    • Loo omadused faili, mis sisaldab väärtust konfiguratsiooniatribuute. Proovi taotluse omadused fail on toodud allpool -

[Code]
fs.default.name = HDFS://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / path / to / input / faili /
output.path = / path / to / väljund / faili
[/Code]

  • Seadista vara koha omanik, mida kasutatakse tõmmata väärtused konfiguratsiooniatribuute alates loodud omadused faili. Seda võib teha, lisades järgmise meie taotluse kontekstis XML-faili -

[Code]
<kontekst:vara-kohatäide location =”classpath:application.properties” />

[/Code]

  • Seadista Apache Hadoop ja oma tööd - Meil ​​saab seadistada vaikimisi failisüsteem ja selle töö tracker, lisades järgmise meie taotluse kontekstis faili

[Code]

<hdp:konfiguratsioon>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</hdp:konfiguratsioon>

[/Code]

Peaksime lisama järgmise meie taotluse kontekstis XML faili määratleda töö tracker -

[Code]
<hdp:töö id =”wordCountJobId”
sisend-path =”${input.path}”
väljund-path =”${output.path}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
kaardistaja =”net.qs.spring.data.apachehadoop.MyWordMapper”
reduktor =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Seadista töö jooksja, kes jookseb loodud hadoop tööd. Töö jooksja saab seadistada, lisades järgmise meie taotluse kontekstis XML faili

[Code]
<hdp:töö-runner id =”wordCountJobRunner” töökohtade ref =”wordCountJobId” run-on-startup =”tõsi”/>
[/Code]

  • Step 5 – Laadimine taotluse kontekstis käivitamisel - Nüüd on võimalik täita loodud Hadoop töö laadimist taotluse kontekstis, kui rakendus käivitub. Me saame seda teha, luues astme ClasspathXmlApplicationContext objekt, mis aktsepteerib nimi meie taotluse kontekstis faili sisendparameetriteks ehitaja. Seda saab teha näiteks all -

Listing4: Proovi mis näitab laadimise rakendus kontekstis

[Code]
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

avalik klassi Main {
avaliku staatilise void main(String[] argumendid) {
ApplicationContext ctx = uus ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Käivita MapReduce töö - Saame alustada meie kaart vähendada töökohtade kasutades järgmisi samme -
  • Lae sisend fail HDFS - Me ei saa seda teha käsuga käsureal -

[Code]

hadoop dfs -Pane sample.txt /input/sample.txt

[/Code]

Järgmine proov sisendfailile mis on selles näites kasutatud. Eesmärgiks võtmesõnaks "hadoop " on esile tõstetud GREEN. Sõna 'hadoop " olemas 4 korda proovis.

Input

sisend

PILDINA1: Proovi sisendfail

  • Kontrollige, kas fail on üles laaditud edukalt töötab järgmise käsu. See näitab sisendfail.

[kood]

hadoop dfs -ls / input

[/kood]

  • Käivita MapReduce tööd. Seda saab teha, käivitades peamine meetod meie java faili IDE. Kui kõik sammud töötada ootuspäraselt, siis järgmine on väljund.

väljund: Hadoop 4
Summary: Olgem järeldada, mida oleme arutanud seni järgmistes täppe –

  • mõlemad kevad ja Hadoop on kasulik raamistike alates avatud lähtekoodi kogukonnale.
  • Kombineerides neid saame kasu nii raamistike.
  • Loomine kaardil vähendada töökohtade abil kevadel on kuue etapiline protsess, nagu on selgitatud eespool.
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