Mahout安裝詳細全過程1、jdk安裝22、SSH無密碼驗證配置23、Hadoop配置34、Hadop使用65、Maven安裝76、安裝mahout77、hadoop集群來執行聚類算法88、其他8――――――――――――――――――――1、jdk安裝1.1、到官網下載相關的JDK下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html1.2
、打開“終端”輸入:shjdk-6u24-linux-i586.bin
1.3、設置JAVA_HOME環境系統變量輸入:vi/etc/environment在文件中添加:exportJAVA_HOME=/root/jdk1.6.0_24exportJRE_Home=/root/jdk1.6.0_24/jreexportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib同樣,修改第二個文件。輸入:vi/etc/profile在umask022之前添加以下語句:exportJAVA_HOME=/root/jdk1.6.0_24exportJRE_Home=/root/jdk1.6.0_24/jreexportCLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin1.4、注銷用戶,檢測JDK版本。輸入:java-version2、集群環境介紹集群包含三個節點: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.10master192.168.1.20slave1192.168.1.21slave23、SSH無密碼驗證配置2.1Hadoop需要使用SSH協議,namenode將使用SSH協議啟動namenode和datanode進程,偽分布式模式數據節點和名稱節點均是本身,必須配置SSHlocalhost無密碼驗證。用root用戶登錄,在家目錄下執行如下命令:ssh-keygen-trsa[root@master~]#ssh-keygen-trsaGeneratingpublic/privatersakeypair.Enter
fileinwhichtosavethekey(/root/.ssh/id_rsa):
&按回車默認路徑&Createddirectory'/root/.ssh'.&創建/root/.ssh
目錄&Enterpassphrase(emptyfornopassphrase):Entersamepassphraseagain:Youridentificationhasbeensavedin/root/.ssh/id_rsa.Your
publickeyhasbeensavedin/root/.ssh/id_rsa.pub.The
keyfingerprintis:c6:7e:57:59:0a:2d:85:49:23:cc:c4:58:ff:db:5b:38root@master通過以上命令將在/root/.ssh/
目錄下生成id_rsa私鑰和id_rsa.pub
公鑰。進入/root/.ssh
目錄在namenode節點下做如下配置:[root@master.ssh]#catid_rsa.pub
>authorized_keys[root@master.ssh]#scpauthorized_keys192.168.1.20:/root/.ssh/[root@master
.ssh]#scpauthorized_keys192.168.1.21:/root/.ssh/
配置完畢,可通過ssh本機IP測試是否需要密碼登錄。2.2和namenode無密碼登錄所有Datanode原理一樣,把Datanode的公鑰復制到Namenode的.ssh
目錄下。[root@slave1.ssh]#scpauthorized_keys1192.168.1.10:/root/.ssh[root@slave2.ssh]#scpauthorized_keys2192.168.1.10:/root/.ssh
將剛傳過來的authorized_keys1、2加入到authorized_keys[root@master.ssh]#catauthorized_keys1>authorized_keys[root@master.ssh]#catauthorized_keys2>authorized_keys這樣也能在Datanode上關閉和啟動Hadoop服務。4、Hadoop配置下載hadoop-0.20.2.tar.gz
,進行解壓。tarzxvfhadoop-0.20.2.tar.gz
修改/etc/profile,加入如下:#sethadooppathexportHADOOP_HOME=/root/hadoopexportPATH=$HADOOP_HOME/bin:$PATH4.1、進入hadoop/conf,配置Hadoop配置文件4.1.1配置hadoop-env.sh
文件添加#setjavaenvironmentexportJAVA_HOME=/root/jdk1.6.0_24編輯后保存退出。4.1.2配置core-site.xml#vicore-site.xml4.1.3配置hdfs-site.xml#vihdfs-site.xml4.1.4配置mapred-site.xml#vimapred-site.xml4.1.5配置masters#vimasters192.168.1.104.1.6配置slaves#vislaves192.168.1.20192.168.1.214.2、Hadoop啟動4.2.1進入/root/hadoop/bin目錄下,格式化namenode#./hadoopnamenode?Cformat4.2.2啟動hadoop所有進程在/root/hadoop/bin目錄下,執行start-all.sh
命令啟動完成后,可用jps命令查看hadoop進程是否啟動完全。正常情況下應該有如下進程:10910NameNode11431Jps11176SecondaryNameNode11053DataNode11254JobTracker11378TaskTracker我在搭建過程中,在此環節出現的問題最多,經常出現啟動進程不完整的情況,要不是datanode無法正常啟動,就是namenode或是TaskTracker啟動異常。解決的方式如下:1)在Linux下關閉防火墻:使用serviceiptablesstop命令;2)再次對namenode進行格式化:在/root/hadoop/bin目錄下執行hadoopnamenode-format命令3)對服務器進行重啟4)查看datanode或是namenode對應的日志文件,日志文件保存在/root/hadoop/logs目錄下。5)再次在/bin目錄下用start-all.sh
命令啟動所有進程,通過以上的幾個方法應該能解決進程啟動不完全的問題了。4.2.3查看集群狀態在bin目錄下執行:hadoopdfsadmin-report#hadoopdfsadmin?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/目錄下進行如下操作:./hadoopfs-mkdirinput(新建目錄名稱,可任意命名)mkdir/root/a/vi/root/a/a.txt
寫入helloworldhello#hadoopfs-copyFromLocal/root/a/input在/root/hadoop/bin下執行:#./hadoopjarhadoop-0.20.2-examples.jar
wordcountinputoutput(提交作業,此處需注意input與output是一組任務,下次再執行wordcount程序,還要新建目錄intput1與output1不能跟input與output重名)6、Maven安裝6.1下載Maven解壓tarvxzfapache-maven-3.0.2-bin.tar.gzmv
apache-maven-3.0.2/root/maven6.2vi~/.bashrc
添加如下兩行exportM3_HOME=/root/mavenexportPATH=${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
./hadoopfs-mkdirtestdata./hadoopfs-putsynthetic_control.data
testdata./hadoopfs-lsrtestdatabin/hadoopjar/root/mahout/mahout-examples-0.4-job.jar
org.apache.mahout.clustering.syntheticcontrol.kmeans.Job8.3查看一下結果吧bin/mahoutvectordump--seqFile/user/root/output/data/part-r-00000這個直接把結果顯示在控制臺上。9、hadoop集群來執行推薦算法分布式bin/hadoopjar/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/hadoopjar/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、其他離開安全模式:hadoopdfsadmin-safemodeleave