Hadoop環境搭建——僞分佈式環境搭建

本文大部分借鑑了http://vampire1126.iteye.com/blog/891693中的安裝過程,在此向原作者表示感謝,同時本文的原創性是更改了Hadoop文件配置部分,以及對按裝過程中遇到的問題做了說明

工具:

jdk-6u38-linux-i586.bin

hadoop-1.1.2.tar.gz

ubuntu-12.04.1-desktop-i386.iso

安裝

1、安裝ubuntu10.10

 參見博文:http://blog.csdn.net/chw1989/article/details/8708447

2、安裝jdk1.6.0_38

在usr下面新建一個文件夾Java,然後將jdk複製過來

                       sudo mkdir /usr/Java

                       sudo cp jdk的路徑 /usr/Java                 

進入到Java目錄下,改變文件權限爲可執行

                       cd /usr/Java 

                       sudo chmod u+x jdk-6u38-linux-i586.bin

 執行安裝

                       sudo ./ jdk-6u38-linux-i586.bin

3、安裝hadoop0.21.0

hadoop-1.1.2.tar.gz複製到usr下面的local文件夾內

                        sudo cp hadoop的路徑 /usr/local

進入到local目錄下,解壓hadoop-1.1.2.tar.gz

                        cd /usr/local

                        sudo tar -xzf hadoop-1.1.2.tar.gz

爲了方便管理,將解壓後的文件夾名改爲hadoop

                        sudo mv hadoop-1.1.2 hadoop

 4、創建一個名爲hadoop的用戶和用戶組

創建一個名爲hadoop的用戶組

                        sudo addgroup hadoop

創建一個名爲hadoop的用戶,歸到hadoop用戶組下

                        sudo adduser --ingroup hadoop hadoop

 用gedit打開etc下的sudoers文件

                        sudo gedit /etc/sudoers

在 root   ALL=(ALL)  ALL 下面添加如下一行,然後保存關閉gedit

                         hadoop  ALL=(ALL)  ALL 

5、配置相關文件

用gedit打開etc下的profile文件

                        sudo gedit /etc/profile

在文件最後加入如下幾行

      export CLASSPATH=.:/usr/Java/jdk1.6.0_38/lib:/usr/Java/jdk1.6.0_38/jre/lib:$CLASSPATH

      export PATH=.:/usr/Java/jdk1.6.0_38/bin:/usr/Java/jdk1.6.0_38/jre/bin:/usr/local/hadoop/bin:$PATH

 保存後關閉gedit,並重啓機器

                        sudo reboot

重啓後用hadoop用戶登錄,驗證配置是否成功

                        java -version  


PS:我剛開始裝jdk時,一切都妥妥的裝好以後,發現這個命令一直無法運行成功,經過多方查證,發現時jdk版本有問題,前面裝的jdk是從Unix社區下載的jdk-6u3-dlj-linux-i586.bin,安裝好後,會有許多沒有後綴名爲.pack的文件,這些文件需要解壓成後綴名爲.jar的文件,纔可以確保jdk的正常使用,可以用/usr/java/jdk1.6.0_38/bin下的Unpack200來做,命令類似與:

                        sudo ./unpack200 tools.pack tools.jar 

如果選用jdk-6u38-linux-i586.bin這個jdk則不會出現上述問題


6、創建ssh-key

裝載ssh服務

                       sudo apt-get install ssh


PS: 上述命令可能會有如下報錯,此時需要執行:sudo apt-get update做一下更新

                      E: 無法解析或打開軟件包的列表或是狀態文件。


創建ssh-key

                         ssh-keygen -t rsa --P

將此ssh-key添加到信任列表中,並啓用此ssh-key

                         cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys

                         sudo /etc/init.d/ssh reload

7、配置hadoop

配置chadoop-env.sh

                          cd /usr/local/hadoop

                          sudo gedit conf/hadoop-env.sh

打開後在文檔的上部某行有“#export JAVA_HOME=...”字樣的地方,去掉“#”,然後在等號後面填寫你的jdk路徑,完全按此文檔來的話應改爲 "export JAVA_HOME=/usr/Java/jdk1.6.0_38"


配置core-site.xml

                          sudo gedit conf/core-site.xml

                          (打開後標籤<configuration> </configuration>中是空的,所以在空的地方加入如下配置)

<property>
       <name>fs.default.name</name>
       <value>hdfs://localhost:9000</value> 
</property>

配置conf目錄下的hdfs-site.xml

                           sudo gedit conf/hdfs-site.xml

                          (打開後標籤<configuration> </configuration>中也是空的,添加如下配置)

<property>
       <name>dfs.replication</name>
       <value>1</value> 
</property>

配置conf目錄下的mapred-site.xml

                           sudo gedit conf/mapred-site.xml

                          (打開後標籤<configuration> </configuration>中也是空的,添加如下配置)

<property> 
      <name>mapred.job.tracker</name> 
      <value>localhost:9001</value>
 </property> 


8、運行測試階段:

格式化namenode 

                          cd /usr/local/hadoop

                           hadoop namenode -format

 

啓動hadoop

                           sudo chown -hR hadoop /usr/local/hadoop

                           bin/start-all.sh

驗證hadoop是否正常啓動

                           jps

此語句執行後會列出已啓動的東西NameNode,JobTracker,SecondaryNameNode...如果NameNode沒有成功啓動的話就要先執行"bin/stop-all.sh"停掉所有東西,然後重新格式化namenode,再啓動


PS:如果調用jp命令後s發現NameNode,JobTracker,SecondaryNameNode等進程都在,但是過幾秒中,幾個進程全部退出不見了,可以去

 /usr/local/hadoop/logs下查看日誌文件,然後分析退出原因,我在使用問題jdk的過程中就有上述出問題——Namenode等進程意外退出,後來查看hadoop-hadoop-namenode-chw-N-A.log發現退出異常的報錯信息爲:

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.lang.NoClassDefFoundError: javax/net/SocketFactory

就是因爲/usr/java/jdk1.6.0_38/jre/lib中的jsse.jar文件沒有被解壓出來的原因,用jdk-6u38-linux-i586.bin則不會出現這個問題。


9、運行wordcount

準備需要進行wordcount的文件

                            sudo gedit /tmp/test.txt

                            隨便輸入一些英語單詞,然後保存退出

將準備的測試文件上傳到dfs文件系統中的firstTest目錄下

                            hadoop dfs -copyFromLocal /tmp/test.txt firstTest

執行wordcount

                            hadoop jar hadoop-mapred-examples-1.1.2.jar wordcount firstTest result


PS:此處的jar文件會因安裝的hadoop版本不同而不同,安裝好Hadoop以後,hadoop文件夾下會有類似名字的example文件


查看結果

                            hadoop dfs -cat result/part-r-00000


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章