Que é primavera para Apache Hadoop?

Visión global: primavera is one of the widely used frameworks in enterprise applications development. primavera ten compoñentes diferentes como Spring ORM, Primavera JDBC etc para apoiar características diferentes. Primavera para Apache Hadoop é a estrutura de apoio á creación de aplicacións con compoñentes do Hadoop como HDFS, MapReduce e Hive etc. primavera ofrece APIs para traballar con todos estes compoñentes. Primavera tamén soporta a integración do Hadoop con outros proxectos do ecosistema da primavera para o desenvolvemento de aplicacións da vida real. Neste artigo iremos discutir o uso de primavera para cadros Apache Hadoop.

Introdución:
Apache Hadoop é unha estrutura de software de código aberto, que se usa para almacenar e procesar conxuntos de datos de volume maior. A primavera é tamén un framework de código aberto, que é amplamente utilizado en aplicacións Java / J2EE. inxección de dependencia do Spring (DE) ou inversión de control (IO) mecanismo tornouse unha alternativa popular para os Enterprise Java Beans (ou EJB) modelo. Mola ten a vantaxe de ser suficientemente flexible para ser facilmente conectado con calquera outra estrutura de desenvolvemento. Usando esta vantaxe de primavera, podemos conectar con Apache Hadoop para axudarnos a obter o máximo beneficio de cada un destes dous cadros.

Comezar:
Nesta sección, imos falar sobre como crear un Job Hadoop MapReduce usando Spring. Isto implica os seguintes pasos -

  • Step 1 - Obter as dependencias necesarias utilizando Maven - Como sabemos Maven é altamente dependente o ficheiro pom.xml, facemos as seguintes entradas no noso arquivo pom.xml. Estas entradas de dependencia son para o núcleo Hadoop e framework Spring.

Listing1: entradas de configuración de mostra no ficheiro pom.xml

[código]

< !– Primavera de datos Apache Hadoop — >
< dependencia >
< groupId > org.springframework.data </ groupId >
< artifactId > Primavera-data-Hadoop </ artifactId >
< version > 1.0.0.DIVULGACIÓN </ version >
< /dependencia >
< !– Apache Hadoop Núcleo -- >
< dependencia >
< groupId > org.apache.hadoop </ groupId >
< artifactId > Hadoop núcleos </ artifactId >
< version > 1.0.3 </version >
</dependencia>

[/ código]

  • Step 2 - Crear a componente Mapper - Como sabemos un compoñente mapeador se usa para romper o problema en compoñentes menores. Estes compoñentes menores, a continuación, chegar a ser máis fácil de resolver. Podemos ter o noso propio compoñente de mapeador de personalización, ampliando o mapa Apache reducir clase Mapper. Necesitamos substituír o método mapa desta clase. A clase mapeador espera que os catro parámetros a seguir -

para entrada: Seguintes parámetros para clave de entrada eo valor

  • ENTÓN - Este parámetro describe o tipo de chave, que é proporcionada como unha entrada para o compoñente mapeador.
  • VALUEIN - Este parámetro describe o tipo de valor que é proporcionada como unha entrada para o compoñente mapeador.

para saída: Seguintes parámetros para clave de produción e no valor

  • KEYOUT - Este parámetro describe o tipo de colocar un parámetro clave do compoñente mapeador.
  • VALUEOUT - Este parámetro describe o tipo de valor de saída do compoñente mapeador.

Cada un destes parámetros debe aplicar a gravable interface. No exemplo dado, temos usado noso mapeador para ler o contido dun ficheiro dunha liña de cada vez e preparar pares chave-valor de cada liña. Nosa implementación do método mapa executa as seguintes tarefas -

  • First, dividir cada liña única en palabras
  • Segundo, percorrer cada palabra e sacar nin todos os caracteres unicode que non sexan nin cartas nin caracteres.
  • Terceiro, construír un par de valores clave usando o método de gravación do contexto clase que é compatible co par clave-valor de saída espera.

Listing2: clase Mapper personalizado Mostra

[Code]

clase pública MyWordMapper estende Mapper<LongWritable, texto, texto, IntWritable> {
myword Texto privada = new Texto();

@ Override
mapa protected void(clave LongWritable, valor de texto, contexto contexto) lanza IOException, InterruptedException {
liña String = Value.ToString();
StringTokenizer lineTokenz = new StringTokenizer(line);
mentres (lineTokenz.hasMoreTokens()) {
Cordas cleaned_data = removeNonLettersNonNumbers(lineTokenz.nextToken());
myword.set(cleaned_data);
context.write(myword, nova IntWritable(1));
}
}

/**
* Substituír todos os caracteres unicode que non son números nin letras cunha cadea baleira.
* orixinais @param, É a cadea orixinal
* @return un obxecto cadea que contén só letras e números
*/
removeNonLettersNonNumbers private String (cadea orixinal) {
volver original.replaceAll(“[^ \ P{L}\\p{N}]”, “”);
}
}

[/Code]

Step 3 - crear o redutor Compoñente - Un redutor é un compoñente que exclúe os valores intermedios non desexados e encamiña só os pares de valores clave que son relevantes. Para ter o noso redutor personalizado, nosa clase debe estender o redutor clase e máis de montar o método de reducir. A clase redutor de espera os seguintes catro parámetros.

para entrada: Seguintes parámetros para clave de entrada eo valor

  • ENTÓN - Este parámetro describe o tipo de chave, que é proporcionada como unha entrada para o compoñente mapeador.
  • VALUEIN - Este parámetro describe o tipo de valor que é proporcionada como unha entrada para o compoñente mapeador.

