Hadoop最先是爲了在Linux平臺上使用而開發的,可是Hadoop在UNIX、Windows和Mac OS X系統上也運行良好。不過,在Windows上運行Hadoop稍顯複雜,首先必須安裝Cygwin以模擬Linux環境,而後才能安裝Hadoop。Hadoop的安裝很是簡單,你們能夠在官網上下載到最近的幾個版本,在Unix上安裝Hadoop的過程與在Linux上安裝基本相同,所以下面不會對其進行詳細介紹。java
在Linux上安裝與配置Hadooplinux
在Linux上安裝Hadoop以前,須要先安裝兩個程序:apache
1. JDK 1.6或更高版本;ubuntu
2. SSH(安全外殼協議),推薦安裝OpenSSH。瀏覽器
下面簡述一下安裝這兩個程序的緣由:安全
1. Hadoop是用Java開發的,Hadoop的編譯及MapReduce的運行都須要使用JDK。bash
2. Hadoop須要經過SSH來啓動salve列表中各臺主機的守護進程,所以SSH也是必須安裝的,即便是安裝僞分佈式版本(由於Hadoop並無區分集羣式和僞分佈式)。對於僞分佈式,Hadoop會採用與集羣相同的處理方式,即依次序啓動文件conf/slaves中記載的主機上的進程,只不過僞分佈式中salve爲localhost(即爲自身),因此對於僞分佈式Hadoop,SSH同樣是必須的。ssh
1、安裝JDK 1.6jvm
安裝JDK的過程很簡單,下面以Ubuntu爲例。分佈式
1.官網下載(這裏下載到是jdk1.8.0_60)
減壓jdk-8u60-linux-x64.gz到/usr/lib/jvm文件夾下
sudo tar zxvf jdk-8u60-linux-x64.gz -C /usr/lib/jvm
2.配置
sudo gedit ~/.bashrc
添加
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_60
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
3.檢查
java -version
2、配置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的無密碼登陸。
3、安裝並運行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並將其解壓。
sudo tar zxvf hadoop-0.20.2.tar.gz -C /usr/local/lib
單節點方式配置:
安裝單節點的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(所有啓動)
注:這裏默認要用root權限啓動:切換身份:sudo -s
將權限改成其餘身份(如:u),則
sudo chown -R u:u /usr/local/lib/hadoop-0.20.2
最後,驗證Hadoop是否安裝成功。
打開瀏覽器,分別輸入網址:
http://localhost:50030 (MapReduce的Web頁面) http://localhost:50070 (HDFS的Web頁面)
若是都能查看,說明Hadoop已經安裝成功。
對於Hadoop來講,安裝MapReduce及HDFS都是必須的,可是若是有必要,你依然能夠只啓動HDFS(start-dfs.sh)或MapReduce(start-mapred.sh)。
配置參考http://os.51cto.com/art/201303/383283_all.htm