Hvad er forår for Apache Hadoop?

Oversigt: Forår is one of the widely used frameworks in enterprise applications development. Forår har forskellige komponenter som Spring ORM, Spring JDBC etc at understøtte forskellige funktioner. Spring til Apache Hadoop er rammer, der understøtter ansøgning bygning med Hadoop komponenter som HDFS, MapReduce og Hive etc. Forår giver API'er til at arbejde med alle disse komponenter. Spring understøtter også integrationen af ​​Hadoop med andre Spring økosystemets projekter for det virkelige liv applikationsudvikling. I denne artikel vil vi diskutere brugen af Forår for Apache Hadoop rammer.

Indledning:
Apache Hadoop er et open source framework, som bruges til at lagre og behandle data-sæt større volumen. Foråret er også en open source rammer, som er meget udbredt i Java / J2EE applikationer. Spring afhængighed injektion (AF) eller inversion af kontrol (IO) mekanisme er blevet et populært alternativ til Enterprise Java Beans (eller EJB) model. Fjederen har den fordel at være fleksibel nok til at være let tilstoppet med nogen anden ramme udvikling. Brug af denne fordel ved forår, Vi kan tilslutte den med Apache Hadoop at hjælpe os med at få det maksimale udbytte af hver af disse to rammer.

Kom godt i gang:
I dette afsnit vil vi tale om, hvordan du opretter en Hadoop MapReduce Job hjælp Spring. Dette omfatter følgende trin -

  • Step 1 - Opnå de nødvendige afhængigheder der bruger Maven - Som vi ved maven er meget afhængig af den pom.xml fil, Vi Indtast følgende i vores pom.xml fil. Disse afhængighed poster er for Hadoop kerne og foråret rammer.

Listing1: Prøve konfiguration poster i pom.xml fil

[kode]

< !– Spring data Apache Hadoop — >
< afhængighed >
< Gruppe- > org.springframework.data </ Gruppe- >
< artifactId > fjeder-data-Hadoop </ artifactId >
< version > 1.0.0.FRIGØRE </ version >
< /afhængighed >
< !– Apache Hadoop Core -- >
< afhængighed >
< Gruppe- > org.apache.hadoop </ Gruppe- >
< artifactId > Hadoop-core </ artifactId >
< version > 1.0.3 </version >
</afhængighed>

[/ kode]

  • Step 2 - Opret mapper komponent - Som vi ved en Mapper komponent bruges til at bryde det egentlige problem i mindre komponenter. Disse mindre komponenter derefter bliver lettere at løse. Vi kan have vores egen tilpassede mapper komponent ved at udvide Apache kortet reducere Mapper klasse. Vi er nødt til at tilsidesætte kortet fremgangsmåden ifølge denne klasse. Den Mapper klassen forventer følgende fire parametre -

For input: Følgende parametre er for input nøgle og værdi

  • - Dette parameter beskriver den centrale type, som er angivet som input til mapper komponent.
  • VALUEIN - Dette parameter beskriver den type af værdi, som er angivet som input til mapper komponent.

For output: Følgende parametre er til output nøgle og værdi

  • KEYOUT - Dette parameter beskriver den type ud sættes nøgleparameter fra Mapper komponent.
  • VALUEOUT - Dette parameter beskriver den type af produktionsværdien fra Mapper komponent.

Hver af disse parametre skal gennemføre skrivbar interface. I det givne eksempel, Vi har brugt vores mapper til at læse indholdet af en fil én linje ad gangen og forberede nøgleværdipar i hver linje. Vores implementering af kortet metode udfører følgende opgaver -

  • First, opdele hver enkelt linje i ord
  • Anden, gentage gennem hvert eneste ord og tage ud hverken alle de Unicode-tegn, som hverken breve eller tegn.
  • Tredje, konstruere en nøgleværdiparret hjælp af skrive fremgangsmåden Sammenhæng klasse, som er kompatibel med det forventede output nøgleværdiparret.

Listing2: Prøve tilpassede Mapper klasse

[Code]

public class MyWordMapper udvider Mapper<LongWritable, Tekst, Tekst, IntWritable> {
privat Text myword = ny tekst();

@ Override
protected void kort(LongWritable nøgle, Tekst værdi, Context kontekst) kaster IOException, InterruptedException {
String line = value.toString();
StringTokenizer lineTokenz = ny StringTokenizer(line);
mens (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, ny IntWritable(1));
}
}

