Wat is de lente voor Apache Hadoop?

Overzicht: Lente is one of the widely used frameworks in enterprise applications development. Lente heeft verschillende componenten zoals Spring ORM, Spring JDBC etc om verschillende functies te ondersteunen. Veer voor Apache Hadoop is het kader van de toepassing gebouw met Hadoop componenten zoals HDFS ondersteunen, MapReduce en Hive etc. Lente biedt API's om te werken met al deze componenten. Spring ondersteunt ook integratie van Hadoop met andere Spring ecosysteem projecten voor het echte leven applicatie-ontwikkeling. In dit artikel zullen we het gebruik van te bespreken Lente voor Apache Hadoop kaders.

Introductie:
Apache Hadoop is een open source software framework, die wordt gebruikt om data-sets groter volume opslaan en verwerken. De lente is ook een open source framework, die op grote schaal wordt gebruikt in Java / J2EE-applicaties. Spring dependency injection (VAN) of inversie van controle (IO) mechanisme is uitgegroeid tot een populair alternatief voor de Enterprise Java Beans (of EJB) model-. Veer heeft het voordeel dat flexibel genoeg om gemakkelijk te worden aangesloten met andere ontwikkelingskader. Met behulp van dit voordeel van de lente, kunnen we de stekker met Apache Hadoop om ons te helpen het maximale voordeel van elk van deze twee raamwerken.

Ermee beginnen:
In dit gedeelte zullen we praten over hoe je een Hadoop MapReduce Job met Spring creëren. Het gaat om de volgende stappen -

  • Step 1 - Het verkrijgen van de vereiste afhankelijkheden met behulp van Maven - Zoals we weten Maven is sterk afhankelijk van de pom.xml bestand, we de volgende gegevens in onze pom.xml file. Deze afhankelijkheid inzendingen zijn voor Hadoop kern en Spring framework.

Listing1: Monster configuratie items in pom.xml file

[code]

< !– Spring gegevens van Apache Hadoop — >
< afhankelijkheid >
< groupId > org.springframework.data </ groupId >
< artifactId > lente-data-Hadoop </ artifactId >
< version > 1.0.0.RELEASE </ version >
< /afhankelijkheid >
< !– Apache Hadoop Core -- >
< afhankelijkheid >
< groupId > org.apache.hadoop </ groupId >
< artifactId > Hadoop-core </ artifactId >
< version > 1.0.3 </version >
</afhankelijkheid>

[/ code]

  • Step 2 - Maak de Mapper component - Zoals we weten een mapper onderdeel wordt gebruikt om het eigenlijke probleem te breken in kleinere onderdelen. Deze kleinere componenten dan gemakkelijker op te lossen. We kunnen onze eigen aangepaste Mapper component door de uitbreiding van de kaart Apache verminderen Mapper klasse. We moeten de kaart methode van deze klasse overschrijven. De mapper klasse verwacht dat de volgende vier parameters -

For input: Volgende parameters zijn voor input en -waarde

  • THEN - Deze parameter beschrijft het sleuteltype die wordt verschaft als een invoer naar de mapper component.
  • VALUEIN - Deze parameter wordt het soort van de waarde die is verschaft als een invoer naar de mapper component.

voor uitgang: Volgende parameters zijn voor de output en -waarde

  • KEYOUT - Deze parameter beschrijft het type van de uit te zetten belangrijkste parameter van de mapper component.
  • VALUEOUT - Deze parameter wordt beschreven welke de uitgangswaarde van de mapper component.

Elk van deze parameters moet implementeren schrijfbaar interface. In het gegeven voorbeeld, we hebben onze Mapper gebruikt om de inhoud van een bestand één regel te lezen op een tijd en voorbereiding van key-value paren van elke lijn. Onze uitvoering van de kaart methode voert de volgende taken -

  • First, split elke enkele lijn in woorden
  • Tweede, doorloopt elk woord en neem niet alle Unicode-tekens die geen letters of tekens.
  • Derde, de bouw van een key-waarde paar met behulp van de schrijfmethode van de Context klasse die compatibel is met de verwachte output key-value pair.

Listing2: Monster op maat Mapper klasse

[Code]

public class MyWordMapper breidt Mapper<LongWritable, Tekst, Tekst, IntWritable> {
private Text myword = new Text();

@ Override
beschermde nietige kaart(LongWritable key, tekstwaarde, context context) gooit IOException, InterruptedException {
String lijn = Value.ToString();
StringTokenizer lineTokenz = new StringTokenizer(line);
terwijl (lineTokenz.hasMoreTokens()) {
String cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, nieuwe IntWritable(1));
}
}

