Hadoop入門實驗
一、實驗目的
了解Hadoop的MapeReduce工作原理
二、實驗內容
實現基於單機的偽分布式運行模擬
三、實驗需要準備的軟件和源
1、Jdk1.6以上 下載地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
2、Cygwin 下載地址:http://www.cygwin.com/
3、穩定版hadoop 下載地址:http://hadoop.apache.org/common/releases.html#Download
四、實驗步驟
1、了解Hadoop工作機制
a、Hadoop整體框架運行機制介紹
請參見http://hi.baidu.com/wongxuelei/blog/item/c1642050cfb56d481138c2fd.html
b、Hadoop中MapReduce部分執行流程
請參見http://www.blogjava.net/shenh062326/archive/2011/01/14/342959.html
c、Hadoop在線中文技術文檔
請參見http://hadoop.apache.org/common/docs/r0.18.2/cn/
個人意見:
a和b說的非常詳細,剛入門可以大體了解Hadoop的HDFS和MapeReduce工作框架,等做完實驗後再回過頭來看這個會更清楚;c上有實例的說明和代碼。
2、安裝JDK到本地機器
安裝目錄最好不要有空格(如果有在配置Hadoop的JAVA_HOME時有點麻煩,下面會具體介紹)
3、安裝Cygwin
請參見《Hadoop開發者入門》第11頁 ——>在Windows上安裝Hadoop教程
個人意見:
a、註意選擇上面說的需在Cygwin中安裝的包;
b、上面說到的http://www.cygwin.cn好像鏈接不上了,目前內陸最快的是源有
http://mirrors.163.com/cygwin/ http://mirrors.sohu.com/cygwin/ 會到30 k/s左右,其他的速度一般只有3~5 k/s;
c、如果沒裝成功,最好運行regedit.exe進入註冊表,刪除Cygwin文件,目錄所在位置如圖1;
d、環境變量配置僅需把平時我們陪JDK的方法配好,Cygwin僅需把bin所在目錄加入,usr下的不用配;
e、安裝好sshd後,該服務可以在裝好的Cygwin中輸入net start sshd命令啟動。
圖1 、Cygwin所在註冊表位置
4、安裝Hadoop
a、下載Hadoop的穩定版本,我選擇的是hadoop-0.18.3.tar.gz(最新版本不太好用),然後解壓到任意盤下;
b、配置Hadoop用於在單機環境上運行的配置文件在最後,來源http://hi.baidu.com/shirdrn/blog/item/33c762fecf9811375c600892.html
註意事項:
a、在配置完JAVA_HOME後,如果路徑有空格,運行$ bin/hadoop namenode -format命令也可能會出錯,最好的辦法是將Windows下的JDK映射到Cygwin中,命令如下:
LN -s /cygdrive/c/Program\ Files/Java/<jre name> /usr/local/<jre name>
其中
/cygdrive/c/Program\ Files/Java/<jre name>表示在Windows中的JDK路徑,
/usr/local/<jre name>表示你想映射到的Cygwin路徑。
然後在把JAVA_HOME配置成 export JAVA_HOME="/usr/local/<jre name>"
b、運行“ $ bin/hadoop dfs -put ./input input”命令時可能會出現讓你把hadoop-site.xml中的“localhost:9000”改成“ hdfs:\\localhost:9000”的問題。未解決,據網上了解說是因為單機運行的問題。
來源http://hi.baidu.com/shirdrn/blog/item/33c762fecf9811375c600892.html
首先進行Hadoop配置: 1、conf/hadoop-env.sh文件中最基本需要指定JAVA_HOME,例如我的如下:
2、只需要修改conf/hadoop-site.xml文件即可,默認情況下,hadoop-site.xml並沒有被配置,如果是基於單機運行,就會按照hadoop-default.xml中的基本配置選項執行任務。 將hadoop-site.xml文件修改為如下所示:
1、認證配置 啟動cygwin,同時使用下面的命令啟動ssh:
接著,需要對身份加密認證這一部分進行配置,這也是非常關鍵的,因為基於分布式的多個Datanode結點需要向Namenode提供任務執行報告信息,如果每次訪問Namenode結點都需要密碼驗證的話就麻煩了,當然我要說的就是基於無密碼認證的方式的配置,可以參考我的其他文章。 生成RSA公鑰的命令如下:
上面執行到如下步驟時需要進行設置:
繼續執行,又會提示進行輸入選擇密碼短語passphrase,在如下這裏:
RSA公鑰主要是對結點之間的通訊信息加密的。如果RSA公鑰生成過程如上圖,說明正確生成了RSA公鑰。 接著生成DSA公鑰,使用如下命令:
然後,需要將DSA公鑰加入到公鑰授權文件authorized_keys中,使用如下命令:
到此,就可以進行Hadoop的運行工作了。 2、Hadoop處理的數據文件準備 我使用的是hadoop-0.16.4版本,直接拷貝到G:\根目錄下面,同時,我的cygwin直接安裝在G:\Cygwin裏面。 在目錄G:\hadoop-0.16.4中創建一個input目錄,裏面準備幾個TXT文件,我準備了7個,文件中內容就是使用空格分隔的多個英文單詞,因為是運行WordCount這個例子,後面可以看到我存入了多少內容。 3、運行過程 下面,切換到G:\hadoop-0.16.4目錄下面
在執行任務中,使用HDFS,即Hadoop的分布式文件系統,因此這時要做的就是格式化這個文件系統,使用下面命令可以完成:
此時,應該啟動Namenode、Datanode、SecondaryNamenode、JobTracer,使用這個命令啟動:
如果你沒有配置前面ssh的無密碼認證,或者配置了但是輸入了密碼短語,那麽到這裏就會每啟動一個進程就提示輸入密碼,試想,如果有N多進程的話,那豈不是要命了。 然後,需要把上面我們在本地的input目錄中準備的文件復制到HDFS中的input目錄中,以便在分布式文件系統管理這些待處理的數據文件,使用下面命令:
現在,才可以執行Hadoop自帶的WordCount列子了,使用下面命令開始提交任務,進入運行:
運行過程如圖所示:
通過上圖,可以看出在運行一個Job的過程中,WordCount工具執行任務的進度情況,非常詳細。 最後查看執行任務後,處理數據的結果,使用的命令行如下所示:
最後,停止Hadoop進程,使用如下命令:
以上就是全部的過程了。
|
5、hadoop自帶example的代碼和分析
請參見Hadoop MapReduce教程
http://www.cnblogs.com/panderen/archive/2011/05/17/2048651.html
Hadoop入門實驗