/**
* Udskift alle Unicode-tegn, der hverken tal eller bogstaver med en tom streng.
* @ param original, Det er den oprindelige streng
* @return en streng objekt, som kun indeholder bogstaver og tal
*/
private String removeNonLettersNonNumbers (String original) {
returnere original.replaceAll(“[^ \ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - Opret Reducer Component - En reducering er en komponent, der sletter uønskede mellemliggende værdier og videresender kun de vigtigste værdi par, der er relevante. At have vores tilpassede reducer, vores klasse bør udvide Reducer klasse og over ride reducere metoden. Den reducering klassen forventer følgende fire parametre.

For input: Følgende parametre er for input nøgle og værdi

  • - Dette parameter beskriver den centrale type, som er angivet som input til mapper komponent.
  • VALUEIN - Dette parameter beskriver den type af værdi, som er angivet som input til mapper komponent.

For output: Følgende parametre er til output nøgle og værdi

  • KEYOUT - Dette parameter beskriver den type ud sættes nøgleparameter fra Mapper komponent
  • VALUEOUT - Dette parameter beskriver den type af produktionsværdien fra Mapper komponent.

Mens gennemførelsen skal vi sørge for, at datatype af de »keyin 'og' keyout 'parametre er samme. Også den "valuein" og valueout 'parametre skal være af samme type. Vores implementering af reduktion metode udfører følgende trin -

  • First, kontrollere, at input nøgle indeholder det ønskede ord.
  • Anden, hvis ovennævnte trin er sandt, få antallet af forekomster af ordet.
  • Tredje, konstruere en ny nøgle-værdi-par ved at kalde skrive fremgangsmåden reducering klassen.

Listing3: Prøve tilpassede Reducer klasse

[Code]

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

public class MyWordReducer udvider Reducer<Tekst, IntWritable, Tekst, IntWritable> {
beskyttet statisk endelige String MY_TARGET_TEXT = “Hadoop”;

@ Override
beskyttet tomrum reducere(Tekst keyTxt, Iterable<IntWritable> værdier, Context kontekst) kaster IOException, InterruptedException {
hvis (containsTargetWord(keyTxt)) {
int wCount = 0;
for (IntWritable værdi: værdier) {
wCount = value.get();
}
context.write(key, ny IntWritable(wCount));
}
}
private boolean containsTargetWord(Tekst keyTxt) {
returnere keyTxt.toString().lig(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Opret ansøgningen kontekst - Næste skridt er at skabe programmet kontekst ved hjælp af XML. Vi kan konfigurere programmet led i vores program ved hjælp af følgende trin -
    • Opret en ejendomme fil, der indeholder værdien af ​​konfigurationsegenskaber. En prøve påføringsegenskaber fil er vist nedenfor -

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

  • Konfiguration af en ejendom sted holder, som bruges til at hente værdierne af konfigurationsegenskaber fra den oprettede ejendomme fil. Dette kan gøres ved at tilføje følgende i vores ansøgning sammenhæng XML-fil -

[Code]
<sammenhæng:ejendom-pladsholder placering =”classpath:application.properties” />

[/Code]

  • Konfigurer Apache Hadoop og sit arbejde - Vi kan konfigurere standard filsystemet og sit job tracker ved at tilføje følgende i vores ansøgning sammenhæng fil

[Code]

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

[/Code]

Vi bør tilføje følgende i vores ansøgning sammenhæng XML-fil til at definere jobbet tracker -

[Code]
<HDP:job 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”
reducering =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Konfigurer jobbet runner som kører skabte Hadoop job. Job runner kan konfigureres ved at tilføje følgende i vores ansøgning sammenhæng XML-fil

[Code]
<HDP:job-runner id =”wordCountJobRunner” job-ref =”wordCountJobId” køre-at-start =”sand”/>
[/Code]

  • Step 5 – Ilægning ansøgningen kontekst ved opstart - Vi kan nu udføre den oprettede Hadoop job ved at indlæse ansøgningen kontekst, når programmet starter op. Vi kan gøre dette ved at oprette den forekomst af ClasspathXmlApplicationContext objekt, som accepterer navnet på vores ansøgning sammenhæng fil som input parameter til konstruktøren. Dette kan gøres som under -

Listing4: Prøve viser lastning af ansøgning kontekst

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

public class Main {
public static void main(String[] argumenter) {
ApplicationContext ctx = ny ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Kør MapReduce job - Vi kan starte vores kort reducere job ved hjælp af følgende trin -
  • Upload et input fil i HDFS - Vi kan gøre dette ved at udføre følgende kommando på kommandoprompten -

[Code]

Hadoop dfs -Sæt sample.txt /input/sample.txt

[/Code]

Følgende er et eksempel input fil, som er blevet anvendt i dette eksempel. Målet Nøgleordet 'Hadoop ' er fremhævet i GRØN. Ordet 'Hadoop ' eksisterer 4 gange i prøven.

Input

Input

Image1: Eksempel på input fil

  • Kontroller, om filen er blevet uploadet med succes ved at køre følgende kommando. Det vil vise inputfilen.

[kode]

Hadoop DFS -Er / input

[/kode]

  • Kør MapReduce job. Dette kan gøres ved at udføre den vigtigste metode til vores Java fil fra IDE. Hvis alle trinene fungerer som forventet så det følgende vil være output.

Produktion: Hadoop 4
Summary: Lad os konkludere, hvad vi har diskuteret hidtil i de følgende kugler –

  • Begge Forår og Hadoop er nyttige rammer fra open source-fællesskabet.
  • Ved at kombinere disse kan vi få gavn af både rammer.
  • Oprettelse af et kort reducere stilling via fjeder er en seks trins proces som forklaret ovenfor.
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