本文環境是在Ubuntu10.04環境下運行的。html
在Linux上安裝Hadoop以前,首先安裝兩個程序:java
一、JDK1.6(或更高版本)。Hadoop是用Java編寫的程序,Hadoop編譯及MapReduce的運行都須要使用JDK。所以在安裝Hadoop以前,必須安裝JDK1.6或更高版本。node
二、SSH( Secure Shell 安全外殼協議)。SSH 爲創建在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專爲遠程登陸會話和其餘網絡服務提供安全性的協議。利用 SSH 協議能夠有效防止遠程管理過程當中的信息泄露問題。Hadoop須要SSH來啓動Slave(從機)列表中各臺主機的守護進程,推薦安裝OpenSSH。linux
(1)下載並安裝JDK1.6apache
進入http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR頁面下載JDK1.6 linux版本(根據本身的OS選擇32爲或64位版本的),如 jdk-6u45-linux-i586.bin(32位)或者jdk-6u45-linux-x64.bin(64位)。安全
(2)安裝並配置JDk環境變量網絡
進入 jdk-6u45-linux-i586.bin的目錄輸入如下命令進行安裝:oracle
sudo chmod u+x jdk-6u45-linux-i586.bin //修改權限ssh
sudo -s ./jdk-6u45-linux-i586.bin //安裝jvm
安裝完畢後就能夠配置環境變量了。
環境變量配置文件爲/etc/profile,輸入一下命令打開profile文件。在文件的末尾輸入一下內容。
#set JAVA Environment
exprt JAVA_HOME=/usr/local/jdk1.6.0_45 //設置JDK的JAVA_HOME,爲JDK安裝的根目錄
export CLASSPATH=".:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib" //設置JDK的CLASSPATH
export PATH="$JAVA_HOME/bin:$JRE_HOME/bin:$PATH" //設置JDK的PATH路徑
環境變量配置好之後,系統就能夠找到JDK了。
輸入一下命令:java -version 會出現以下信息:
說明JDK已經安裝成功。
若是沒有出現上述情景,說明當前安裝的JDK並未設置成Ubuntu系統默認的JDK,還要手動將安裝的JDK設置成系統默認的JDK。具體操做以下:
在終端依次輸入以下命令:
sudo update-alternatives --install /usr/bin/java java /usr/local/jdk1.6.0_45/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/local/jdk1.6.0_45/bin/javac 300
sudo update-alternatives --config java
接下來再次輸入java -version命令 就能夠看到JDK的版本信息了。
二、配置SSH免密碼登錄
首先安裝ssh,輸入命令:
sudo apt-get install ssh
而後,輸入一下命令:
ssh-keygen -t dsa -P ' ' -f ~/ .ssh/id_dsa
ssh-keygen表明生成密鑰:-t表示生成指定的密鑰類型;
dsa是dsa密鑰認證的意思,即密鑰類型:用於提供密語;-f 生成指定的密鑰文件; ~/ 表示在當前用戶文件夾下。
這個命令會在.ssh文件夾下建立id_dsa及id_dsa.pub兩個文件,這是SSH的一對私鑰和公鑰,相似於鑰匙和鎖,把id_dsa.pub(公鑰)追加到受權的key中去。
輸入命令:
cat ~/ .ssh/id_dsa.pub >> ~/ .ssh/authorized_keys
這個命令時把公鑰加到用於認證的公鑰文件中,這裏的authorized_keys是用於認證的公鑰文件。到此爲止,免密碼登錄本機已配置完畢。
輸入一下命令:
ssh -version
顯示以下結果:
輸入命令:
ssh localhost
會有以下顯示:
這說明已經安裝成功,第一次登錄時會詢問是否繼續連接,輸入yes便可進入。
實際上,在Hadoop的安裝過程當中,是否免密碼登錄是可有可無,可是若是不配置免密碼登錄,每次啓動Hadoop都須要輸入密碼以登錄到每臺機器的DataNode上,考慮到通常的Hadoop集羣有成敗上千臺機器,所以都會配置SSH的免密碼登錄。
三、安裝並運行Hadoop
進入Hadoop官網下載地址:http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-1.2.1/,下載Hadoop最新版,並將其解壓。
hadoop的配置詳解請請參照上一篇筆記 http://www.cnblogs.com/bester/p/3279368.html。
進入conf文件夾,修改配置文件。
(1)hadoop-env.sh:
指定JDK的安裝位置,將紅圈的部分修改成:export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45 並去掉 #
(2)conf/core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop_home/var</value> </property> </configuration>
fs.default.name:NameNode的URI。hdfs://主機名:端口/
hadoop.tmp.dir:Hadoop的默認臨時路徑,這個最好配置,若是在新增節點或者其餘狀況下莫名其妙的DataNode啓動不了,就刪除此文件中的tmp目錄便可。
不過若是刪除了NameNode機器的此目錄,那麼就須要從新執行NameNode格式化的命令。
(3)conf/hdfs-site.xml
<configuration> <property> <name>dfs.name.dir</name> //指定name鏡像文件存放目錄,如不指定則默認爲core-site中配置的tmp目錄 <value>/bobo/Software/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> //數據存放的目錄,若是不寫默認爲core-site中配置的tmp目錄 <value>/bobo/Software/hadoop/hdfs/data</value> </property> <property> <name>dfs.replication</name>
<value>1</value>
</property>
</configruation>
dfs.name.dir是NameNode持久存儲名字空間及事務日誌的本地文件系統路徑。當這個值是一個逗號分割的目錄列表時,nametable數據將會被複制到全部目錄中作冗餘備份。
dfs.data.dir是DataNode存放塊數據的本地文件系統路徑,逗號分割的列表。當這個值是逗號分割的目錄列表時,數據將被存儲在全部目錄下,一般分佈在不一樣設備上。
dfs.replication是數據須要備份的數量,默認是3,單機版需將此改成1,若是此數大於集羣的機器數會出錯。
(4)conf/mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
mapred.job.tracker是JobTracker的主機(或者IP)和端口。主機:端口。
在啓動Hadoop以前,須要格式化Hadoop的文件系統HDFS。進入Hadoop文件夾,輸入命令:
bin/hadoop namenode -format //注意 namenode 必須小寫 不然 會有異常出現
格式化文件系統,接下來啓動Hadoop,輸入命令:
bin/start-all.sh
最後驗證Hadoop是否安裝成功。
打開遊覽器,輸入一下網址:
http://localhost:50070/(MapReduce的Web頁面)
http://localhost:50030/(HDFS的Web頁面)
說明已經安裝成功了。
下一節將介紹HDFS文件系統。
做者:Bester