Što je proljeće za Apache Hadoop?

Pregled: Proljeće is one of the widely used frameworks in enterprise applications development. Proljeće ima različite komponente kao što su Spring ORM, Proljeće JDBC itd podržati različite značajke. Proljeće za Apache Hadoop je okvir za podršku aplikacija zgrade s Hadoop komponenti kao što su HDF-ovi, MapReduce i košnica itd. Proljeće pruža API za rad sa svim tim komponentama. Proljeće također podržava integraciju Hadoop s drugim Spring ekosustava projekata za razvoj stvarnom životu aplikacija. U ovom članku ćemo raspraviti korištenje Proljeće za Apache Hadoop okvirima.

Uvođenje:
Apache Hadoop je open source softvera okvir, koji se koristi za pohranu i obradu podataka skupove većeg volumena. Proljeće je i open source okvir, koji se često koristi u Java / J2EE aplikacija. Proljeća ovisnost injekcije (OD) ili inverzija kontrole (IO) Mehanizam je postala popularna alternativa za Enterprise Java Beans (ili EJB) model. Proljeće ima prednost da je dovoljno fleksibilan da se jednostavno priključiti s bilo kojim drugim razvojni okvir. Koristeći ovu prednost proljeće, možemo ga uključiti sa Apache Hadoop kako bi nam pomogli dobili maksimalnu korist svakog od ova dva okvira.

Početak:
U ovom poglavlju ćemo govoriti o tome kako stvoriti Hadoop MapReduce posao koristeći proljeće. To uključuje sljedeće korake -

  • Step 1 - Dobiti potrebne ovisnosti pomoću maVen - Kao što znamo maven je vrlo ovisna o pom.xml datoteku, ćemo napraviti sljedeće unose u našem pom.xml datoteku. Te ovisnosti unosi za Hadoop jezgre i Spring Frameworka.

Listing1: Primjeri unosa postavki u pom.xml datoteku

[kod]

< !– Proljeće Podaci Apache Hadoop — >
< zavisnost >
< GroupID > org.springframework.data </ GroupID >
< artifactId > proljeće-data-Hadoop </ artifactId >
< version > 1.0.0.PRIOPĆENJE </ version >
< /zavisnost >
< !– Apache Hadoop Temeljni -- >
< zavisnost >
< GroupID > org.apache.hadoop </ GroupID >
< artifactId > Hadoop-core </ artifactId >
< version > 1.0.3 </version >
</zavisnost>

[/ kod]

  • Step 2 - Napravite Mapper komponentu - Kao što znamo mapiranje komponenta koristi se razbiti stvarni problem na manje dijelove. Ovi manji dijelovi postaju lakše riješiti. Možemo imati vlastiti prilagođeni Mapper komponentu proširujući se karta Apache smanjiti Mapper razred. Moramo nadjačati metodu na karti ove klase. Mapiranje klase očekuje sljedeće četiri parametra -

za unos: Sljedeći parametri su za ulazni ključ i vrijednost

  • TADA - Ovaj parametar opisuje vrstu ključa koja se daje kao input za maper komponente.
  • VALUEIN - Ovaj parametar opisuje vrstu vrijednosti koja se daje kao input za mapiranje komponente.

za izlaz: Sljedeći parametri su za izlaz ključa i vrijednosti

  • KEYOUT - Ovaj parametar opisuje vrstu out staviti ključ parametar od maper komponente.
  • VALUEOUT - Ovaj parametar opisuje vrstu izlazne vrijednosti od maper komponente.

Svaki od tih parametara mora provoditi može se pisati interface. U danom primjeru, koristili smo naše Mapper čitati sadržaj datoteke jedne linije u isto vrijeme i pripremiti parove ključeva i vrijednosti za svaku liniju. Naša implementacija metode karti obavlja sljedeće poslove -

  • First, podijeliti svaku pojedinu liniju u riječima
  • Drugo, prolazak kroz svaku riječ i izvaditi ni sve Unicode znakove, koji nisu ni slova ni likovi.
  • Treća, izgraditi ključ-vrijednost par primjenom metode zapisivanja od Kontekst razred koji je kompatibilan s očekuje izlazni par ključa i vrijednosti.

Listing2: Uzorak prilagoditi Mapper razred

[Code]

public class MyWordMapper proteže maper<LongWritable, Tekst, Tekst, IntWritable> {
privatni Tekst myword = novi tekst();

@ Override
zaštićene void karta(ključ LongWritable, vrijednost Tekst, kontekst kontekst) baca IOException, InterruptedException {
String linija = value.toString();
StringTokenizer lineTokenz = new StringTokenizer(line);
dok (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, novi IntWritable(1));
}
}

