前面均在windows下進行,但是在安裝hadoop過程中出了一些問題,先暫時切換到linux下,回頭再補充windows下的安裝。不過通過對比確實發現,在linux下的安裝配置確實比較簡單。
一.安裝ubuntu
我是下載的ubuntu12.04,在64位的虛擬機上使用virtualbox安裝的,沒錯,是在虛擬機上在安裝虛擬機,然後安裝ubuntu
具體安裝過程就不描述了,不過安裝過程確實慢,除非你的網絡很快。12.04的新主題使用真是彆扭,在登陸界面切換到gonme classic,這裏可以使用windows共享,可以很方便的從硬盤或者其他機器拉東西回來。
二. 在Ubuntu下創建hadoop用戶組和用戶;
1. 創建hadoop用戶組;
1
|
sudo addgroup
hadoop |
如圖:
2. 創建hadoop用戶;
1
|
sudo adduser
-ingroup hadoop hadoop |
如圖:
3. 給hadoop用戶添加權限,打開/etc/sudoers文件;
1
|
sudo gedit
/etc/sudoers |
按回車鍵後就會打開/etc/sudoers文件了,給hadoop用戶賦予root用戶同樣的權限。
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,
1
|
hadoop
ALL=(ALL:ALL) ALL |
如圖:
三. 在Ubuntu下安裝JDK
使用如下命令執行即可:
1
|
sudo apt-get
install openjdk-6-jre |
如圖:
這裏需要說明:我就是在這裏沒有太注意,後面費了點事情。
linux下的java有兩種一個是openjdk一個sun的。因爲一些原因,Sun Java 無法從 Ubuntu 的軟件庫裏面取得
取而代之的是 OpenJDK,不過 OpenJDK 跑某些程式會出現問題所以還是需要 Sun Java
下面說說在 Ubuntu 12.04 安裝 Sun Java 的方法:
(1)首先刪除掉已經安裝的openjdk
sudo apt-get purge openjdk*
(2)$ sudo apt-add-repository ppa:flexiondotorg/java
(3)$ sudo apt-get update 一定要執行這個步驟啊,如果更新比較慢,在unbuntu軟件中心更新源,操作方面是編輯--源,使用自動測試尋找最快的源,我開始是使用的這個,給我找的一個源後來不穩定,我手工切換到科技大學的源(前面也是這個源穩定啊)
(4)$ sudo apt-get install sun-java6-jre sun-java6-jdk sun-java6-plugin
這一步驟大概花費一點時間,下載幾十M的軟件,我是在這步就執行成功的,如果執行不成功,還可以使用下面的辦法:
$ sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick
partner"
$ sudo apt-get install python-software-properties
$ sudo apt-get update
$ sudo apt-get install sun-java*
$ sudo apt-get install openjdk-6-jdk openjdk-6-jdk gcj-4.6-jdk ecj default-jdk
(5)配置JAVA環境變量:
sudo gedit /etc/environment
在其中添加如下兩行:
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
(6)java -version查看不出錯說明,成功。
我之前執行的是openjdk後來才切換的sun-java6,當然現在有7了。
四. 修改機器名 (這步驟可以省略)
每當ubuntu安裝成功時,我們的機器名都默認爲:ubuntu ,但爲了以後集羣中能夠容易分辨各臺服務器,需要給每臺機器取個不同的名字。機器名由 /etc/hostname文件決定。
1. 打開/etc/hostname文件;
1
|
sudo gedit
/etc/hostname |
2. 將/etc/hostname文件中的ubuntu改爲你想取的機器名。這裏我取"dubin-ubuntu"。 重啓系統後纔會生效。
五. 安裝ssh服務
這裏的ssh和三大框架:spring,struts,hibernate沒有什麼關係,ssh可以實現遠程登錄和管理,具體可以參考其他相關資料。
安裝openssh-server;
1
|
sudo apt-get
install ssh openssh-server |
這時假設您已經安裝好了ssh,您就可以進行第六步了哦~
六、 建立ssh無密碼登錄本機
首先要轉換成hadoop用戶,執行以下命令:
1
|
su -
hadoop |
如圖:
ssh生成密鑰有rsa和dsa兩種生成方式,默認情況下采用rsa方式。
1. 創建ssh-key,,這裏我們採用rsa方式;
1
|
ssh -keygen
-t rsa -P "" |
如圖:
(注:回車後會在~/.ssh/下生成兩個文件:id_rsa和id_rsa.pub這兩個文件是成對出現的)
2. 進入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys授權文件中,開始是沒有authorized_keys文件的;
1
2
|
cd ~/. ssh cat id_rsa.pub
>> authorized_keys |
如圖:
(完成後就可以無密碼登錄本機了。)
3. 登錄localhost;
1
|
ssh localhost |
如圖:
( 注:當ssh遠程登錄到其它機器後,現在你控制的是遠程的機器,需要執行退出命令才能重新控制本地主機。)
4. 執行退出命令;
1
|
exit |
七. 安裝hadoop
我們採用的hadoop版本是:hadoop-0.20.203(http://www.apache.org/dyn/closer.cgi/hadoop/common/),因爲該版本比較穩定。最新的alpha版本已經很高,但是還是建議採用穩定的版本。我是在apache站點直接下載的。
1. 假設hadoop-0.20.203.tar.gz在桌面,將它複製到安裝目錄 /usr/local/下;
1
|
sudo cp hadoop-0.20.203.0rc1. tar .gz
/usr/local/ |
2. 解壓hadoop-0.20.203.tar.gz;
1
2
|
cd /usr/local sudo tar -zxf
hadoop-0.20.203.0rc1. tar .gz |
3. 將解壓出的文件夾改名爲hadoop;
1
|
sudo mv hadoop-0.20.203.0
hadoop |
4. 將該hadoop文件夾的屬主用戶設爲hadoop,
1
|
sudo chown -R
hadoop:hadoop hadoop |
5. 打開hadoop/conf/hadoop-env.sh文件;
1
|
sudo gedit
hadoop /conf/hadoop-env .sh |
6. 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然後加上本機jdk的路徑);
1
|
export
JAVA_HOME=/usr/lib/jvm/java-6-openjdk |
7. 打開conf/core-site.xml文件;
1
|
sudo gedit
hadoop /conf/core-site .xml |
編輯如下:property後面需要手工敲
1
2
3
4
5
6
7
8
9
10
11
|
<? xml version = "1.0" ?>
<? xml-stylesheet type = "text/xsl" href = "configuration.xsl" ?>
<!--
Put site-specific property overrides in this file. --> < configuration >
< property >
< name >fs.default.name</ name >
< value >hdfs://localhost:9000</ value >
</ property >
</ configuration > |
8. 打開conf/mapred-site.xml文件;
1
|
sudo gedit
hadoop /conf/mapred-site .xml |
編輯如下property後面需要手工敲:
1
2
3
4
5
6
7
8
9
10
11
|
<? xml version = "1.0" ?>
<? xml-stylesheet type = "text/xsl" href = "configuration.xsl" ?>
<!--
Put site-specific property overrides in this file. --> < configuration >
< property >
< name >mapred.job.tracker</ name >
< value >localhost:9001</ value >
</ property >
</ configuration > |
9. 打開conf/hdfs-site.xml文件;
1
|
sudo gedit
hadoop /conf/hdfs-site .xml |
編輯如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
< configuration >
< property >
< name >dfs.name.dir</ name >
< value >/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</ value >
</ property >
< property >
< name >dfs.data.dir</ name >
< value >/usr/local/hadoop/data1,/usr/local/hadoop/data2</ value >
</ property >
< property >
< name >dfs.replication</ name >
< value >2</ value >
</ property >
</ configuration > |
10. 打開conf/masters文件,添加作爲secondarynamenode的主機名,作爲單機版環境,這裏只需填寫 localhost 就Ok了。
1
|
sudo gedit
hadoop /conf/masters |
11. 打開conf/slaves文件,添加作爲slave的主機名,一行一個。作爲單機版,這裏也只需填寫 localhost就Ok了。
1
|
sudo gedit
hadoop /conf/slaves |
八. 在單機上運行hadoop
1. 進入hadoop目錄下,格式化hdfs文件系統,初次運行hadoop時一定要有該操作,
1
2
|
cd /usr/local/hadoop/ bin /hadoop namenode
- format |
2. 當你看到下圖時,就說明你的hdfs文件系統格式化成功了。
3. 啓動bin/start-all.sh
1
|
bin /start-all .sh |
4. 檢測hadoop是否啓動成功
1
|
jps |
如果有Namenode,SecondaryNameNode,TaskTracker,DataNode,JobTracker五個進程,就說明你的hadoop單機版環境配置好了!
如下圖:
然後可以通過firefox瀏覽器查看,使用http://localhost:50030/
對,你沒有看錯不是我們配置的core-site的9000的端口,也不是9001的端口,是50030,我也不知道爲什麼,有誰知道一下。如果看到下面激動人心的畫面,就說明你成功了。