Aprendizaje en Grandes Volúmenes de Datos, Clase 20 por Pablo Ariel Duboue, PhD disponible bajo licencia CC-BY-SA Comentarios clase pasada: * ¿Jython vs. Hadoop Streaming con CPython? Parece que streaming es más útil, si uno procesa lineas de texto porque se puede usar las librerías de CPython. Referencia: * Instalacion industrial de hadoop Capítulo 16 de H4D Script (compilando mahout): * http://mahout.apache.org/developers/how-to-release.html * http://mahout.apache.org/developers/buildingmahout.html * https://issues.apache.org/jira/browse/MAHOUT-1329 $ git clone https://github.com/apache/mahout.git $ cd mahout $ mvn clean install package -DskipTests -Drelease -Dmahout.skip.distribution=false -Dhadoop.profile=200 -Dhadoop2.version=2.4.1 -Dhbase.version=0.98.0-hadoop2 ( paquetes estan en distribution/target ) ( si sacan -DskipTests necesitan 8Gb de RAM y alrededor de 1.5hs para los tests ) ( en clase usamos el commit 6651a328679742ce6c14ce8a4e6ab0bc0a05f7e9 ) Script (mahout linea de comandos): setear JAVA_HOME setear HADOOP_PREFIX al hadoop de la clase 16 descomprimir http://aprendizajengrande.net/clases/material/aprendizajengrande20.tar.gz descomprimir mahout-distribution-1.0-SNAPSHOT.tar.gz descomprimir ml-100k.zip $ cd mahout-distribution-1.0-SNAPSHOT $ export MAHOUT_HOME=$PWD $ ./bin/mahout recommenditembased --input ../ml-100k/u.data --output recos --similarityClassname SIMILARITY_COSINE $ more ./recos/part-r-00000 ( ver que le gustaba al usuario 1 ) $ egrep '^1\s' ../ml-100k/u.data | perl -ne 'print if (m/\t5\t/)'| perl -e 'open(M,"../ml-100k/u.item");@m=map{chomp;s/^[0-9]+.//;s/\|.*//;$_};while(){@a=split(/\t/,$_);print $m[$a[1]-1]."\n"}'|less ( ver que le recomendaron al usuario 1 ) $ egrep '^1\s' ./recos/part-r-00000 | perl -e 'open(M,"../ml-100k/u.item");@m=map{chomp;s/^[0-9]+.//;s/\|.*//;$_};$_=;s/.*\[//;s/\].*//;chomp;@a=split(/,/,$_);foreach(@a){($m,$r)=split(/\:/,$_); print $m[$m-1]."\t$r\n"}' ( ejemplo de clasificacion usando NB ) $ ./examples/bin/classify-20newsgroups.sh ( encontrar el código fuente de los distintos subprogramar del driver ./bin/mahout ) $ jar xf ./mahout-examples-1.0-SNAPSHOT-job.jar driver.classes.default.props $ grep recommenditembased driver.classes.default.props org.apache.mahout.cf.taste.hadoop.item.RecommenderJob = recommenditembased : Compute recommendations using item-based collaborative filtering $ cd .. $ git clone https://github.com/apache/mahout.git $ cd mahout $ find . -name RecommenderJob.java ./mrlegacy/src/main/java/org/apache/mahout/cf/taste/hadoop/item/RecommenderJob.java