本文描述如何設定一個單一節點的 Hadoop 安裝,以便您可以快速執行簡單的操作,使用 Hadoop MapReduce 和 Hadoop 分布式檔案系統 (HDFS)。
Hadoop版本:Apache Hadoop 2.5.1
系統版本:CentOS 6.5,核心(uname -r):2.6.32-431.el6.x86_64
支援的系統平台
GNU/Linux 作為開發和生産的平台,毫無疑問。Windows 也是受支援的平台,但是以下步驟僅用于 Linux。
依賴的軟體
在Linux系統上安裝所需要的軟體包
2、ssh 必須安裝,必須運作 sshd 才能使用管理遠端 Hadoop 守護程式的 Hadoop 腳本。
安裝依賴的軟體
如果您的系統沒有所需的軟體,您将需要安裝它。
例如在Ubuntu Linux上使用以下指令:
CentOS應該是即使是最小安裝也帶了ssh(Secure Shell),剛開始我給弄混了,以為是JAVA的SSH(Spring + Struts +Hibernate),汗!
解壓檔案hadoop-2.5.1.tar.gz,執行:tar xvf hadoop-2.5.1.tar.gz,會将檔案解壓到hadoop-2.5.1目錄下;
切換目錄:cd hadoop-2.5.1/etc/hadoop/
編輯“hadoop-env.sh”檔案,添加參考定義;
vi hadoop-env.sh
個人覺得比較好的習慣是編輯檔案之前先做個備份(cp hadoop-env.sh hadoop-env.sh.bak);
找到以下位置:
将其改為:
在下面再添加一句:
儲存并退出,ESC,:wq
切換目錄(cd ../..),傳回“/opt/hadoop-2.5.1”;
嘗試執行以下指令:
./bin/hadoop
這将顯示 hadoop 腳本的使用文檔,輸出如下:
你現在準備好開始您的 Hadoop 叢集三個受支援的模式之一:
本地 (獨立) 模式
僞分布的模式
完全分布式模式
預設情況下,Hadoop 被配置為運作在非分布式模式下,作為一個單一的 Java 程序。這比較适合用于調試。
下面的示例複制要使用作為輸入的解壓縮的 conf 目錄,然後查找并顯示給定正規表達式的每一場比賽。輸出被寫入給定的輸出目錄。
執行“bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar grep input output 'dfs[a-z.]+'”時
卻出現錯誤:Error: Could not find or load main class org.apache.hadoop.util.RunJar
此問題隻在Stack Overflow上見到
但是也沒能找到解決的辦法;還是自己摸索吧!
解決步驟:
剛剛備份的“hadoop-env.sh”檔案現在用上了,還原它。
再執行“bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar grep input output 'dfs[a-z.]+'”,
提示:
按提示應該還是JAVA(JDK)的安裝的問題,我安裝JDK的時候隻執行到
再沒執行其它操作,将後續的步驟執行完成後,再執行“bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar grep input output 'dfs[a-z.]+'”,
輸出:
Output directory file:/opt/hadoop-2.5.1/output already exists,噢,原因是output目錄已經存在了(之前我排查問題的時候建立的);
删除output目錄(rm -rf output);
再執行“bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar grep input output 'dfs[a-z.]+'”指令,輸出如下:
OK,總算對了。