天天看點

Hadoop學習筆記(二)設定單節點叢集What does “Error: Could not find or load main class org.apache.hadoop.util.RunJar”?

本文描述如何設定一個單一節點的 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,總算對了。