1 Hadoop的三種創建模式
單機模式操作是Hadoop的默認操作模式,當首次解壓Hadoop的源碼包時,Hadoop無法了解硬件安裝環境,會保守地選擇最小配置,即單機模式。該模式主要用於開發調試MapReduce程序的應用邏輯,而不會和守護進程交互,避免增加額外的復雜性。
偽分布模式操作是指在“單節點集群”上運行Hadoop,其中所有的守護進程都運行在同一台機器上。該模式在單機模式操作之上多了代碼調試功能,可以查閱內存的使用情況、HDFS的輸入輸出以及守護進程之間的交互。
全分布模式操作是指一種實際意義上的Hadoop集群,其規模可從幾個節點的小集群到成百上千個節點的大集群,甚至是成千上萬的超大集群。
本文只限於介紹單機模式,偽分布模式需要在自己的Ubuntu系統下額外建立虛擬的系統,而全分布模式需要搭建集群的硬件設施。
2 創建Hadoop用戶組和Hadoop用戶
Step1:創建Hadoop用戶組:
~$ sudo addgroup hadoop
Step2:創建Hadoop用戶:
~$ sudo adduser -ingroup hadoop hadoop
回車后會提示輸入密碼,這是新建Hadoop的密碼,輸入兩次密碼敲回車即可。如下圖所示:
Step3:為Hadoop用戶添加權限:
~$ sudo gedit /etc/sudoers
點擊回車后,打開sudoers文件,在
root ALL=(ALL:ALL) ALL
后添加:
hadoop ALL=(ALL:ALL) ALL
注意:“hadoop” 后為"\t",而不是一個空格,一旦sudoers修改錯誤會引起很嚴重的后果(比如導致sudo命令無法正常使用,這時候只能通過root權限進行復原)。修改后的sudoers文件如下圖所示:
3 用新增hadoop用戶名登陸Ubuntu系統
~$ su - hadoop
輸入密碼即可。
4 安裝SSH
Step4:安裝Hadoop通信需要的SSH:
~$ sudo apt-get install openssh-server
安裝完以后,啟動服務:
~$ sudo /etc/init.d/ssh start
啟動后,可以通過如下命令來確認服務是否正確啟動:
~$ ps -e | grep ss
如下圖所示:
作為一個安全通信協議,使用時需要密碼,因此我們要設置成免密碼登錄,生成私鑰和公鑰:
~$ ssh-keygen -t rsa -P ""
如下圖所示:
此時會在/home/hadoop/.ssh下生成兩個文件:id_rsa和id_rsa.pub,前者為私鑰,后者為公鑰。現在我們將公鑰追加到authorized_keys中(authorized_keys用於保存所有允許以當前用戶身份登錄到ssh客戶端用戶的公鑰內容):
~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
現在可以登入ssh確認以后登錄時不用輸入密碼:
~$ ssh localhost
退出:
~$ exit
5 安裝Java
Step5:安裝Java:
~$ sudo apt-get install openjdk-6-jdk
安裝完后,可以輸入如下指令查看Java的版本:
~$ java -version
6 安裝和配置Hadoop
Step6:安裝Hadoop:
1)下載:
目前最新版本為2.7.0,可以根據自己的需要,安裝不同版本的Hadoop,下載地址:請點擊這里
2)解壓:
~$ sudo tar xzf hadoop-2.7.0.tar.gz
3)將hadoop移動到 /usr/local/hadoop目錄下:
~$ sudo mv hadoop-1.0.2 /usr/local/hadoop
4)要確保所有的操作都是在用戶hadoop下完成的:
~$ sudo chown -R hadoop:hadoop /usr/local/hadoop
Step7:配置Hadoop:
1)配置.bashrc:
配置該文件,需要知道Java的安裝路徑,可以通過下面的代碼查看:
~$ update-alternatives - -config java
執行結果如下:
完整的路徑為:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java,我們只取前面的部分 /usr/lib/jvm/java-7-openjdk-amd64。
修改.bashrc文件:
~$ sudo gedit ~/.bashrc
該命令會打開該文件的編輯窗口,在文件末尾追加下面內容,然后保存,關閉編輯窗口。
#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/usr/local/hadoop
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END
使添加的環境變量生效:
~$ source ~/.bashrc
2)配置hadoop-env.sh
打開hadoop-env.sh文件:
~$ sudo gedit /usr/local/hadoop/etc/hadoop/hadoop-env.sh
找到JAVA_HOME變量,按如下進行修改:
~$ export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
修改后的hadoop-env.sh文件如下所示:
使配置生效:
~$ source /usr/local/hadoop/conf/hadoop-env.sh
到這里,單機模式的hadoop就全部安裝完畢了。
7 Hadoop測試
為了測試Hadoop安裝在正確性,我們可以用在帶的例子(比如WordCount)進行測試。
1) 在/usr/local/hadoop路徑下創建input文件夾
~$ mkdir input
2)拷貝 README.txt 到 input 文件夾
~$ cp README.txt input
3)執行WordCount程序實例
~$ bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.0-sources.jar org.apache.hadoop.examples.WordCount input output
如果看到這些內容,那么恭喜你,這說明你的Hadoop已經安裝成功了。
8 結語
從Ubuntu上安裝Hadoop的過程上可以看出,以前你覺得很困難,一直不敢嘗試的東西,其實可能它很簡單。只要你自己想學,就一步步地來,問題總能找到辦法來解決,在此與大家共勉。
9 參考內容
[1] Ubuntu 14.04下安裝Hadoop2.4.0(單機模式)
[2] Ubuntu上搭建Hadoop環境(單機模式+偽分布模式)