/**
* Zamijenite sve Unicode znakove koji nisu ni brojke ni slova s ​​prazan niz.
* param original, To je izvorni string
* @return string objekt koji sadrži samo slova i brojke
*/
privatni Gudački removeNonLettersNonNumbers (string original) {
povratak original.replaceAll(“[^ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - Stvaranje Redukcija Komponenta - reduktor je komponenta koja briše neželjene srednje vrijednosti i terminske samo one ključne parova vrijednosti koje su relevantne. Da imamo prilagođeno reduktor, naš razred treba proširiti Redukcija klase i preko jahati smanjiti metoda. Smanjio klase očekuje sljedeće četiri parametra.

za unos: Sljedeći parametri su za ulazni ključ i vrijednost

  • TADA - Ovaj parametar opisuje vrstu ključa koja se daje kao input za maper komponente.
  • VALUEIN - Ovaj parametar opisuje vrstu vrijednosti koja se daje kao input za mapiranje komponente.

za izlaz: Sljedeći parametri su za izlaz ključa i vrijednosti

  • KEYOUT - Ovaj parametar opisuje vrstu out staviti ključ parametar od maper komponente
  • VALUEOUT - Ovaj parametar opisuje vrstu izlazne vrijednosti od maper komponente.

U provedbi moramo biti sigurni da je vrsta podataka od "keyin 'i' keyout 'parametri su isti. Također, 'valuein' i parametri valueout 'treba biti istog tipa. Naš provedba smanji metoda obavlja sljedeće korake -

  • First, provjerite da li je ulazni ključ sadrži željene riječi.
  • Drugo, Ako je gornji korak istina, dobili broj pojavljivanja riječi.
  • Treća, izgraditi novi ključ-vrijednost par pozivom metode pisanja u reduktor klase.

Listing3: Uzorak prilagoditi Redukcija razred

[Code]

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

public class MyWordReducer proteže reduktorom<Tekst, IntWritable, Tekst, IntWritable> {
zaštićena statički konačni String MY_TARGET_TEXT = “Hadoop”;

@ Override
zaštićene void smanjiti(Tekst keyTxt, Iterable<IntWritable> vrijednosti, kontekst kontekst) baca IOException, InterruptedException {
ako (containsTargetWord(keyTxt)) {
int wCount = 0;
za (IntWritable vrijednost: vrijednosti) {
wCount = value.get();
}
context.write(key, novi IntWritable(wCount));
}
}
privatni boolean containsTargetWord(Tekst keyTxt) {
povratak keyTxt.toString().jednak(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Izrada aplikacija kontekst - Sljedeći korak je stvaranje aplikacija kontekst pomoću XML. Možemo podesiti aplikacijski kontekst naše aplikacije pomoću sljedeće korake -
    • Stvaranje svojstava datoteka koja sadrži vrijednost svojstva konfiguracije. Uzorak primjenskih svojstava datoteke prikazan je ispod -

[Code]
fs.default.name = HDF-ovi://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / put / do / input / file /
output.path = / put / do / izlaz / datoteke
[/Code]

  • Konfiguracija držač nekretnina mjesta koja se koristi za dohvaćanje vrijednosti konfiguracije svojstva od stvorio svojstava datoteka. To se može učiniti tako da dodate sljedeći u našoj prijavi kontekst XML datoteke -

[Code]
<kontekst:Lokacija nekretnine-rezervirano =”classpath:application.properties” />

[/Code]

  • Konfiguracija Apache Hadoop i svoj posao - Možemo konfigurirati zadani datotečni sustav i svoj posao tracker dodavanjem sljedeće u našem prijava kontekst datoteke

[Code]

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

[/Code]

Trebamo dodati sljedeće u našoj prijavi kontekst XML datoteke za definiranje tracker za posao -

[Code]
<HDP:id posao =”wordCountJobId”
ulazno-path =”${input.path}”
output-path =”${output.path}”
jar-po-class =”net.qs.spring.data.apachehadoop.Main”
maper =”net.qs.spring.data.apachehadoop.MyWordMapper”
reduktor =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Konfiguracija trkač posao koji pokreće stvorio Hadoop posao. Pomični Posao se može konfigurirati tako da dodate sljedeći u našoj prijavi kontekst XML datoteke

[Code]
<HDP:posao-trkač id =”wordCountJobRunner” posao i sudac =”wordCountJobId” run-at-pokretanju =”istinit”/>
[/Code]

  • Step 5 – Učitavanja aplikacije kontekst pri pokretanju - Sada možemo izvršiti stvorio Hadoop posao učitavanjem aplikacije kontekst kada je program pokrene. Možemo to učiniti stvaranjem instance ClasspathXmlApplicationContext objekta koji prihvaća naziv naše aplikacije konteksta datoteke kao ulazni parametar za konstruktora. To se može učiniti kao pod -

Listing4: Uzorak prikazuje učitavanje aplikacija kontekstu

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

public class Glavni {
public static void main(Gudački[] Argumenti) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Pokrenite MapReduce posao - Možemo početi naša karta smanjiti posao pomoću sljedećih koraka -
  • Postavi ulazne datoteke u HDF-ovi - Mi to možemo učiniti tako da izvršite sljedeće naredbe u naredbeni redak -

[Code]

Hadoop DFS -put sample.txt /input/sample.txt

[/Code]

Slijedi primjer ulazne datoteke koja je korištena u ovom primjeru. Ciljana ključna riječ 'Hadoop ' je istaknuto u GREEN. Riječ 'Hadoop ' postoji 4 puta u uzorku.

Input

Ulazni

Image1: Uzorak ulazne datoteke

  • Provjerite je li datoteka je uspješno prenesen pokretanjem sljedeće naredbe. To će pokazati ulazne datoteke.

[kod]

Hadoop DFS -ls / ulaz

[/kod]

  • Pokrenite MapReduce posao. To se može učiniti tako da izvršite glavni način našeg java datoteka iz IDE. Ako su svi koraci rade kako treba onda će se sljedeće izlaz.

Izlaz: Hadoop 4
Summary: Neka nam zaključiti ono što smo do sad u sljedećim metaka –

  • Oba Proljeće i Hadoop korisni su okviri iz open source zajednici.
  • Kombiniranjem ovih možemo dobiti u korist oba okvira.
  • Stvaranje mapa smanjiti posao pomoću opruga proces u šest koraka kao što je gore objašnjeno.
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