Wat is die lente vir Apache Hadoop?

Oorsig: Lente is one of the widely used frameworks in enterprise applications development. Lente het verskillende komponente soos die lente ORM, Lente JDBC ens om verskillende funksies te ondersteun. Lente vir Apache Hadoop is die raamwerk om aansoek gebou met Hadoop komponente soos HDFS ondersteun, MapReduce en korf ens. Lente bied APIs om te werk met al hierdie komponente. Lente ondersteun ook integrasie van Hadoop met ander lente ekosisteem projekte vir die werklike lewe aansoek ontwikkeling. In hierdie artikel sal ons die gebruik van te bespreek Lente vir Apache Hadoop raamwerke.

Inleiding:
Apache Hadoop is 'n oop bron sagteware raamwerk, wat gebruik word om data-stelle groter volume stoor en verwerk. Lente is ook 'n oop-bron raamwerk, wat algemeen gebruik word in Java / J2EE-programme. Lente se afhanklikheid inspuiting (VAN) of omkering van beheer (IO) meganisme het 'n gewilde alternatief vir die Enterprise Java Beans (of EJB) model. Lente het die voordeel dat dit buigsaam genoeg is om maklik ingeprop met enige ander ontwikkelingsraamwerk. Die gebruik van hierdie voordeel van die lente, kan ons dit aan te sluit met Apache Hadoop om ons te help die maksimum voordeel van elk van hierdie twee raamwerke.

Aan die gang kom:
In hierdie artikel sal ons praat oor hoe om 'n Hadoop MapReduce Job met behulp van die lente te skep. Dit behels die volgende stappe -

  • Step 1 - Kry die vereiste afhanklikhede met behulp Maven - Soos ons weet Maven is baie afhanklik van die pom.xml lêer, Ons maak die volgende inskrywings in ons pom.xml lêer. Hierdie afhanklikheid inskrywings is vir Hadoop kern en raamwerk lente.

Listing1: Monster opset inskrywings in pom.xml lêer

[kode]

< !– Lente Data Apache Hadoop — >
< afhanklikheid >
< groepid > org.springframework.data </ groepid >
< artifactId > lente-data-hadoop </ artifactId >
< version > 1.0.0.VRYLATING </ version >
< /afhanklikheid >
< !– Apache Hadoop Core -- >
< afhanklikheid >
< groepid > org.apache.hadoop </ groepid >
< artifactId > hadoop-kern </ artifactId >
< version > 1.0.3 </version >
</afhanklikheid>

[/ kode]

  • Step 2 - Skep die kartograaf komponent - Soos ons weet 'n kartograaf komponent word gebruik om die werklike probleem te breek in kleiner komponente. Hierdie kleiner komponente dan makliker geword om op te los. Ons kan ons eie persoonlike Mapper komponent het deur die uitbreiding van die kaart Apache verminder Mapper klas. Ons moet die kaart metode van hierdie klas te ignoreer. Die Mapper klas verwag dat die volgende vier parameters -

vir insette: Volgende parameters is vir insette sleutel en waarde

  • DAN - Hierdie parameter beskryf die sleutel soort wat as 'n inset aan die kartograaf komponent.
  • VALUEIN - Hierdie parameter beskryf die tipe van die waarde wat as 'n inset aan die kartograaf komponent.

vir uitset: Volgende parameters is vir uitvoer sleutel en waarde

  • KEYOUT - Hierdie parameter beskryf die tipe van die blus sleutel parameter van die kartograaf komponent.
  • VALUEOUT - Hierdie parameter beskryf die tipe van die produksie waarde van die kartograaf komponent.

Elkeen van hierdie parameters moet implementeer die skryfbare interface. In die gegewe voorbeeld, Ons het ons Mapper gebruik om die inhoud van 'n lêer 'n reël te lees op 'n slag en voor te berei sleutel-waarde pare elke lyn. Ons implementering van die kaart metode verrig die volgende take -

  • First, verdeel elke enkele lyn in woorde
  • Tweede, Itereer deur elke enkele woord en neem nie al die Unicode-karakters wat nie letters of karakters.
  • Derde, bou 'n sleutel-waarde paar met behulp van die skryf metode van die konteks klas wat versoenbaar is met die verwagte opbrengs sleutel-waarde pair.

Listing2: Voorbeeld aangepas Mapper klas

[Code]

openbare klas MyWordMapper strek Mapper<LongWritable, teks, teks, IntWritable> {
private teks myword = nuwe teks();

@ Ignoreer
beskerm leemte kaart(LongWritable sleutel, teks waarde, konteks konteks) gooi IOException, InterruptedException {
String lyn = value.toString();
StringTokenizer lineTokenz = nuwe StringTokenizer(line);
terwyl (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, nuwe IntWritable(1));
}
}

