Quina és la primavera per Apache Hadoop?

Visió de conjunt: primavera is one of the widely used frameworks in enterprise applications development. primavera té diferents components com Spring ORM, Primavera JDBC, etc per donar suport diferents característiques. Primavera per Apache Hadoop és el marc per donar suport a la creació d'aplicacions amb components de Hadoop com HDFS, MapReduce i Rusc etc.. primavera proporciona les API per treballar amb tots aquests components. La primavera també és compatible amb la integració de Hadoop amb altres projectes d'ecosistemes de primavera per al desenvolupament d'aplicacions de la vida real. En aquest article anem a discutir l'ús de primavera per a marcs d'Apache Hadoop.

Introducció:
Apache Hadoop és un marc de programari de codi obert, que s'utilitza per emmagatzemar i processar dels conjunts de dades de volum major. La primavera també és un marc de codi obert, que és àmpliament utilitzat en aplicacions Java / J2EE. la injecció de dependència de la primavera (D') o inversió de control (IO) mecanisme s'ha convertit en una alternativa popular als Enterprise Java Beans (o EJB) model. Primavera té l'avantatge de ser prou flexible per ser fàcilment connectat amb qualsevol altre marc de desenvolupament. L'ús d'aquest avantatge de la primavera, podem connectar-lo amb Apache Hadoop per ajudar-nos a aconseguir el màxim benefici de cada un d'aquests dos marcs.

Començant:
En aquesta secció parlarem sobre com crear un treball Hadoop MapReduce utilitzant Spring. Això implica els següents passos -

  • Step 1 - Obtenir les dependències requerides utilitzant Maven - Com sabem expert depèn de la pom.xml altament, fem les següents entrades al nostre pom.xml. Aquestes entrades són de dependència per Hadoop nucli i la infraestructura de Spring.

Listing1: entrades de configuració d'exemple en pom.xml

[codi]

< !– Primavera de dades Apache Hadoop — >
< dependència >
< groupId > org.springframework.data </ groupId >
< artifactId > primavera-data-Hadoop </ artifactId >
< version > 1.0.0.ALLIBERAMENT </ version >
< /dependència >
< !– Apache Hadoop Core -- >
< dependència >
< groupId > org.apache.hadoop </ groupId >
< artifactId > Hadoop nuclis </ artifactId >
< version > 1.0.3 </version >
</dependència>

[/ codi]

  • Step 2 - Crear el component assignador - Com sabem un component assignador s'utilitza per trencar el problema real en components més petits. Aquests components més petits es converteixen en més fàcil de resoldre. Podem tenir el nostre propi component assignador personalitzat mitjançant l'ampliació del mapa Apache reduir classe Mapper. Hem de sobreescriure el mètode de mapa d'aquesta classe. La classe assignador espera que els quatre paràmetres següents -

per a l'entrada: Els següents paràmetres són per a la clau d'entrada i el valor

  • LLAVORS - Aquest paràmetre descriu el tipus de clau que es proporciona com una entrada al component assignador.
  • VALUEIN - Aquest paràmetre descriu el tipus del valor que proporciona com una entrada al component assignador.

per a la sortida: Els següents paràmetres són per a la clau de producció i el valor

  • KEYOUT - Aquest paràmetre descriu el tipus de posar un paràmetre clau del component assignador.
  • VALUEOUT - Aquest paràmetre descriu el tipus del valor de sortida del component de assignador.

Cada un d'aquests paràmetres ha d'aplicar el gravable interface. En l'exemple donat, hem utilitzat la nostra assignador de llegir el contingut d'un arxiu d'una línia alhora i preparar parells de clau i valor de cada línia. La nostra implementació del mètode mapa realitza les següents tasques -

  • First, dividir cada línia única en paraules
  • En segon lloc, iterar a través de cada paraula i treure ni tots els caràcters Unicode que són lletres ni caràcters.
  • Tercer, construir un parell clau-valor fent servir el mètode d'escriptura de la context classe que és compatible amb la sortida esperada parell clau-valor.

LISTING2: Mostra de classe Mapper personalitzada

[Code]

MyWordMapper classe pública s'estén Mapper<LongWritable, Text, Text, IntWritable> {
myword text privat = nou text();

@ Override
protegida mapa buit(clau LongWritable, valor de text, context context) throws IOException, InterruptedException {
línia de corda = value.toString();
StringTokenizer lineTokenz = new StringTokenizer(line);
mentre (lineTokenz.hasMoreTokens()) {
Cadena cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, nova IntWritable(1));
}
}

