Отже, сьогодні розглянемо деякі технічні деталі, які допожуть встановити Apache Mahout на Ubuntu 12.04:
1. Встановлюємо Hadoop:
cd ~/Downloads
wget http://mirror.rmg.io/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0.tar.gz
sudo cp hadoop-2.2.0.tar.gz /usr/local
cd /usr/local
sudo tar -zxvf hadoop-2.2.0.tar.gz
export HADOOP_HOME=/usr/local/hadoop-2.2.0
export PATH=$PATH:$HADOOP_HOME/bin
Set up variables pemanently:
sudo gedit /etc/environment
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64
export HADOOP_HOME=/usr/local/hadoop-2.2.0
add to PATH line ":HADOOP_HOME/bin"
2. Тестуємо:
$HADOOP_HOME/bin/hadoop
Якщо все встановлено правильно, ви побачите щось на зразок: Usage: hadoop [--config confdir] COMMAND
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar <jar> run a jar file
checknative [-a|-h] check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
or
CLASSNAME run the class named CLASSNAME
3. Встановлюємо Maven та перевіряємо чи все встановилось коректно:
sudo apt-get install maven
mvn -version
4. І, нарешті, сам Mahout:
5. Cтворємо новий Maven "Hello world" проект:
6. Пишемо найпростішу рекомендаційну систему:
Створюємо папку datasets у папці проекту, яка міститиме файл dummy-bool.csv з наступним вмістом:
Тепер, безпосередньо, сам рекомендаційний скрипт. Створюємо файл UnresystBoolRecommend.java та поміщаємо його у src/main/java/com/unresyst/ нашого проекту. Код:
Якщо вам не вдасться відворити якийсь з вищенаведених кроків, відповідь можна знати серед цих ресурсів:
http://drunks-and-lampposts.com/2013/06/09/mahout-for-r-users/
http://codesfusion.blogspot.com/2013/10/setup-hadoop-2x-220-on-ubuntu.html?m=1
http://acadmedia.wku.edu/Pavan/Mahout_in_Action.pdf
https://code.google.com/p/unresyst/wiki/CreateMahoutRecommender
cd ~/Downloads
wget http://apache-mirror.telesys.org.ua/mahout/0.8/mahout-distribution-0.8-src.tar.gz
sudo tar -zxvf mahout-distribution-0.8-src.tar.gz
sudo cp -r ~/Downloads/mahout-distribution-0.8 /usr/local
sudo mv mahout-distribution-0.8 mahout
cd mahout/core
sudo mvn -DskipTests install
cd mahout/examples
sudo mvn install
5. Cтворємо новий Maven "Hello world" проект:
cd /usr/local/mahout
sudo mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.unresyst -DartifactId=mahoutrec
cd mahoutrec
sudo mvn compile
sudo mvn exec:java -Dexec.mainClass="com.unresyst.App" [print Hello world]
Додаємо Mahout залежності до pom.xml: <dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-core</artifactId>
<version>0.8</version>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-math</artifactId>
<version>0.8</version>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-math</artifactId>
<version>0.8</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.mahout</groupId>
<artifactId>mahout-utils</artifactId>
<version>0.8</version>
</dependency>
Компілюємо maven проект: mvn compile
6. Пишемо найпростішу рекомендаційну систему:
Створюємо папку datasets у папці проекту, яка міститиме файл dummy-bool.csv з наступним вмістом:
#userId,itemId
1,3
1,4
2,44
2,46
3,3
3,5
3,6
4,3
4,5
4,11
4,44
5,1
5,2
5,4
В даному випадку, це інформація про продукти, обрані користувачем (куплені, переглянуті, скачані). Наприклад, користувач з ID =5 обрав продукти 1, 2 та 4.Тепер, безпосередньо, сам рекомендаційний скрипт. Створюємо файл UnresystBoolRecommend.java та поміщаємо його у src/main/java/com/unresyst/ нашого проекту. Код:
package com.unresyst;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;
import java.io.IOException;
import org.apache.commons.cli2.OptionException;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.recommender.CachingRecommender;
import org.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
public class UnresystBoolRecommend {
public static void main(String... args) throws FileNotFoundException, TasteException, IOException, OptionException {
// create data source (model) - from the csv file
File ratingsFile = new File("datasets/dummy-bool.csv");
DataModel model = new FileDataModel(ratingsFile);
// create a simple recommender on our data
CachingRecommender cachingRecommender = new CachingRecommender(new SlopeOneRecommender(model));
// for all users
for (LongPrimitiveIterator it = model.getUserIDs(); it.hasNext();){
long userId = it.nextLong();
// get the recommendations for the user
List<RecommendedItem> recommendations = cachingRecommender.recommend(userId, 10);
// if empty write something
if (recommendations.size() == 0){
System.out.print("User ");
System.out.print(userId);
System.out.println(": no recommendations");
}
// print the list of recommendations for each
for (RecommendedItem recommendedItem : recommendations) {
System.out.print("User ");
System.out.print(userId);
System.out.print(": ");
System.out.println(recommendedItem);
}
}
}
}
Компілюємо проект: mvn compile
Запускаємо рекомендаційний скрипт: mvn exec:java -Dexec.mainClass="com.unresyst.UnresystBoolRecommend"
Отримуємо рекомендації для кожного користувача: User 1: RecommendedItem[item:5, value:1.0]
User 2: RecommendedItem[item:5, value:1.0]
User 2: RecommendedItem[item:3, value:1.0]
User 3: no recommendations
User 4: no recommendations
User 5: RecommendedItem[item:5, value:1.0]
User 5: RecommendedItem[item:3, value:1.0]
Якщо вам не вдасться відворити якийсь з вищенаведених кроків, відповідь можна знати серед цих ресурсів:
http://drunks-and-lampposts.com/2013/06/09/mahout-for-r-users/
http://codesfusion.blogspot.com/2013/10/setup-hadoop-2x-220-on-ubuntu.html?m=1
http://acadmedia.wku.edu/Pavan/Mahout_in_Action.pdf
https://code.google.com/p/unresyst/wiki/CreateMahoutRecommender
Наразі Mahout 0.8 працює лише з hadoop першої версії (Hadoop 1.2.1). Процес встановлення hadoop 1.2.1 аналогічний до описаного в пості. Також спільнота працює над імплементацією підтримки hadoop другої версії.
ВідповістиВидалити