Cómo configurar Spring y verificar mapreduce
Cuando quieres empezar a experimentar con Spring Hadoop, te encuentras con todo tipo de problemas extraños y la gente empieza a regresar.
Si simplemente quiere probarlo sin resolver estos problemas usted mismo, aquí hay algunos pasos que pueden darle una idea rápida de lo que Spring Hadoop puede hacer.
Requisitos del entorno: Hadoop 0.20.2+
Una vez completada la instalación, comencemos...
Paso 1. Descargue Spring Hadoop, aquí está el. utilizar Descargar git Si no está familiarizado con git, también puede descargarlo directamente desde el sitio web oficial y luego descomprimirlo
Referencia: Control de versiones de software: vídeo de introducción al uso de Git en Windows
.Este ejemplo utiliza mi Tome el directorio de inicio como ejemplo. Recuerde cambiar el directorio por el suyo propio.
Recuerde cambiar el nombre del directorio a su propio nombre
/home/evanshsu mkdir springhadoop
/home/evanshsu cd springhadoop
/home/evanshsu/springhadoop git init
/home/evanshsu/springhadoop git init
/home/evanshsu/springhadoop git pull "git://github.com/SpringSource/spring-hadoop. git"
Paso 2.
/home/evanshsu/springhadoop mkdir lib
/home/evanshsu/springhadoop cp build/libs/spring-data-hadoop- 1.0.0 -SNAPSHOT.jar lib/
Paso 3.
Dado que Spring Hadoop depende de Spring-framework, debemos colocar el archivo jar de Spring-framework en lib
/home/evanshsu/springhadoop cp build/libs/spring-data-hadoop-10.0.0 BUILD p>
/home/evanshsu/spring wget "/dist.springframework.org/release /SPR/spring-framework-3.1.1.RELEASE.zip"
/home/evanshsu/ spring descomprime spring-framework-3.1.1.RELEASE.zip spring descomprime spring-framework-3.1.1. RELEASE.zip
/home/evanshsu/spring cp spring-framework-3.1.1.RELEASE/dist/*.jar /home/evanshsu /home/evanshsu/spring/samples/lib/
Paso 4. Modifique el archivo de compilación para encapsular todos los archivos jar en el mismo archivo jar
/home/evanshsu/spring/samples/wordcount vim build.gradle
<. p> descripción = 'Muestras de Spring Hadoop - WordCount'aplicar complemento: 'base'
Aplicar complemento: 'java'
aplicar complemento: 'idea'
Complemento de aplicación:
repositorios {
flatDir(dirs: '/home/evanshsu/springhadoop/lib/')
// Artefactos públicos de Spring
maven { url "pile fileTree('/home/evanshsu/springhadoop/lib/')
compilar "org.apache.hadoop:hadoop-examples :$hadoopVersion"
// ver HADOOP-7461<
/p>
runtime "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
testCompile "junit:junit:$ junitVersion"
testCompile "org. springframework:spring-test:$springVersion"
}
jar {
de configuraciones.compile.collect { it.isDirectory() ? it : zipTree( it).matching{
excluir 'META-INF/spring.schemas'
excluir 'META-INF/spring.handlers'
}
}
}
}.}
}
Paso 5. Hay un hadoop.properties especial que se utiliza para guardar datos de configuración relacionados con hadoop.
Básicamente, necesitamos cambiar wordcount.input.path wordcount.output.path al directorio donde se ejecuta wordcount, y recordar colocar algunos archivos de texto en wordcount.input.path
Además, necesitamos cambiar hd.fs a su configuración de hdfs. Además, deberá cambiar hd.fs a su configuración de hdfs
Si está utilizando el Centro Nacional de Hadoop, cambie hd.fs a hd.fs=hdfs://gm2.nchc .org.tw :8020
/home/evanshsu/spring/samples/wordcount vim src/ main/resources/hadoop.
wordcount.input.path=/user/evanshsu/ input.txt
wordcount.output.path=/user/evanshsu/output
hive.host=localhost
hive.port=12345
colmena .url=jdbc:hive://${hive.host}:${hive.port}
hd.fs=hdfs:// localhost:9000
mapred.job .tracker=localhost:9001
path.cat=bin${file.separator}stream-bin${file.separator}cat
path.wc=bin ${file. separator}stream-bin${file.separator}wc
input.directory=logs
log.input=/logs/input/
log.output =/logs/output/
distcp.src=${hd.fs}/distcp/source.txt
distcp.dst=${hd.fs} /distcp/dst
Paso 6.
Este es el archivo de configuración más importante. Cualquiera que haya usado Spring sabe que este archivo de configuración es el alma de Spring
/home/evanshsu/spring/samples/wordcount vim src/main/resources/META-INF. /spring/context.xml
xml versión="1.0" codificación="UTF-8"?
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http:// www.springframework.org/schema/context" xmlns:hdp="http://www.springframework.org/schema/hadoop" xmlns:p="http: //www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/ beanshttp://www.springframework.org/schema/beans/ spring-beans.xsd http://www.springframework.org/schema/context http://www. springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/hadoop http://www.springframework .org/schema/hadoop/spring-hadoop.xsd"> fs.default.name=${hd.fs} input-path="${wordcount.input.path}" ruta-salida ="${wordcount.output.path}" mapper="org.springframework.samples.wordcount.WordCountMapper" reducer="org.springframework.data.hadoop.samples .wordcount.WordCountReducer"< jar-by-class="org.springframework.data.hadoop.samples.wordcount.WordCountMapper" /> < ;bean id="runner" class="org.springframework.data.hadoop.mapreduce.JobRunner" p:jobs-ref="wordcount-job"/>
Step7.io.IOException;
importar java.util.StringTokenizer;
importar org.apache.hadoop.io.IntWritable;
importar org .apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
clase pública WordCountMapper extiende Mapper<.Object, Text, Text, IntWritable> {
IntWritable estático final privado uno = nuevo IntWritable(1);
palabra de texto privada = nuevo texto();
mapa vacío público (clave de objeto, valor de texto , Contexto contexto)
lanza IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.write(word, one);
}
}
}
/home/evanshsu/spring/samples/wordcount vim src/main/java/org/springframework/data/hadoop/samples/ wordcount/WordCountReducer. java
Paquete org.p>
importar org.apache.hadoop.io.IntWritable;
importar org.apache.hadoop.io.Text;
importar org.apache.hadoop.mapreduce.Reducer;
importar org.apache.hadoop.mapreduce.Reducer;
importar org.apache.hadoop.io .Text;
import org.apache.hadoop.mapreduce.Reducer; context.write(clave, resultado);
}
}
Paso 8. Agregue spring.schemas, spring.handlers
/home/evanshsu/spring/samples/ wordcount vim src/main/resources/META-INF/spring.schemas
t-3.1.xsd
http\://www.springframework.org/schema/hadoop/spring-hadoop.xsd=/org/springframework/data/hadoop/config/spring-hadoop-1.0. xsd
/home/evanshsu/spring/samples/wordcount vim src/main/resources/META-INF/spring.handlers
http\://www.springframework.org/ esquema/p=org.springframework.beans.factory.xml.SimplePropertyNamespaceHandler
http\://www.springframework.org/schema/context=org.springframework.context.config.ContextNamespaceHandler
http\://www.springframework.org/schema/hadoop=org.springframework.data.hadoop.config.HadoopNamespaceHandler
Finalmente, el último paso es encapsular todos los archivos jar y. Tíralo en hadoop
/home/evanshsu/spring/samples/wordcount ..../.../gradlew jar
/home/evanshsu/spring/samples/wordcount hadoop jar build/libs/wordcount-1.0.0.M1.jarorg.springframework.data.hadoop .samples.wordcount.Main