para saída: Seguintes parámetros para clave de produción e no valor

  • KEYOUT - Este parámetro describe o tipo de colocar un parámetro clave do compoñente mapeador
  • VALUEOUT - Este parámetro describe o tipo de valor de saída do compoñente mapeador.

Durante a posta en marcha, hai que ter seguro de que o tipo de datos dos parámetros e 'keyin' 'keyout' son os mesmos. Tamén o 'valuein "e os parámetros" valueout debe ser de mesmo tipo. A implantación do método de reducir executa os seguintes pasos -

  • First, Asegúrese de que a clave de entrada contén a palabra desexada.
  • Segundo, Se o paso anterior é certa, obter o número de aparicións da palabra.
  • Terceiro, construír un novo par de chaves-valor chamando o método de escritura da clase redutor.

Listing3: clase Redutor personalizado Mostra

[Code]

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

clase pública MyWordReducer estende Redutor<texto, IntWritable, texto, IntWritable> {
protexidas estática MY_TARGET_TEXT final String = “Hadoop”;

@ Override
protected void reducir(keyTxt texto, Iterable<IntWritable> values, contexto contexto) lanza IOException, InterruptedException {
se (containsTargetWord(keyTxt)) {
int wCount = 0;
a (valor IntWritable: values) {
wCount = value.get();
}
context.write(key, nova IntWritable(wCount));
}
}
containsTargetWord private boolean(keyTxt texto) {
volver keyTxt.toString().é igual a(MY_TARGET_TEXT);
}
}

[/Code]

  • Step 4 - Crear o contexto da aplicación - O seguinte paso é crear o contexto da aplicación usando XML. Podemos configurar o contexto de aplicación do noso programa a usar os pasos a seguir -
    • Crear un ficheiro de propiedades que contén o valor das propiedades de configuración. Un arquivo de propiedades da aplicación de exemplo móstrase a continuación -

[Code]
fs.default.name = hdfs://localhost:9000
mapred.job.tracker = localhost:9001
input.path = / path / to / input / arquivo /
output.path = / path / to / saída / ficheiro
[/Code]

  • Configurar un soporte de propiedade lugar que se usa para obter os valores de propiedades de configuración desde o ficheiro de propiedades creado. Isto pódese facer engadindo a seguinte na nosa arquivo XML contexto de aplicación -

[Code]
<contexto:localización da propiedade-espazo reservado =”classpath:application.properties” />

[/Code]

  • Configurar Apache Hadoop eo seu traballo - Podemos configurar o sistema de ficheiros predeterminado ea súa rastreador traballo, engadindo a seguinte na nosa ficheiro contexto aplicación

[Code]

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

[/Code]

Hai que engadir o seguinte na nosa ficheiro contextual XML aplicación para definir o rastreador de traballo -

[Code]
<HDP:ID de traballo =”wordCountJobId”
input-path =”${input.path}”
output-path =”${output.path}”
jar-by-class =”net.qs.spring.data.apachehadoop.Main”
mapeador =”net.qs.spring.data.apachehadoop.MyWordMapper”
redutor =”net.qs.spring.data.apachehadoop.MyWordReducer”/>

[/Code]

  • Configurar o corredor de traballo que se executa o traballo Hadoop creado. O corredor de traballo pode ser configurado engadindo a seguinte na nosa ficheiro contextual XML aplicación

[Code]
<HDP:ID de traballo-runner =”wordCountJobRunner” job-ref =”wordCountJobId” run-at-inicialización =”certo”/>
[/Code]

  • Step 5 – Cargando o contexto de aplicación no inicio - Agora podemos realizar o traballo Hadoop creado por cargar o contexto da aplicación cando a aplicación execútase. Podemos facelo a través da creación da instancia do obxecto ClassPathXmlApplicationContext que acepta o nome do noso arquivo de contexto de aplicación como parámetro de entrada para o constructor. Isto pódese facer como baixo -

Listing4: Mostra mostrando carga de contexto de aplicación

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

public class principal {
public static void main(Corda[] argumentos) {
ApplicationContext CTX = new ClassPathXmlApplicationContext(“applicationContext.xml”);
}
}

[/Code]

  • Step 6 - Realizar a tarefa MapReduce - Podemos comezar o noso mapa reducir a tarefa usando os seguintes pasos -
  • Subir un ficheiro de entrada no HDFS - Podemos facelo, executando o seguinte comando no ventá de consola -

[Code]

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

[/Code]

Segue-se un ficheiro de entrada de mostra, que foi usado neste exemplo. A palabra clave destino 'Hadoop ' é destaque na VERDE. A palabra "Hadoop ' existe 4 veces na mostra.

Input

Entrada

Image1: ficheiro de entrada de mostra

  • Asegúrese de que o arquivo foi enviado con éxito, executando o seguinte comando. Ha amosar o ficheiro de entrada.

[código]

DFS Hadoop -LS / input

[/código]

  • Realizar a tarefa MapReduce. Isto pódese facer a executar método principal do noso arquivo Java do IDE. Se todos os pasos funcionan como se esperaba, a continuación, o seguinte será a saída.

saída: Hadoop 4
Summary: Imos completar o que temos discutido ata agora nas seguintes balas –

  • tanto primavera e Hadoop son estruturas útiles a partir da comunidade de código aberto.
  • Ao combinar estes, podemos obter o beneficio de ambos os cadros.
  • Crear un mapa reducir traballo usando primavera é un proceso de seis etapas, tal como se explica anteriormente.
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