/**
* Torneu a introduir tots els caràcters Unicode que no són ni números ni lletres amb una cadena buida.
* @param originals, És l'original
* @return un objecte de cadena que conté només lletres i números
*/
removeNonLettersNonNumbers private String (cadena original) {
tornar original.replaceAll(“[^ \ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - crear el reductor Component - Un reductor és un component que elimina els valors intermedis no desitjats i reenvia només els parells de valors clau que són rellevants. Per tenir el nostre reductor personalitzada, la nostra classe ha d'estendre el reductor classe i més de viatge en el mètode de reduir. La classe reductor d'espera dels següents quatre paràmetres.

per a l'entrada: Els següents paràmetres són per a la clau d'entrada i el valor

  • LLAVORS - Aquest paràmetre descriu el tipus de clau que es proporciona com una entrada al component assignador.
  • VALUEIN - Aquest paràmetre descriu el tipus del valor que proporciona com una entrada al component assignador.

per a la sortida: Els següents paràmetres són per a la clau de producció i el valor

  • KEYOUT - Aquest paràmetre descriu el tipus de posar un paràmetre clau del component assignador
  • VALUEOUT - Aquest paràmetre descriu el tipus del valor de sortida del component de assignador.

Si bé l'aplicació cal assegurar-se que el tipus de dades dels paràmetres 'i' 'KEYIN keyout' són els mateixos. També el 'VALUEIN' i els paràmetres valueout 'han de ser de mateix tipus. La nostra implementació del mètode de reduir realitza els següents passos -

  • First, comprovi que la clau d'entrada conté la paraula desitjada.
  • En segon lloc, Si el pas anterior és cert, obtenir el nombre de vegades que apareix la paraula.
  • Tercer, construir un nou parell clau-valor mitjançant una trucada al mètode d'escriptura de la classe reductor.

Listing3: Mostra de classe Reductor personalitzada

[Code]

importació org.apache.hadoop.io.IntWritable;
importació org.apache.hadoop.io.Text;
importació org.apache.hadoop.mapreduce.Reducer;

MyWordReducer classe pública s'estén Reductor<Text, IntWritable, Text, IntWritable> {
protegida MY_TARGET_TEXT static final String = “Hadoop”;

@ Override
protected void reduir(keyTxt text, iterable<IntWritable> valors, context context) throws IOException, InterruptedException {
si (containsTargetWord(keyTxt)) {
int = wCount 0;
per (valor IntWritable: valors) {
wCount = value.get();
}
context.write(clau, nova IntWritable(wCount));
}
}
containsTargetWord private boolean(keyTxt text) {
tornar keyTxt.toString().és igual(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Crear el context d'aplicació - El següent pas és crear el context d'aplicació mitjançant XML. Podem configurar el context d'aplicació de la nostra aplicació mitjançant els passos següents -
    • Crear un fitxer de propietats que conté el valor de les propietats de configuració. Un fitxer de propietats de l'aplicació d'exemple es mostra a continuació -

[Code]
fs.default.name = hdfs://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / ruta / a / input / arxiu /
output.path = / ruta / a / sortida / arxiu
[/Code]

  • Configura un marcador de posició de propietat que s'utilitza per recuperar els valors de les propietats de configuració del fitxer de propietats creat. Això es pot fer afegint la següent en el nostre fitxer XML context d'aplicació -

[Code]
<context:ubicació de la propietat-marcador de posició =”classpath:application.properties” />

[/Code]

  • Configura Apache Hadoop i el seu treball - Podem configurar el sistema d'arxius predeterminat i amb el rastrejador de treball afegint la següent en el nostre arxiu de context d'aplicació

[Code]

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

[/Code]

Cal afegir el següent en el nostre arxiu de context d'aplicació XML per definir el rastrejador de treball -

[Code]
<hdp:Identificació del treball =”wordCountJobId”
entrada-path =”${input.path}”
sortida-path =”${output.path}”
jar-per-class =”net.qs.spring.data.apachehadoop.Main”
assignador =”net.qs.spring.data.apachehadoop.MyWordMapper”
= reductor”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Configura el corredor de treball que s'executa el treball creat Hadoop. El corredor d'ocupació es pot configurar afegint la següent en el nostre arxiu de context d'aplicació XML

[Code]
<hdp:Identificació de la feina favorit =”wordCountJobRunner” treball-ref =”wordCountJobId” de gestió en situació de posada en marxa =”veritable”/>
[/Code]

  • Step 5 – Carregant el context d'aplicació en l'arrencada - Ara podem executar el treball Hadoop creat per carregar el context d'aplicació quan l'aplicació s'inicia. Podem fer això mitjançant la creació de la instància de l'objecte ClassPathXmlApplicationContext que accepta el nom del nostre arxiu de context d'aplicació com a paràmetre d'entrada per al constructor. Això es pot fer com a baix -

Listing4: Mostra mostra la càrrega de context d'aplicació

[Code]
importació org.springframework.context.ApplicationContext;
importació org.springframework.context.support.ClassPathXmlApplicationContext;

public class Principal {
public static void principal(Cadena[] arguments) {
Application Context CTX = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Executar el treball MapReduce - Podem començar el nostre full de treball a reduir l'ús dels següents passos -
  • Carregar un arxiu d'entrada en HDFS - Podem fer-ho si executeu la següent comanda en l'indicatiu -

[Code]

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

[/Code]

El que segueix és un arxiu d'entrada de la mostra que s'ha utilitzat en aquest exemple. La paraula clau de destinació 'Hadoop ' es posa en relleu en VERD. La paraula 'Hadoop ' existeix 4 vegades en la mostra.

Input

entrada

Image1: arxiu d'entrada de la mostra

  • Comproveu si l'arxiu s'ha carregat correctament executant la següent comanda. Es mostrarà el fitxer d'entrada.

[codi]

DFS Hadoop -ls / entrada

[/codi]

  • Executar el treball MapReduce. Això es pot fer mitjançant l'execució del mètode principal del nostre arxiu de Java des de l'IDE. Si tots els passos funcionen com s'esperava llavors el següent serà la sortida.

sortida: Hadoop 4
Summary: Anem a concloure el que hem discutit fins ara en els següents punts –

  • Tots dos primavera i Hadoop són marcs útils de la comunitat de codi obert.
  • Mitjançant la combinació d'aquests podem obtenir el benefici tant dels marcs.
  • Crear un mapa reduir treball usant la primavera és un procés de sis passos com es va explicar anteriorment.
Etiquetatge en: ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share