/**
* Vervang al Unicode-karakters wat nie nommers nie briewe met 'n leë string is.
* param oorspronklike, Dit is die oorspronklike string
* @return n string voorwerp wat net letters en syfers bevat
*/
private String removeNonLettersNonNumbers (string oorspronklike) {
terugkeer original.replaceAll(“[^ \ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - Skep die reducer Komponent - 'n reducer is 'n komponent wat die ongewenste intermediêre waardes en voorspelers net die sleutel waarde pare wat betrokke is verwyder. Om ons persoonlike reducer het, ons klas moet verleng die reducer klas en oor ry die vermindering metode. Die reducer klas verwag dat die volgende vier parameters.

vir insette: Volgende parameters is vir insette sleutel en waarde

  • DAN - Hierdie parameter beskryf die sleutel soort wat as 'n inset aan die kartograaf komponent.
  • VALUEIN - Hierdie parameter beskryf die tipe van die waarde wat as 'n inset aan die kartograaf komponent.

vir uitset: Volgende parameters is vir uitvoer sleutel en waarde

  • KEYOUT - Hierdie parameter beskryf die tipe van die blus sleutel parameter van die kartograaf komponent
  • VALUEOUT - Hierdie parameter beskryf die tipe van die produksie waarde van die kartograaf komponent.

Terwyl die implementering van ons moet seker maak dat die data type van die 'keyin' en 'keyout' parameters is dieselfde. Ook die "valuein en parameters valueout 'moet van dieselfde soort te wees. Ons implementering van die vermindering metode voer die volgende stappe -

  • First, seker te maak dat die insette sleutel bevat die gewenste woord.
  • Tweede, Indien die bogenoemde stap is waar, kry die aantal voorkomste van die woord.
  • Derde, bou 'n nuwe sleutel-waarde pair deur die roeping van die skryf metode van die reducer klas.

Listing3: Voorbeeld aangepas Reducer klas

[Code]

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

openbare klas MyWordReducer strek Reducer<teks, IntWritable, teks, IntWritable> {
beskerm statiese finale String MY_TARGET_TEXT = “Hadoop”;

@ Ignoreer
beskerm leemte te verminder(teks keyTxt, Iterable<IntWritable> waardes, konteks konteks) gooi IOException, InterruptedException {
indien (containsTargetWord(keyTxt)) {
int wCount = 0;
vir (IntWritable waarde: waardes) {
wCount = value.get();
}
context.write(key, nuwe IntWritable(wCount));
}
}
private boolean containsTargetWord(teks keyTxt) {
terugkeer keyTxt.toString().gelykes(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Skep die aansoek konteks - volgende stap is om die aansoek verband met behulp van XML skep. Ons kan die aansoek konteks van ons program met behulp van die volgende stappe instel -
    • Skep 'n eiendom lêer wat die waarde van die opset eienskappe bevat. 'N Monster aansoek eiendomme lêer getoon hieronder -

[Code]
fs.default.name = hdfs://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / pad / na / input / lêer /
output.path = / pad / na / uitset / lêer
[/Code]

  • Instel van 'n eiendom plekhouer wat gebruik word om die waardes van opset eienskappe haal uit die geskape eienskappe lêer. Dit kan gedoen word deur die byvoeging van die volgende in ons aansoek konteks XML-lêer -

[Code]
<konteks:eiendom-plekhouer plek =”classpath:application.properties” />

[/Code]

  • Instel Apache Hadoop en sy werk - Ons kan die standaard lêer stelsel en sy werk Tracker instel deur die byvoeging van die volgende in ons aansoek konteks lêer

[Code]

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

[/Code]

Ons moet die volgende in ons aansoek konteks XML-lêer om die werk Tracker definieer voeg -

[Code]
<HDP:werk id =”wordCountJobId”
insette-pad =”${input.path}”
uitset-pad =”${output.path}”
jar-vir-class =”net.qs.spring.data.apachehadoop.Main”
Mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
reducer =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Konfigureer die werk hardloper wat die geskape hadoop werk loop. Die Job naaswenner kan ingestel word deur die byvoeging van die volgende in ons aansoek konteks XML-lêer

[Code]
<HDP:werk-naaswenner id =”wordCountJobRunner” werk-ref =”wordCountJobId” hardloop-op-opstart =”ware”/>
[/Code]

  • Step 5 – Laai die aansoek verband by die begin - Ons kan nou die geskape Hadoop werk uit te voer deur die laai van die aansoek konteks wanneer die aansoek begin tot. Ons kan dit doen deur die skep van die geval van die ClasspathXmlApplicationContext voorwerp wat die naam van ons aansoek konteks lêer as toevoer parameter aanvaar om die konstruktor. Dit kan gedoen word as onder -

Listing4: Monster vertoning laai van toepassing konteks

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

openbare klas Main {
openbare statiese nietig hoof(String[] argumente) {
ApplicationContext CTX = nuwe ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Begin die Mapreduce werk - Ons kan begin ons kaart werk te verminder deur die volgende stappe -
  • Laai 'n invoer lêer in HDFS - Ons kan dit doen deur die uitvoering van die volgende opdrag op die command prompt -

[Code]

hadoop DFS bydrae behelzen sample.txt /input/sample.txt

[/Code]

Hier volg 'n voorbeeld insette lêer wat gebruik is in hierdie voorbeeld. Die teiken sleutel woord 'Hadoop ' uitgelig in GROEN. Die woord 'Hadoop ' bestaan 4 keer in die monster.

Input

insette

Image1: Monster insette lêer

  • Kyk of die lêer suksesvol deur die loop van die volgende opdrag is gelaai. Dit sal die insette lêer te wys.

[kode]

hadoop DFS -ls / insette

[/kode]

  • Begin die Mapreduce werk. Dit kan gedoen word deur die uitvoering van die belangrikste metode van ons Java lêer van die IO. As al die stappe te werk soos verwag dan sal die volgende die uitset wees.

Uitgawe: Hadoop 4
Summary: Kom ons sluit wat ons tot dusver in die volgende 'bullets bespreek –

  • beide Lente en Hadoop is nuttig raamwerke van die open source gemeenskap.
  • Deur die kombinasie van hierdie kan ons die voordeel van beide die raamwerke te kry.
  • Die skep van 'n kaart te verminder werk met behulp van die lente is 'n ses-stap proses soos hierbo verduidelik.
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