Mikä on Spring Apache Hadoop?

Yleiskatsaus: Kevät is one of the widely used frameworks in enterprise applications development. Kevät on erilaisia ​​osia, kuten Spring ORM, Spring JDBC jne tukemaan erilaisia ​​ominaisuuksia. Spring Apache Hadoop on puitteet tukea sovelluksen rakennuksen Hadoop osia, kuten HDFS, MapReduce ja Hive jne. Kevät tarjoaa API toimimaan kaikki nämä komponentit. Spring tukee myös integrointia Hadoop muihin Spring ekosysteemin projekteja tosielämän sovellusten kehittäminen. Tässä artikkelissa tulemme keskustelemaan käyttöä Kevät Apache Hadoop kehyksiä.

Käyttöönotto:
Apache Hadoop on avoimen lähdekoodin ohjelmistoalustan, jota käytetään tallentaa ja käsitellä tietoja-sarjaa suuremmista. Kevät on myös avoimen lähdekoodin puitteet, joka on laajalti käytetty Java / J2EE sovelluksia. Kevään riippuvuus injektio (OF) tai inversio ohjaus (IO) mekanismi on tullut suosittu vaihtoehto Enterprise Java Beans (tai EJB) malli-. Jousi on se etu, että riittävän joustava helposti kytkeä muihin kehitysalusta. Käyttämällä tätä etuna kevään, voimme plug sen Apache Hadoop auttaa meitä saamaan mahdollisimman suuren hyödyn kaikkien näiden kahden kehysten.

Päästä alkuun:
Tässä osassa puhumme miten luoda Hadoop MapReduce Työ käyttäen Spring. Tämä käsittää seuraavat vaiheet -

  • Step 1 - Vaaditun riippuvuudet käyttäen Maven - Kuten tiedämme maven on erittäin riippuvainen pom.xml tiedosto, teemme seuraavat tiedot meidän pom.xml tiedostoon. Nämä riippuvuus merkinnät ovat Hadoop ydin ja Spring puitteet.

Listing1: Näyte kokoonpano merkinnät pom.xml tiedostoon

[koodi]

< !– Spring Data Apache Hadoop — >
< riippuvuus >
< ryhmiä ja > org.springframework.data </ ryhmiä ja >
< artifactId > jousi-data-Hadoop </ artifactId >
< version > 1.0.0.RELEASE </ version >
< /riippuvuus >
< !– Apache Hadoop Core -- >
< riippuvuus >
< ryhmiä ja > org.apache.hadoop </ ryhmiä ja >
< artifactId > Hadoop-core </ artifactId >
< version > 1.0.3 </version >
</riippuvuus>

[/ koodi]

  • Step 2 - Luo mapper komponentti - Kuten tiedämme kuvaajan komponenttia käytetään murtaa todellinen ongelma pienempiin komponentit. Nämä pienemmät komponentit sitten tulee helpompi ratkaista. Meillä voi olla oma räätälöity mapper komponentti laajentamalla Apache kartan vähentää Mapper class. Meidän ohittaa karttaa menetelmä tämän luokan. Kuvaaja luokka odottaa seuraavaa neljää parametrit -

panos: Seuraavat parametrit ovat tulon avain ja arvo

  • NIIN - Tämä parametri kuvaa avaimen tyyppi, joka palvelee syötteenä mapper komponentti.
  • VALUEIN - Tämä parametri kuvataan tyyppi-arvo, joka on tulona mapitus- komponentin.

for ulostulo: Seuraavat parametrit ovat tuotoksen avain ja arvo

  • KEYOUT - Tämä parametri kuvaa tyypin ulos laittaa avain parametrin mapper komponentti.
  • VALUEOUT - Tämä parametri kuvaa tyypin lähtöarvo mapper komponentti.

