前面均在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
>
</
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,我也不知道為什么,有誰知道一下。如果看到下面激動人心的畫面,就說明你成功了。