ubuntu上Hadoop三種運行模式的部署


Hadoop集群支持三種運行模式:單機模式、偽分布式模式,全分布式模式,下面介紹下在Ubuntu下的部署

(1)單機模式

默認情況下,Hadoop被配置成一個以非分布式模式運行的獨立JAVA進程,適合開始時的調試工作。在eclipse中開發用的就是單機模式,這時不用HDFS。
好的如果沒有安裝JDK,那么安裝步驟如下:
先到官網下載JDK的linux版本,下載后直接加壓到相應目錄,這樣JDk就安裝好了。接下來配置環境變量
sudo gedit /etc/profile 

  加入下面代碼

#set java environment

JAVA_HOME=/home/*******/jdk1.7.0_09     

export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$PATH 

java_home的路徑是自己本機上的路徑。保存退出后需要注銷當前用戶,重新登錄。

然后打開控制台輸入java -version顯示java的版本等信息表明配置成功。
將下載好的hadoop解壓,重新命名為hadoop(這是為了方便以后到操作)。進入conf文件夾下,在hadoop-env.sh文件中做修改,在第九行左右到位置中有#export JAVA_HOME=*******這樣到字樣,首先將#(這里#為注釋到作用)去掉,修改JAVA_HOME的值為你機器中jdk到文件路徑即可,這里到值和/etc/profile是相同的。
現在可以單機模式運行一個Hadoop程序了,確定當前路徑是Hadoop文件夾
bin/hadoop jar hadoop-ex*.jar wordcount conf output
conf是輸入文件夾,output是輸出文件夾,所以保證conf文件夾是存在的,並且有文件。

(2)偽分布式模式

偽分布式模式是一種單點運行模式,所有進程(NameNode、Secondary NameNode、JobTracker、DateNode、TaskTracker)都運行在僅有的一個節點上,需要用到HDFS。
首先配置三個XML文件,文件路徑在hadoop目錄下的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/logs</value>
     </property>
</configuration>

 hdfs-site.xml

<configuration>
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
</configuration>

mapred-site.xml

<configuration>
     <property>
         <name>mapred.job.tracker</name>
         <value>localhost:9001</value>
     </property>
</configuration>

  接下來需要安裝SSH
在ubnuntu下直接在控制台中輸入

sudo apt-get install openssh-server  

  如果提示找不到源,在軟件中心輸入

sudo apt-get update

  安裝完SSH,需要設置登錄的密鑰,控制台輸入

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa   
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys  
ssh-keygen代表生成密鑰;-t(注意區分大小寫)表示指定生成的密鑰類型,dsa是dsa密鑰認證的意思,即密鑰類型;-P用於提供密語;-f指定生成的密鑰文件。cat  把id_dsa.pub(公鑰)追加到授權的authorized_key里。這樣控制台輸入ssh localhost就不需要密碼了。
下面是運行步驟(路徑是hadoop路徑):
(1)把NameNode格式化,並開啟Hadoop進程
bin/hadoop namenode -format  
  
bin/start-all.sh
輸入jps,查看相關5個進程是否開啟。
(2)在HDFS上建立輸入文件夾,並上傳數據
bin/hadoop fs -mkdir input  
bin/hadoop fs -put data input 
input是建立的文件夾的名字,date是本地數據文件(默認路徑在hadoop目錄下),至於命令bin/hadoop fs -help查看。
(3)運行Wordcount,查看結果
bin/hadoop jar hadoop-examples-*.jar wordcount input output  
bin/hadoop fs -cat output/* >> result.txt  
如果是自己導出的jar 包可以直接用bin/hadoop jar own.jar input output。結果放在result.txt文件中(本地Hadoop目錄),不加它,在控制台查看結果。
程序運行期間可以通過瀏覽器http://機器名:50030查看運行情況
(4)關閉hadoop進程
bin/stop-all.sh  

(3)全分布式模式

對於Hadoop,不同的系統有不同的節點划分方式。在HDFS看來。節點分為NameNode和DataNode,其中DataNode可以有多個;MapReduce看來,節點分JobTracker和TaskTracker,TaskTracker可以多個。
全分布式的部署和偽分布式部署的差不多。
有大於兩台的機器,有相同的用戶名(必須),確定IP在同一個網段,並能相互ping通。
192.168.6.30 master  
192.168.6.31 node1  

(1)主機生成SSH,並分發密鑰

ssh-keygen -t rsa  
ssh-copy-id -i ~/.ssh/id_rsa.pub 用戶名@192.168.6.31

 如果分發不成功可以使用下面的命令

scp ~/.ssh/id_rsa.pub MachineName@202.194.124.49:~/mas_key 

 然后在遠程機器上

mkdir ~/.ssh  
chmod 700 ~/.ssh  
mv ~/mas_key ~/.ssh/authorized_keys  
chmod 600 ~/.ssh/authorized_keys  

 使用ssh-copy-id不僅可以將公鑰添加到authorized_keys中去,而且也設置了正確的權限(文件夾.ssh為700,authorized_keys為600)
參考文章:http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/
ssh免密碼登錄原理可參考:http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html
這樣在master主機上ssh 192.168.6.31主機時應該就不用輸入密碼了
如果出現Agent admitted failure to sign using the key這個問題
解決方式 使用 ssh-add 指令將私鑰 加進來 

ssh-add   ~/.ssh/id_rsa   

(2)配置hosts文件

 

sudo gedit /etc/hosts

127.0.0.1    localhost  
#127.0.0.1 機器名  
192.168.6.38 master  
192.168.6.31 node1  

*第二行的注釋一定要注釋掉。然后將hosts文件通過scp 分發到從機上,登錄從機移動hosts文件。

scp /etc/hosts 目標機器名@目標機器IP:~/hosts  

sudo mv hosts /etc/  
(3)修改hadoop配置文件
共5個文件需要配置,其中三個和偽分布式的一樣,其中兩個文件的字段需要改成主機的機器名(這里為master,也可以是IP),另兩個文件是masters和slaves
masters
master 

slaves

master  
node1 
這個Hadoop集群中有兩個數據節點,master兼當主從機。
*5個配置文件也需要分發到從機上(即集群中主從機器的hadoop的配置相同)
這樣Hadoop的配置就完成了,用ssh node1命令,就可以直接登錄了。
接下來運行Wordcount的步驟和偽分布式模式一樣了。
注意:每次運行前把集群機器中logs目錄清空。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM