如何在Linux上安裝與配置Hadoop?

Hadoop最早是爲了在Linux平臺上使用而開發的,但是Hadoop在UNIX、Windows和Mac OS X系統上也運行良好。不過,在Windows上運行Hadoop稍顯複雜,首先必須安裝Cygwin以模擬Linux環境,然後才能安裝Hadoop。Hadoop的安裝非常簡單,大家可以在官網上下載到最近的幾個版本,在Unix上安裝Hadoop的過程與在Linux上安裝基本相同,因此下面不會對其進行詳細介紹。

在Linux上安裝與配置Hadoop

在Linux上安裝Hadoop之前,需要先安裝兩個程序:

1. JDK 1.6或更高版本;

2. SSH(安全外殼協議),推薦安裝OpenSSH。

下面簡述一下安裝這兩個程序的原因:

1. Hadoop是用Java開發的,Hadoop的編譯及MapReduce的運行都需要使用JDK。

2. Hadoop需要通過SSH來啓動salve列表中各臺主機的守護進程,因此SSH也是必須安裝的,即使是安裝僞分佈式版本(因爲Hadoop並沒有區分集羣式和僞分佈式)。對於僞分佈式,Hadoop會採用與集羣相同的處理方式,即依次序啓動文件conf/slaves中記載的主機上的進程,只不過僞分佈式中salve爲localhost(即爲自身),所以對於僞分佈式Hadoop,SSH一樣是必須的。

一、安裝JDK 1.6

安裝JDK的過程很簡單,下面以Ubuntu爲例。

(1)下載和安裝JDK

確保可以連接到互聯網,輸入命令:

sudo apt-get install sun-java6-jdk

輸入密碼,確認,然後就可以安裝JDK了。

這裏先解釋一下sudo與apt這兩個命令,sudo這個命令允許普通用戶執行某些或全部需要root權限命令,它提供了詳盡的日誌,可以記錄下每個用戶使用這個命令做了些什麼操作;同時sudo也提供了靈活的管理方式,可以限制用戶使用命令。sudo的配置文件爲/etc/sudoers。

apt的全稱爲the Advanced Packaging Tool,是Debian計劃的一部分,是Ubuntu的軟件包管理軟件,通過apt安裝軟件無須考慮軟件的依賴關係,可以直接安裝所需要的軟件,apt會自動下載有依賴關係的包,並按順序安裝,在Ubuntu中安裝有apt的一個圖形化界面程序synaptic(中文譯名爲“新立得”),大家如果有興趣也可以使用這個程序來安裝所需要的軟件。(如果大家想了解更多,可以查看一下關於Debian計劃的資料。)

(2)配置環境變量

輸入命令:

sudo gedit /etc/profile

輸入密碼,打開profile文件。

在文件的最下面輸入如下內容:

#set Java Environment
export JAVA_HOME= (你的JDK安裝位置,一般爲/usr/lib/jvm/java-6-sun)
export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH"
export PATH="$JAVA_HOME/:$PATH"

這一步的意義是配置環境變量,使你的系統可以找到JDK。

(3)驗證JDK是否安裝成功

輸入命令:

java -version

查看信息:

java version "1.6.0_14"
Java(TM) SE Runtime Environment (build 1.6.0_14-b08)
Java HotSpot(TM) Server VM (build 14.0-b16, mixed mode)


二、配置SSH免密碼登錄

同樣以Ubuntu爲例,假設用戶名爲u。

1)確認已經連接上互聯網,輸入命令

sudo apt-get install ssh

2)配置爲可以無密碼登錄本機。

首先查看在u用戶下是否存在.ssh文件夾(注意ssh前面有“.”,這是一個隱藏文件夾),輸入命令:

ls -a /home/u

一般來說,安裝SSH時會自動在當前用戶下創建這個隱藏文件夾,如果沒有,可以手動創建一個。

接下來,輸入命令:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

解釋一下,ssh-keygen代表生成密鑰;-t(注意區分大小寫)表示指定生成的密鑰類型;dsa是dsa密鑰認證的意思,即密鑰類型;-P用於提供密語;-f指定生成的密鑰文件。(關於密鑰密語的相關知識這裏就不詳細介紹了,裏面會涉及SSH的一些知識,如果讀者有興趣,可以自行查閱資料。)

在Ubuntu中,~代表當前用戶文件夾,這裏即/home/u。

這個命令會在.ssh文件夾下創建兩個文件id_dsa及id_dsa.pub,這是SSH的一對私鑰和公鑰,類似於鑰匙及鎖,把id_dsa.pub(公鑰)追加到授權的key裏面去。

