Ubuntu13.10 x64にmahoutユーザでインストール。
ひっかかってた最大の理由はMahout0.9が前提にしているHadoopのバージョンが1.2.1ってことに気づくのが遅かったからでした(Mahout0.9のパッケージの中にlib/hadoop/hadoop-core-1.2.1.jarってのがあった)。
- sshd準備
# apt-get install openssh-server $ ssh-keygen -t rsa -P "" $ cat .ssh/id_rsa.pub >> .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys
- IPv6停止(他サイトの受け売り)
# vi /etc/sysctl.conf (追加) net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 # reboot
- JDKインストール
$ tar zxvf jdk-7u51-linux-x64.tar.gz # mv jdk1.7.0_51 /usr/local # ln -s /usr/local/jdk1.7.0_51 /usr/local/jdk
- Hadoopインストール
$ tar zxvf hadoop-1.2.1.tar.gz # mv hadoop-1.2.1 /usr/local # ln -s /usr/local/hadoop-1.2.1 /usr/local/hadoop $ vi /usr/local/hadoop/conf/hadoop-env.sh (追加) export JAVA_HOME=/usr/local/jdk $ vi /usr/local/hadoop/conf/core-site.xml (追加) <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> $ vi /usr/local/hadoop/conf/hdfs-site.xml (追加) <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.name.dir</name> <value>/home/hadoop/dfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/dfs/data</value> </property> $ vi /usr/local/hadoop/conf/mapred-site.xml (追加) <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> <property> <name>mapred.local.dir</name> <value>/home/hadoop/mapred</value> </property>
hdfs-site.xmlのdfs.name.dir、dfs.data.dirあたりは書いておかないと/tmpの下に作られるため、システムリブートの度に消されてあとでイラっときます。
- Mahoutインストール
$ tar zxvf mahout-distribution-0.9.tar.gz # mv mahout-distribution-0.9 /usr/local # ln -s /usr/local/mahout-distribution-0.9 /usr/local/mahout
- 環境設定
(追加) JAVA_HOME=/usr/local/jdk HADOOP_HOME=/usr/local/hadoop MAHOUT_HOME=/usr/local/mahout PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${MAHOUT_HOME}/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games export JAVA_HOME MAHOUT_HOME PATH $ exit
- ネームノードフォーマット
$ hadoop namenode -format
- Hadoop起動
$ start-all.sh $ jps 4917 JobTracker 4539 NameNode 5105 Jps 4680 DataNode 4832 SecondaryNameNode 5060 TaskTracker
6つ起動しない場合は/usr/local/hadoop/logsの下の*.logを参照。ちょっとしたことで動かなくなったりします。
で、ここでMahoutのサンプル起動しますがエラーになります。
$ cd /usr/local/mahout/examples/bin $ ./classify-20newsgroups.sh Please select a number to choose the corresponding task to run 1. cnaivebayes 2. naivebayes 3. sgd 4. clean -- cleans up the work area in /tmp/mahout-work-mahout Enter your choice : 2 : : Exception in thread "main" java.io.FileNotFoundException: File does not exist: /tmp/mahout-work-mahout/20news-all
いろいろ調べた結果、このサンプルはデータをネットワークからダウンロードしますが、環境変数HADOOP_HOMEが設定されていないとhdfs上にコピーしてくれません。
HADOOPはHADOOP_HOME設定してると「Warning: $HADOOP_HOME is deprecated.」って文句行ってくるのにMahoutのサンプルはそれを前提にしているってオチでした。
$ export HADOOP_HOME=/usr/local/hadoop
すると今度は動きます。
======================================================= Statistics ------------------------------------------------------- Kappa 0.8753 Accuracy 90.3805% Reliability 85.7215% Reliability (standard deviation) 0.2163 14/02/27 13:45:07 INFO driver.MahoutDriver: Program took 18474 ms (Minutes: 0.3079)
まだ不完全なんだなという印象。
0 件のコメント:
コメントを投稿