/**
* Vervang alle Unicode-tekens die geen cijfers of letters met een lege string zijn.
* @param origineel, Het is de oorspronkelijke tekenreeks
* @return een string object dat alleen letters en cijfers bevat
*/
private String removeNonLettersNonNumbers (String origineel) {
terug original.replaceAll(“[^ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - Maak de reducer Component - Een verloopstuk is een element dat de ongewenste tussenliggende waarden en stuurt alleen de sleutelwaarde paren die relevant zijn verwijderd. Om onze aangepaste verloopstuk hebben, onze klasse moet verlengen reducer klasse en dan rijden de vermindering van methode. Het verloopstuk klasse verwacht dat de volgende vier parameters.

For input: Volgende parameters zijn voor input en -waarde

  • THEN - Deze parameter beschrijft het sleuteltype die wordt verschaft als een invoer naar de mapper component.
  • VALUEIN - Deze parameter wordt het soort van de waarde die is verschaft als een invoer naar de mapper component.

voor uitgang: Volgende parameters zijn voor de output en -waarde

  • KEYOUT - Deze parameter beschrijft het type van de uit te zetten belangrijkste parameter van de mapper component
  • VALUEOUT - Deze parameter wordt beschreven welke de uitgangswaarde van de mapper component.

Bij de implementatie van we moeten ervoor zorgen dat het datatype van de 'KeyIn' en 'keyout' parameters zijn hetzelfde. Ook de "valuein en parameters valueout" moet van hetzelfde type zijn. Onze uitvoering van het verminderen methode voert de volgende stappen -

  • First, Controleer dat de input sleutel bevat het gewenste woord.
  • Tweede, Als de bovenstaande stap waar, krijgen van het aantal gevallen van het woord.
  • Derde, de bouw van een nieuwe sleutel-waarde paar door te bellen naar de schrijfmethode van het verloopstuk klasse.

Listing3: Monster aangepaste Reducer klasse

[Code]

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

public class MyWordReducer breidt Reducer<Tekst, IntWritable, Tekst, IntWritable> {
beschermde static final String MY_TARGET_TEXT = “Hadoop”;

@ Override
beschermde nietige verminderen(tekst keyTxt, Iterable<IntWritable> waarden, context context) gooit IOException, InterruptedException {
indien (containsTargetWord(keyTxt)) {
int wCount = 0;
voor (IntWritable waarde: waarden) {
wCount = value.get();
}
context.write(key, nieuwe IntWritable(wCount));
}
}
private boolean containsTargetWord(tekst keyTxt) {
terug keyTxt.toString().evenaart(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Maak de toepassing context - De volgende stap is om de toepassing context met behulp van XML te creëren. We kunnen de toepassing context van onze toepassing met behulp van de volgende stappen te configureren -
    • Maak een eigenschappen-bestand dat de waarde van de configuratie-eigenschappen bevat. Een voorbeeld applicatie eigenschappen bestand is hieronder weergegeven -

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

  • Configureren van een woning plaats houder die wordt gebruikt om de waarden van de configuratie-eigenschappen te halen uit het gemaakte eigenschappen bestand. Dit kan door de volgende in onze applicatiecontext XML bestand -

[Code]
<context:onroerend goed-placeholder location =”classpath:application.properties” />

[/Code]

  • Configureren Apache Hadoop en zijn werk - We kunnen het standaard bestandssysteem en zijn werk tracker te configureren door de volgende in onze applicatie context file

[Code]

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

[/Code]

We moeten de volgende in onze applicatie context XML-bestand om de baan tracker te bepalen toe te voegen -

[Code]
<hdp:job id =”wordCountJobId”
input-path =”${input.path}”
uitgang-path =”${output.path}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
mapper =”net.qs.spring.data.apachehadoop.MyWordMapper”
verloopstuk =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Configureren van de baan runner waarmee de geschapen Hadoop baanlooppas. De Job loper kan worden geconfigureerd door de volgende in onze applicatie context XML-bestand

[Code]
<hdp:job-runner id =”wordCountJobRunner” job-ref =”wordCountJobId” run-at-startup =”waar”/>
[/Code]

  • Step 5 – Het laden van de applicatie context bij het opstarten - We kunnen nu de gemaakte Hadoop job uit te voeren door het laden van de applicatie context wanneer de toepassing wordt gestart. We kunnen dit doen door het creëren van de instantie van de ClasspathXmlApplicationContext object dat de naam van onze applicatie context bestand als input parameter accepteert de aannemer. Dit kan als onder -

Listing4: Monster met het laden van de applicatie context

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

public class Main {
public static void main(Snaar[] argumenten) {
ApplicationContext ctx = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Voer het MapReduce job - We kunnen beginnen onze kaart taak te verminderen met behulp van de volgende stappen -
  • Upload een input bestand in HDFS - We kunnen dit doen door het uitvoeren van de volgende opdracht op de opdrachtprompt -

[Code]

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

[/Code]

Hieronder volgt een voorbeeld invoerbestand dat gebruikt is in dit voorbeeld. Het doel sleutelwoord 'Hadoop ' wordt benadrukt in GROEN. Het woord 'Hadoop ' bestaat 4 tijden in het monster.

Input

Invoer

Image1: Sample input file

  • Controleer of het bestand met succes door het uitvoeren van de volgende opdracht is geüpload. Het zal de input file tonen.

[code]

Hadoop DFS -ls / input

[/code]

  • Voer het MapReduce job. Dit kan door het uitvoeren van de belangrijkste methode van onze java bestand van de IDE. Als alle stappen zoals verwacht dan zal de volgende de uitgestuurd.

uitgang: Hadoop 4
Summary: Laten we besluiten wat we tot nu toe in de volgende kogels hebben besproken –

  • Beide Lente en Hadoop zijn nuttig kaders van de open source gemeenschap.
  • Door het combineren van deze kunnen we het voordeel van zowel de kaders te krijgen.
  • Het creëren van een mapreduce taak met veer is een zes stappen zoals hierboven uitgelegd.
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