嘗試進入大數據領域開發,從目前最火的Hadoop入手是必須的,本文一步步記錄了 Ubuntu 環境安裝Hadoop 1.2.1 ,搭建單機模式以及僞分佈式模式,希望對各位和我一樣的菜鳥有所幫助,共同學習進步,歡迎交流。嘗試2.1安裝失敗,由於文件結構不太一樣缺乏相關資料,也非做運維的,遂放棄改用成熟的hadoop 1.2.1版本。
----------------------------------------單機模式-----------------------------------------
下載:hadoop-1.2.1.tar.gz
解壓:
- tar -xzvf hadoop-1.2.1.tar.gz
- mv hadoop-1.2.1/ /opt
讓環境變量配置生效source,是source,不是sh,補充下sh和.的區別,參考
- source hadoop-env.sh
檢測是否安裝成功
單機版hadoop安裝成功,測試一下
- mkdir input
- cp -R conf input/
運行wordcount程序並將結果保存到output
hadoop hadoop-examples-1.2.1.jar
錯誤: 找不到或無法加載主類 hadoop-examples-1.2.1.jar
單機模式成功, 接下來搭建僞分佈式
-------------------------------------------華麗的分割線 僞分佈式-----------------------------------------
hadoop目錄下創建以下目錄:
- dat@dat-HP:/opt/hadoop-1.2.1$ mkdir tmp
- dat@dat-HP:/opt/hadoop-1.2.1$ mkdir hdfs
- dat@dat-HP:/opt/hadoop-1.2.1$ mkdir hdfs/name
- dat@dat-HP:/opt/hadoop-1.2.1$ mkdir hafs/data
編輯core-site.xml
- <configuration>
- <property>
- <name>fs.default.name</name>
- <value>hdfs://localhost:9000</value>
- </property>
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/opt/hadoop-1.2.1/tmp</value>
- </property>
- </configuration>
hdfs-site.xml:
- <configuration>
- <property>
- <name>dfs.replication</name>
- <value>1</value>
- </property>
- <property>
- <name>dfs.name.dir</name>
- <value>/opt/hadoop-1.2.1/hdfs/name</value>
- </property>
- <property>
- <name>dfs.data.dir</name>
- <value>/opt/hadoop-1.2.1/hdfs/data</value>
- </property>
- </configuration>
mapred-site.xml:
- <configuration>
- <property>
- <name>mapred.job.tracker</name>
- <value>localhost:9001</value>
- </property>
- </configuration>
格式化HDFS(建議只格式化一次,多次格式化據傳後邊會引起問題,本人沒有嘗試...):
- dat@dat-HP:/opt/hadoop-1.2.1/conf$ source hadoop-env.sh
- dat@dat-HP:/opt/hadoop-1.2.1/conf$ hadoop namenode -format
啓動Hadoop:
執行執行bin/start-all.sh來啓動所有服務,包括namenode,datanode,start-all.sh腳本用來裝載守護進程
- dat@dat-HP:/opt/hadoop-1.2.1/bin$ start-all.sh
用java的jps命令驗證是否安裝成功:
- dat@dat-HP:/opt/hadoop-1.2.1$ jps
少一個DataNode進程沒有啓動,通過查看上邊現實的路徑下的日誌發現:
很明顯,data文件夾的權限不對,修改權限:
- dat@dat-HP:/opt/hadoop-1.2.1/hdfs$ chmod 755 data
關閉hadoop,重新啓動:
- dat@dat-HP:/opt/hadoop-1.2.1/bin$ stop-all.sh
- dat@dat-HP:/opt/hadoop-1.2.1/bin$ start-all.sh
- dat@dat-HP:/opt/hadoop-1.2.1/bin$ jps
6個進程全部啓動了,此時安裝正常,可以進行Hadoop的相關操作了。
檢查運行狀態:可以通過下面的操作來查看服務是否正常,在Hadoop中用於監控集羣健康狀態的Web界面
http://localhost:50030/ - Hadoop 管理介面
http://localhost:50060/ - Hadoop Task Tracker 狀態
http://localhost:50070/ - Hadoop DFS 狀態
hadoop的僞分佈模式已經安裝成功,再次在僞分佈模式下運行一下WordCount來感受MapReduce過程:
這時注意程序是在文件系統dfs運行的,創建的文件也都基於文件系統:
首先在dfs中創建input目錄
- dat@dat-HP:/opt/hadoop-1.2.1/conf$ hadoop dfs -mkdir input
- Warning: $HADOOP_HOME is deprecated.
將conf中的文件拷貝到dfs中的input
- dat@dat-HP:/opt/hadoop-1.2.1$ hadoop dfs -copyFromLocal conf/* input
在僞分佈式模式下運行WordCount
- dat@dat-HP:/opt/hadoop-1.2.1$ hadoop jar hadoop-examples-1.2.1.jar wordcount input output
INFO mapred.JobClient: map 100% reduce 0% 到這裏卡死不動了。
解決辦法:查詢鳥文論壇帖子(http://stackoverflow.com/questions/10165549/hadoop-wordcount-example-stuck-at-map-100-reduce-0)發現,修改/etc/hosts文件,加入主機名和IP地址的映射。
檢查主機名:
- dat@dat-HP:/opt/hadoop-1.2.1/conf$ hostname
修改/etc/hosts文件:
重新來過:
- hadoop dfs -rmr output/
- hadoop jar hadoop-examples-1.2.1.jar wordcount input output
oK!!看見沒有,你成功了!!!!!!
檢測一下輸出信息:
- dat@dat-HP:/opt/hadoop-1.2.1$ hadoop dfs -cat output/*
ok!!此時僞分佈式系統環境已可以正常使用~~~!