輸入命令:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

這段話的意思是把公鑰加到用於認證的公鑰文件中,這裏的authorized_keys是用於認證的公鑰文件。

至此無密碼登錄本機已設置完畢。

3)驗證SSH是否已安裝成功,以及是否可以無密碼登錄本機。

輸入命令:

ssh -version

顯示結果:

OpenSSH_5.1p1 Debian-6ubuntu2, OpenSSL 0.9.8g 19 Oct 2007
Bad escape character 'rsion'.

顯示SSH已經安裝成功了。

輸入命令:

ssh localhost

會有如下顯示:

The authenticity of host 'localhost (::1)' can't be established.
RSA key fingerprint is 8b:c3:51:a5:2a:31:b7:74:06:9d:62:04:4f:84:f8:77.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Linux master 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686
To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/
Last login: Mon Oct 18 17:12:40 2010 from master
admin@Hadoop:~$

這說明已經安裝成功,第一次登錄時會詢問你是否繼續鏈接,輸入yes即可進入。

實際上,在Hadoop的安裝過程中,是否無密碼登錄是無關緊要的,但是如果不配置無密碼登錄,每次啓動Hadoop,都需要輸入密碼以登錄到每臺機器的DataNode上,考慮到一般的Hadoop集羣動輒數百臺或上千臺機器,因此一般來說都會配置SSH的無密碼登錄。

三、安裝並運行Hadoop

介紹Hadoop的安裝之前,先介紹一下Hadoop對各個節點的角色定義。

Hadoop分別從三個角度將主機劃分爲兩種角色。第一,劃分爲master和slave,即主人與奴隸;第二,從HDFS的角度,將主機劃分爲NameNode和DataNode(在分佈式文件系統中,目錄的管理很重要,管理目錄的就相當於主人,而NameNode就是目錄管理者);第三,從MapReduce的角度,將主機劃分爲JobTracker和TaskTracker(一個job經常被劃分爲多個task,從這個角度不難理解它們之間的關係)。

Hadoop有官方發行版與cloudera版,其中cloudera版是Hadoop的商用版本,這裏先介紹Hadoop官方發行版的安裝方法。

Hadoop有三種運行方式:單節點方式、單機僞分佈方式與集羣方式。乍看之下,前兩種方式並不能體現雲計算的優勢,在實際應用中並沒有什麼意義,但是在程序的測試與調試過程中,它們還是很有意義的。

你可以通過以下地址獲得Hadoop的官方發行版,下載Hadoop-0.20.2.tar.gz並將其解壓,這裏會解壓到用戶目錄下,一般爲:/home/[你的用戶名]/。

單節點方式配置:

安裝單節點的Hadoop無須配置,在這種方式下,Hadoop被認爲是一個單獨的Java進程,這種方式經常用來調試。

僞分佈式配置:

你可以把僞分佈式的Hadoop看做是隻有一個節點的集羣,在這個集羣中,這個節點既是master,也是slave;既是NameNode也是DataNode;既是JobTracker,也是TaskTracker。

僞分佈式的配置過程也很簡單,只需要修改幾個文件,如下所示。

進入conf文件夾,修改配置文件:

Hadoop-env.sh:
export JAVA_HOME=“你的JDK安裝地址”

指定JDK的安裝位置:

conf/core-site.xml:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

這是Hadoop核心的配置文件,這裏配置的是HDFS的地址和端口號。

conf/hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

這是Hadoop中HDFS的配置,配置的備份方式默認爲3,在單機版的Hadoop中,需要將其改爲1。

conf/mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>

這是Hadoop中MapReduce的配置文件,配置的是JobTracker的地址和端口。

需要注意的是,如果安裝的是0.20之前的版本,那麼只有一個配置文件,即爲Hadoop-site.xml。

接下來,在啓動Hadoop前,需格式化Hadoop的文件系統HDFS(這點與Windows是一樣的,重新分區後的卷總是需要格式化的)。進入Hadoop文件夾,輸入下面的命令:

bin/Hadoop NameNode -format

格式化文件系統,接下來啓動Hadoop。

輸入命令:

bin/start-all.sh(全部啓動)

最後,驗證Hadoop是否安裝成功。

打開瀏覽器,分別輸入網址:

http://localhost:50030 (MapReduce的Web頁面)
http://localhost:50070 (HDFS的Web頁面)

如果都能查看,說明Hadoop已經安裝成功。

對於Hadoop來說,安裝MapReduce及HDFS都是必須的,但是如果有必要,你依然可以只啓動HDFS(start-dfs.sh)或MapReduce(start-mapred.sh)。


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