Kunkin arvon on toteutettava kirjoitettavissa interface. Esitetyssä esimerkissä, olemme hyödyntäneet mapper lukea tiedoston sisällön yksi rivi kerrallaan ja valmistautua avainarvopareja jokaisen siiman. Meidän täytäntöönpano kartan menetelmän suorittaa seuraavat tehtävät -

  • First, jakaa kukin yksittäinen rivi sanoiksi
  • Toinen, kerrata läpi jokaisen sanan ja ottaa pois eikä kaikkia Unicode-merkkejä, jotka eivät ole kirjaimia tai merkkejä.
  • Kolmas, rakentaa avainarvoparin käyttäen kirjoittaa menetelmää konteksti luokka, joka on yhteensopiva odotettu tuotos avainarvoparin.

Listing2: Näyte räätälöityjä Mapper class

[Code]

public class MyWordMapper ulottuu Mapperiin<LongWritable, Teksti, Teksti, IntWritable> {
yksityinen Text myword = uusi teksti();

@ Ohitus
suojattu mitätön kartta(LongWritable avain, tekstiarvo, konteksti yhteydessä) heittoja IOException, InterruptedException {
String rivi = value.toString();
StringTokenizer lineTokenz = uusi StringTokenizer(line);
sillä aikaa (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, uusi IntWritable(1));
}
}

