LINUX下配置HADOOP過程總結

首先是JAVA的安裝問題。
我用APT-GET INSTALL來獲得的JDK,
安裝完以後並不像自己解壓安裝那樣會在安裝目錄下產生一個相應的安裝文件夾,這讓我對JAVA_HOME的設置問題苦惱了,
找不到安裝文件夾,到哪裏支設置JAVAHOME啊!!
然後我去查了一下,有一些帖子說,安裝在/OPT目錄下,可我去看了,沒有;

然後又有一位大大給了很好的提示(見)說是用下面的命令:


代碼:
$ which java
/usr/bin/java
$ ls -l /usr/bin/java
/usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
/etc/alternatives/java -> /usr/lib/jvm/java-6-sun/jre/bin/java
複製代碼

可以找到。我試了一下,找到了這麼一個位置:

/usr/bin/gij-4.5

本來很高興以爲找到地方了,可是想進去看的時候,提示說這個不是一個目錄。

我迷茫了,求問到底如何設置JAVAHOME啊!


以前用過另外一個版本的linux,redflag,在上面習慣了使用RPM的安裝包。

用UBUNTU之後,誤以爲它也是用RPM包的,於是在ORACLE的官方網站上下了一個RPM的安裝包,

結果發現無法安裝,
先是得到一個RPM命令無法執行的錯誤,安裝了RPM命令之後,
又提示說不能直接使用RPM命令,而應該使用ALIEN命令,搞得我一頭霧水。


在查找解決辦法的時候我又見到一個帖子說,UBUNTU的JDK都是用APT-GET來直接安裝的,不用按有些教程上來。


於是我就去試APT-GET,結果在查找結果裏面除了OPENJDK就是一個什麼GIJ-JDK。


我以爲在軟件搜索庫中有自己定義的名字,與其它的JDK名字不一樣,可能這個GIJ-JDK就是我所需要的JDK吧,於是就把它裝了。


結果就是我在帖子裏向大家提問的那樣了,JAVA指向了GIJ這個東西。


後來纔在另一個帖子的留言中得知UBUNTU不使用RPM的,才明白過來,


去官網上下了那個jdk-2u25-i586.bin這樣的一個文件,安裝成功了



JAVA_HOME已經設置好了,但是還有一個讓人頭疼的問題。。。


是這樣的,我們要做一個使用HADOOP進行MAPREDUSE功能實現與性能分析的作業,使用HADOOP的開源包,本來是件很簡單的事情,跑一下就行了,

但是:
我按照老師提供的配置說明一步一步來進行,首先是發現在使用ssh登錄localhost的時候說是在22號端口上連接失敗,

這個後來發現是因爲沒有安裝ssh-server造成的(汗),已經改好了;


第二個問題最要命:


我確定已經把JAVA_HOME設置好了,在終端裏使用$JAVA_HOME會返回正確的JDK位置,使用java -version也能顯示出最新安裝的sun java版本號,而不是之前安裝不成功時的openjava版本號。


然後我在本機上設置了兩個本地迴路用於建立一個僞分佈式 的環境,一個是master,一個是localhost。

然後又設置了公鑰,可以不輸密碼進行訪問;


接下來問題來了,我在初始化完namenode之後,按說明上寫的運行start-all.sh

卻返回兩個錯誤結果,分別是從master和localhost返回的,都說java_home沒有設置!!

這讓我情何以堪啊,我去查hadoop-config.sh的內容,裏面有對JAVA_HOME的設置部分,我運行這個腳本,成功了。

然後我又登錄兩個本地的機器,在登錄狀態下輸入$java_home返回了正確的結果。


然後我就去一一找那些跟start-all.sh有關的所有腳本文件,沒有找到其它地方有設置JAVAHOME的。


最後的結果是,只有namenode運行成功了,可以執行hadoop fs -ls <dir>命令來查看hdfs系統下的文件,但不知道爲什麼對它使用-put參數總是說io錯誤,無法向我在dhfs系統中建立的文件夾中放入文件。



