Mahout如何使用?
Mahout安裝詳細全過程1、jdk安裝 22、SSH無密碼驗證配置 23、 Hadoop配置 34、Hadop使用 65、Maven安裝 76、安裝mahout 77、hadoop集群來執行聚類算法 88、其他 8――――――――――――――――――――1、jdk安裝1.1、到官網下載相關的JDK下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html1.2
、打開“終端”輸入:sh jdk-6u24-linux-i586.bin
1.3、設置JAVA_HOME環境系統變量輸入:vi /etc/environment 在文件中添加:export JAVA_HOME=/root/jdk1.6.0_24 export JRE_Home=/root/jdk1.6.0_24/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib 同樣,修改第二個文件。輸入:vi /etc/profile 在umask 022之前添加以下語句:export JAVA_HOME=/root/jdk1.6.0_24 export JRE_Home=/root/jdk1.6.0_24/jre export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin 1.4、注銷用戶,檢測JDK版本。輸入:java -version 2、集群環境介紹集群包含三個節點:1 個 namenode,2 個 datanode,節點之間局域網連接,可以相互 ping 通。節點 IP 地址分布如下:Namenode: master@192.168.1.10Datanode1: slave1 @192.168.1.20Datanode2: slave2@192.168.1.21三臺節點上均是CentOS系統,Hadoop在/root/hadoop/目錄下。在/etc/hosts上添加主機名和相應的IP地址:192.168.1.10 master192.168.1.20 slave1192.168.1.21 slave23、SSH無密碼驗證配置2.1 Hadoop 需要使用SSH 協議,namenode 將使用SSH 協議啟動 namenode和datanode 進程,偽分布式模式數據節點和名稱節點均是本身,必須配置 SSH localhost無密碼驗證。用root用戶登錄,在家目錄下執行如下命令:ssh-keygen -t rsa [root@master ~]# ssh-keygen -t rsaGenerating public/private rsa keypair.Enter
file in which to save the key (/root/.ssh/id_rsa):
& 按回車默認路徑 &Created directory '/root/.ssh'. &創建/root/.ssh
目錄&Enter passphrase (empty for no passphrase):Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa.Your
public key has been saved in /root/.ssh/id_rsa.pub.The
key fingerprint is:c6:7e:57:59:0a:2d:85:49:23:cc:c4:58:ff:db:5b:38 root@master通過以上命令將在/root/.ssh/
目錄下生成id_rsa私鑰和id_rsa.pub
公鑰。進入/root/.ssh
目錄在namenode節點下做如下配置:[root@master .ssh]# catid_rsa.pub
> authorized_keys[root@master .ssh]# scp authorized_keys 192.168.1.20:/root/.ssh/[root@master
.ssh]# scp authorized_keys 192.168.1.21:/root/.ssh/
配置完畢,可通過ssh 本機IP 測試是否需要密碼登錄。2.2 和namenode無密碼登錄所有Datanode原理一樣,把Datanode的公鑰復制到Namenode的.ssh
目錄下。[root@slave1 .ssh]# scp authorized_keys1 192.168.1.10:/root /.ssh[root@ slave2.ssh]# scp authorized_keys2 192.168.1.10:/root /.ssh
將剛傳過來的authorized_keys1、2加入到authorized_keys[root@ master.ssh]# cat authorized_keys1 > authorized_keys[root@ master.ssh]# cat authorized_keys2 > authorized_keys這樣也能在Datanode上關閉和啟動Hadoop服務。4、 Hadoop配置下載 hadoop-0.20.2.tar.gz
, 進行解壓。tar zxvf hadoop-0.20.2.tar.gz
修改/etc/profile,加入如下:# set hadoop pathexport HADOOP_HOME=/root/hadoopexport PATH=$HADOOP_HOME/bin:$PATH4.1、進入hadoop/conf, 配置Hadoop配置文件4.1.1 配置hadoop-env.sh
文件添加 # set java environmentexport JAVA_HOME=/root/jdk1.6.0_24編輯后保存退出。4.1.2 配置core-site.xml# vi core-site.xml4.1.3 配置hdfs-site.xml# vi hdfs-site.xml4.1.4 配置mapred-site.xml# vi mapred-site.xml4.1.5 配置masters# vi masters192.168.1.104.1.6 配置slaves# vi slaves192.168.1.20192.168.1.214.2、 Hadoop啟動4.2.1 進入 /root/hadoop/bin目錄下,格式化namenode# ./hadoop namenode ?Cformat4.2.2 啟動hadoop所有進程在/root/hadoop/bin 目錄下,執行start-all.sh
命令啟動完成后,可用jps命令查看hadoop進程是否啟動完全。正常情況下應該有如下進程:10910 NameNode11431 Jps11176 SecondaryNameNode11053 DataNode11254 JobTracker11378 TaskTracker 我在搭建過程中,在此環節出現的問題最多,經常出現啟動進程不完整的情況,要不是datanode無法正常啟動,就是namenode或是TaskTracker啟動異常。解決的方式如下:1)在Linux下關閉防火墻:使用service iptables stop命令;2)再次對namenode進行格式化:在/root/hadoop/bin 目錄下執行hadoop namenode -format命令3)對服務器進行重啟4)查看datanode或是namenode對應的日志文件,日志文件保存在/root/hadoop/logs目錄下。5)再次在/bin目錄下用start-all.sh
命令啟動所有進程,通過以上的幾個方法應該能解決進程啟動不完全的問題了。4.2.3 查看集群狀態在 bin目錄下執行:hadoop dfsadmin -report# hadoop dfsadmin ?Creport4.3 在WEB頁面下查看Hadoop工作情況打開IE瀏覽器輸入部署Hadoop服務器的IP:http://localhost:50070http://localhost:50030。5、Hadop使用一個測試例子wordcount:計算輸入文本中詞語數量的程序。WordCount在Hadoop主目錄下的java程序包hadoop-0.20.2-examples.jar
中,執行步驟如下:在/root/hadoop/bin/目錄下進行如下操作:./hadoop fs -mkdir input(新建目錄名稱,可任意命名)mkdir /root/a/vi /root/a/a.txt
寫入hello world hello# hadoop fs -copyFromLocal /root/a/ input在/root/hadoop/bin下執行:# ./hadoop jar hadoop-0.20.2-examples.jar
wordcount input output (提交作業,此處需注意input與output是一組任務,下次再執行wordcount程序,還要新建目錄intput1與output1不能跟input與output重名)6、Maven安裝6.1下載Maven解壓tar vxzf apache-maven-3.0.2-bin.tar.gzmv
apache-maven-3.0.2 /root/maven6.2 vi ~/.bashrc
添加如下兩行export M3_HOME=/root/mavenexport PATH=${M3_HOME}/bin:${PATH}6.3 先logout,之后再login查看maven版本,看是否安裝成功mvn -version7、安裝mahout安裝方法見:https://cwiki.apache.org/confluence/display/MAHOUT/BuildingMahout8
、hadoop集群來執行聚類算法8.1數據準備cd /root/hadoopwgethttp://archive.ics.uci.edu/ml/databases/synthetic_control/synthetic_control.data8.2
./hadoop fs -mkdir testdata./hadoop fs -putsynthetic_control.data
testdata./hadoop fs -lsr testdatabin/hadoop jar /root/mahout/mahout-examples-0.4-job.jar
org.apache.mahout.clustering.syntheticcontrol.kmeans.Job8.3查看一下結果吧bin/mahout vectordump --seqFile /user/root/output/data/part-r-00000這個直接把結果顯示在控制臺上。9、hadoop集群來執行推薦算法分布式bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar
org.apache.mahout.cf.taste.hadoop.item.RecommenderJob
-Dmapred.map.tasks=3 -Dmapred.reduce.tasks=3 -Dmapred.input.dir=testdata/100wan.txt
-Dmapred.output.dir=output2偽分布式bin/hadoop jar /root/trunk/mahout-distribution-0.4/mahout-core-0.4-job.jar
org.apache.mahout.cf.taste.hadoop.pseudo.RecommenderJob
--recommenderClassNameorg.apache.mahout.cf.taste.impl.recommender.slopeone.SlopeOneRecommender
-Dmapred.input.dir=testdata/10wan.dat
-Dmapred.output.dir=output_w10wan10、其他離開安全模式:hadoop dfsadmin -safemode leave