/**
* Korvaa kaikki Unicode jotka eivät ole numeroita eivätkä kirjaimia tyhjällä merkkijono.
* @param alkuperäinen, Se on alkuperäinen merkkijono
* @return merkkijono esine, joka sisältää ainoastaan ​​kirjaimia ja numeroita
*/
private String removeNonLettersNonNumbers (string alkuperäinen) {
palata original.replaceAll(“[^ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - Luo Lyhentäjällä Osa - vähentäjä on komponentti, joka poistaa ei-toivotut väliarvot ja eteenpäin vain ne keskeiset arvo-pareja, jotka ovat merkityksellisiä. Saada räätälöityjä alennusvaihde, Meidän luokka olisi laajennettava Lyhentäjällä luokka ja yli ratsastaa vähentää menetelmän. Vaihteen luokka odottaa seuraavaa neljää parametrit.

panos: Seuraavat parametrit ovat tulon avain ja arvo

  • NIIN - Tämä parametri kuvaa avaimen tyyppi, joka palvelee syötteenä mapper komponentti.
  • VALUEIN - Tämä parametri kuvataan tyyppi-arvo, joka on tulona mapitus- komponentin.

for ulostulo: Seuraavat parametrit ovat tuotoksen avain ja arvo

  • KEYOUT - Tämä parametri kuvaa tyypin ulos laittaa avain parametrin mapper komponentti
  • VALUEOUT - Tämä parametri kuvaa tyypin lähtöarvo mapper komponentti.

Ja panna meidän on varmistettava, että tietotyyppi on "keyin" ja "keyout" parametrit ovat samat. Myös "valuein" ja valueout "parametrien tulisi olla samaa tyyppiä. Meidän toteuttaminen vähentää menetelmän suorittaa seuraavat vaiheet -

  • First, tarkista, että tulo avain sisältää halutun sanan.
  • Toinen, jos edellä vaihe on totta, saat määrä sanan esiintymiä.
  • Kolmas, rakentaa uusi avainarvoparin soittamalla -kirjoitusmetodissa vähennysventtiilillä luokan.

Listing3: Näyte räätälöityjä Lyhentäjällä class

[Code]

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

public class MyWordReducer ulottuu Reducer<Teksti, IntWritable, Teksti, IntWritable> {
suojattu staattisen lopullinen String MY_TARGET_TEXT = “Hadoop”;

@ Ohitus
suojattu mitätön vähentää(teksti keyTxt, Iterable<IntWritable> arvot, konteksti yhteydessä) heittoja IOException, InterruptedException {
jos (containsTargetWord(keyTxt)) {
int wCount = 0;
varten (IntWritable arvo: arvot) {
wCount = value.get();
}
context.write(avain, uusi IntWritable(wCount));
}
}
yksityinen boolean containsTargetWord(teksti keyTxt) {
palata keyTxt.toString().on yhtä suuri kuin(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Luo sovelluksen yhteydessä - Seuraava askel on luoda sovelluksen yhteydessä XML. Voimme määrittää sovelluksen yhteydessä meidän sovelluksen käyttäen seuraavia vaiheita -
    • Luo ominaisuuksia tiedosto, joka sisältää arvon kokoonpanon ominaisuuksia. Näyte sovellus ominaisuuksia tiedosto näkyy alla -

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

  • Määritä ominaisuus paikka pidin, jota käytetään noutamaan arvojen kokoonpanon ominaisuuksia luodun ominaisuuksista tiedosto. Tämä voidaan tehdä lisäämällä seuraava meidän sovelluksen yhteydessä XML-tiedosto -

[Code]
<konteksti:omaisuus-paikkamerkki sijainti =”classpath:application.properties” />

[/Code]

  • Määritä Apache Hadoop ja sen työ - Voimme määrittää oletus-tiedostojärjestelmä ja sen työn tracker lisäämällä seuraava meidän sovelluksen kontekstitiedoston

[Code]

<HDP:kokoonpano>
fs.default.name = ${fs.default.name}
mapred.job.tracker = ${mapred.job.tracker}
</HDP:kokoonpano>

[/Code]

Meidän pitäisi lisätä seuraava meidän sovelluksen yhteydessä XML-tiedoston määrittelemään työn tracker -

[Code]
<HDP:työ id =”wordCountJobId”
input-path =”${input.path}”
output-path =”${output.path}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
vähennysventtiilillä =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Määritä työ juoksija, joka kulkee luodut Hadoop työ. Työn juoksija voidaan konfiguroida lisäämällä seuraava meidän sovelluksen yhteydessä XML-tiedoston

[Code]
<HDP:työ-juoksija id =”wordCountJobRunner” työ-ref =”wordCountJobId” run-at-käynnistyksen =”totta”/>
[/Code]

  • Step 5 – Sovellusta ladattaessa yhteydessä käynnistettäessä - Voimme nyt suorittaa luotu Hadoop työ lataamalla sovelluksen yhteydessä, kun sovellus käynnistyy. Voimme tehdä tämän luomalla esiintymä ClasspathXmlApplicationContext esineen, joka hyväksyy nimi meidän sovelluksen kontekstitiedostosi syöttöparametrina rakentajalle. Tämä voidaan tehdä alle -

Listing4: Näyte osoittaa lastaus sovelluskontekstia

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

public class Main {
public static void main(Jono[] argumentit) {
ApplicationContext ctx = uusi ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Suorita MapReduce työ - Voimme aloittaa meidän kartta vähentää työn käyttäen seuraavia vaiheita -
  • Lataa tiedoston muistiin HDFS - Voimme tehdä tämän suorittamalla seuraava komento komentokehotteeseen -

[Code]

Hadoop dfs -Laita sample.txt /input/sample.txt

[/Code]

Seuraavassa on esimerkki input-tiedoston, jota on käytetty tässä esimerkissä. Kohdeavaimen sana "Hadoop " korostuu VIHREÄ. Sana "Hadoop " olemassa 4 kertaa näytteessä.

Input

panos

Image1: Näyte syötetiedosto

  • Tarkista, onko tiedosto on ladattu onnistuneesti suorittamalla seuraava komento. Se näyttää syötetiedoston.

[koodi]

Hadoop dfs -Onko / syöttö

[/koodi]

  • Suorita MapReduce työ. Tämä voidaan tehdä suorittamalla tärkein tapa meidän java-tiedoston IDE. Jos kaikki vaiheet toimi odotetusti niin seuraava tulee lähtö.

ulostulo: Hadoop 4
Summary: Päättäkäämme mitä olemme keskustelleet tähän mennessä seuraavissa luoteja –

  • molemmat Kevät ja Hadoop ovat hyödyllisiä puitteet avoimen lähdekoodin.
  • Yhdistämällä nämä saamme hyödyttää sekä kehysten.
  • Kartan muodostamista vähentää työn käyttäen jousi on kuusi vaihetta, kuten edellä.
Tagged on: ,
============================================= ============================================== Osta parhaat tekniset kirjat Amazonista,en,sähköasentaja CT -kastaja,en
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share