首先是我的JAVAHOME設置問題,這裏主要涉及兩個文件,一個是家目錄下的.profile,一個是/etc/profile,下面分別是兩個文件的關鍵部分的內容。



這是我的jdk安裝位置,按老師給的說明設置的,在我的家目錄下。有點不太合理,因爲其它用戶訪問不到。


代碼:
neo@neo-laptop:~/jdk1.6.0_25$ ls
bin include man register_zh_CN.html
COPYRIGHT jre README.html sample
db lib register.html src.zip
demo LICENSE register_ja.html THIRDPARTYLICENSEREADME.txt
複製代碼

下面是/etc/profile文件:


代碼:
#set java environment

export JAVA_HOME=/home/neo/jdk1.6.0_25

export JRE_HOME=/home/neo/jdk1.6.0_25/jre

export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
複製代碼

下面是~/.profile文件的最後幾行:


代碼:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

PATH="$HOME/jdk1.6.0_25/bin:$PATH"
PATH="$HOME/hadoop/bin:$PATH"
複製代碼

這個是輸入$JAVA_HOME的返回結果:


代碼:
neo@neo-laptop:~$ $JAVA_HOME
bash: /home/neo/jdk1.6.0_25: 是一個目錄
複製代碼

這個是我登錄localhost之後輸入JAVAHOME的返回結果,在master裏也是一樣的。


代碼:
neo@neo-laptop:~$ ssh localhost
Linux neo-laptop 2.6.35-28-generic #50-Ubuntu SMP Fri Mar 18 19:00:26 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/

Last login: Thu May 12 08:53:27 2011 from localhost.localdomain
neo@neo-laptop:~$ $JAVA_HOME
-bash: /home/neo/jdk1.6.0_25: 是一個目錄
複製代碼

這個是在格式化namenode之後,執行start-all.sh得到的結果,上面我提到的JAVAHOME問題:


代碼:
neo@neo-laptop:~$ start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-mapred.sh
starting namenode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-namenode-neo-laptop.out
localhost: Error: JAVA_HOME is not set.
master: Error: JAVA_HOME is not set.
starting jobtracker, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-jobtracker-neo-laptop.out
localhost: Error: JAVA_HOME is not set.
複製代碼

然後查了一下,決定自己把HADOOP-CONFIG。SH文件給改一下,直接把裏面的JAVA——HOME給設成我的JAVA安裝路徑,總算成功了。


下面是跑MAPREDUCE的過程:
neo@neo-laptop:~$ start-all.sh
This script is Deprecated. Instead use start-dfs.sh and start-mapred.sh
starting namenode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-namenode-neo-laptop.out
localhost: starting datanode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-datanode-neo-laptop.out
master: starting secondarynamenode, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-secondarynamenode-neo-laptop.out
starting jobtracker, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-jobtracker-neo-laptop.out
localhost: starting tasktracker, logging to /home/neo/hadoop/bin/../logs/hadoop-neo-tasktracker-neo-laptop.out
neo@neo-laptop:~$ jps
7653 SecondaryNameNode
7950 TaskTracker
7754 JobTracker
8045 Jps
7252 NameNode
7445 DataNode
neo@neo-laptop:~$ hadoop fs -ls
11/05/12 17:15:00 INFO security.Groups: Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping; cacheTimeout=300000
11/05/12 17:15:00 WARN conf.Configuration: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
Found 3 items
drwxr-xr-x - neo supergroup 0 2011-05-12 16:56 /user/neo/myinput
drwxr-xr-x - neo supergroup 0 2011-05-12 16:59 /user/neo/output
drwxr-xr-x - neo supergroup 0 2011-05-12 16:07 /user/neo/user

複製代碼


此文章是對我在中國LINUX社區裏的一系列問題的總結,特在此感謝中國LINUX社區裏給於關心與幫助的人。謝謝。

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