Hadoop2.6.0安裝—單機/偽分布


作者: vincent_zh
時間:2016-10-16 
出處:http://www.cnblogs.com/vincentzh/p/5967274.html 
聲明:本文以學習、研究和分享為主,如需轉載,標明作者和出處,非商業用途! 

環境准備

  此處准備的環境是Virtual Box虛擬機下的Ubuntu14.04 64位系統,Hadoop版本為Hadoop2.6.0。裝好Hadoop運行的基礎Linux環境后,還需要做以下准備:

  •   創建hadoop用戶;
  •   更新apt;
  •   配置SSH免密登陸;
  •   安裝配置Java環境。

 創建hadoop用戶

  如果安裝系統時配置的並非是“hadoop”用戶,就需要新增加一個“hadoop”用戶。

1 $ sudo useradd -m hadoop -s /bin/bash

  該命令創建新的“hadoop”用戶,並指定 /bin/bash 作為其shell。

  

  如需更改hadoop用戶密碼,可通過如下命令進行:

1 $ sudo passwd hadoop

  

  同樣,為避免后期安裝過程中的用戶權限問題,可直接給“hadoop”用戶添加上管理員權限:

1 $ sudo adduser hadoop sudo

  之后,需切換到hadoop用戶下進行下面操作。

 更新apt

  切換到hadoop用戶之后,需要先更新一下apt,后續需要通過apt安裝其他軟件,直接在命令行安裝會方便很多,如果沒有更新,一些軟件可能安裝不了。可參考以下命令進行更新:

1 $ sudo apt-get update

  Linux 的編輯工具,當然非 vim 莫屬了,先裝上 vim 后期改參數配置文件時用的到。

1 $ sudo apt-get install vim

  遇到命令行的 [ yes/no] 或者 [Y/N] 選項,直接yes進行安裝。

 配置SSH免密登陸

  單點/集群都需要安裝SSH。一方面是遠程登陸,可一再本機通過SSH直接連接虛擬機的系統,這樣也便於后期在Windows環境下使用 Eclipse 進行配置開發 MapReduce 程序;另一方面,在配置Hadoop集群時,集群工作過程中主機和從機、從機和從機之間都通過SSH進行授權登陸工作通信。Ubuntu系統默認已經安裝了SSH Client,需要額外安裝SSH Server。

1 $ sudo apt-get install openssh-server

  首次登陸SSH會有首次登陸提示,鍵入yes,按提示輸入hadoop用戶密碼即可登陸。

  配置免密登陸。一方面,我們通過ssh登陸時比較方便,不需重新輸入密碼;另一方面,在集群方式工作時,主機與從機通信過程或從機與從機之間進行文件備份時是需要越過密碼驗證這一環節的,所以需要提前生成公鑰,在集群工作時,可以直接自動登陸。

1 $ exit                                    #推出剛剛登陸的 localhost
2 $ cd ~/.ssh                               #若無此目錄,請先進行一次ssh 登陸
3 $ ssh-keygen -t rsa                       #會有很多提示,全部回車即可
4 $ cat ./id_rsa.pub >> ./authorized_keys   #將公鑰文件加入授權

  再次通過 ssh 登陸就不需要輸入密碼了。

 安裝配置Java環境

  Java環境,Oracle JDK 和 OpenJDK都可以,此處直接通過命令安裝OpenJDK1.7(其中包含 jre 和 jdk):

1 $ sudo apt-get install openjdk-7-jre openjdk-7-jdk

  配置環境變量:

  安裝好JDK后,需要配置Java環境變量,通過以下命令尋找Java安裝路徑:

1 $ dpkg -L openjdk-7-jdk | grep '/bin/javac'

  該命令會輸出一個路徑,除去路徑末尾的 “/bin/javac”,剩下的就是JDK的安裝路徑了。

 

  在.bashrc文件中配置環境變量:

1 $ vi ~/.bashrc

  需要在.bashrc文件中添加如下環境變量:

 

  生效並檢驗環境變量配置是否正確:

1 $ source ./.bashrc                  #生效環境變量
2 $ echo $JAVA_HOME                   #查看環境變量
3 $ java -version
4 $ $JAVA_HOME/bin/java -version      #驗證與java -version 輸出一致

 

   OK,Java環境安裝配置完成。

安裝Hadoop

   通過http://mirrors.cnnic.cn/apache/hadoop/common/ 可下載Hadoop穩定版 hadoop-2.x.y.tar.gz 文件都是編譯好的,建議同時下載hadoop-2.x.y.tar.gz.mds,此mds文件是為了檢驗在下載和移動文件過程中文件的完整性。

  通過驗證文件的md5值去檢驗文件的完整性:

1 $ cat ./hadoop-2.6.0.tar.gz.mds | grep 'MD5'
2 $ md5sum ./hadoop-2.6.0.tar.gz | tr 'a-z' 'A-Z'

   文件驗證無誤,將文件解壓到安裝目錄:

1 $ cd /usr/lcoal                              #切換到壓縮文件所在目錄
2 $ sudo tar -zxf ./hadoop-2.6.0.tar.gz ./     #解壓文件
3 $ sudo mv ./hadoop-2.6.0 ./hadoop            #將文件名改為較容易辨認的
4 $ chown -R hadoop ./hadoop                   #修改文件權限

   在.bashrc文件中配置hadoop相關環境變量:

   生效環境變量,並驗證Hadoop安裝成功。

1 $ source ~/.bashrc
2 $ hadoop version

Hadoop單機/偽分布配置 

 單機Hadoop

   Hadoop 默認模式為非分布式模式,無需進行其他配置即可運行。非分布式即單 Java 進程,方便進行調試。

  注:單機、偽分布、集群的區別:

    單機:故名思意,Hadoop運行再單台服務器上,並且此時的Hadoop讀取的是本地的文件系統,並沒有使用自己的HDFS。

    偽分布:單機版集群,單台服務器既是NameNode,也是DataNode,並且也只有這一個DataNode,文件是從HDFS讀取。

    集群:單機和偽分布說了集群就簡單了。一般單獨分配一台服務器作為NameNode,並且NameNode一般不會同時配置為DataNode,DataNode一般在其他服務器上,另外對大型集群,為體現Hadoop集群的高可用性,也會單獨設置一台服務器作為集群的SecondaryNameNode,也就是NameNode的備份,主要用於NameNode失效時的快速恢復。

 偽分布Hadoop

   Hadoop 偽分布式的方式是在單節點上運行的,節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件,Hadoop 進程以分離的 Java 進程來運行。

  Hadoop 的配置文件位於 $HADOOP_HOME/etc/hadoop/ 中,偽分布式需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現。另外如果要啟動YARN,需要再修改 mapred-site.xmlyarn-site.xml 兩個配置文件。

  通過編輯器或 vim 對xml配置文件進行修改。

  修改 core-site.xml 配置文件:

 1 <configuration>
 2         <property>
 3              <name>hadoop.tmp.dir</name>
 4              <value>file:/usr/local/hadoop/tmp</value>
 5              <description>Abase for other temporary directories.</description>
 6         </property>
 7         <property>
 8              <name>fs.defaultFS</name>
 9              <value>hdfs://localhost:9000</value>
10         </property>
11 </configuration>

   修改 hdfs-site.xml  配置文件:

 1 <configuration>
 2         <property>
 3              <name>dfs.replication</name>
 4              <value>1</value>
 5         </property>
 6         <property>
 7              <name>dfs.namenode.name.dir</name>
 8              <value>file:/usr/local/hadoop/tmp/dfs/name</value>
 9         </property>
10         <property>
11              <name>dfs.datanode.data.dir</name>
12              <value>file:/usr/local/hadoop/tmp/dfs/data</value>
13         </property>
14 </configuration>

   修改 mapred-site.xml 配置文件:

1 <configuration>
2         <property>
3              <name>mapreduce.framework.name</name>
4              <value>yarn</value>
5         </property>
6 </configuration>

  修改 yarn-site.xml 配置文件:

1 <configuration>
2         <property>
3              <name>yarn.nodemanager.aux-services</name>
4              <value>mapreduce_shuffle</value>
5             </property>
6 </configuration>

 啟動Hadoop

   配置完成,首次啟動Hadoop時需要對NameNode格式化:

1 $ hdfs namenode -format

 

   有這兩個標志,則表示配置沒問題,namenode已經格式化,可以啟動Hadoop了。如果格式化錯誤,需要檢查配置文件配置是否正確,最常見的問題就是配置文件里的拼寫錯誤。

  啟動守護進程:

1 $ start-dfs.sh                                     #啟動hdfs,含NameNode、DataNode、SecondaryNameNode守護進程
2 $ start-yarn.sh                                    #啟動yarn,含ResourceManager、NodeManager
3 $ mr-jobhistory-daemon.sh start historyserver      #開啟歷史服務器,才能在Web中查看任務運行情況

   守護進程的啟動情況可通過 jps 命令查看,查看所有的守護進程是否都正常啟動。如果有未啟動的守護進程,需要去 $HADOOP_HOME/logs 目錄查看對應的守護進程啟動的日志查找原因。

   成功啟動所有守護進程之后,通過Web界面 http://server_ip/50070 查看NameNode 和 DataNode 的信息,還可以在線查看HDFS文件。

  YRAN啟動之后(即 ResourceManager 和 NodeManager),也可以通過 http://server_ip/8088 查看管理資源調度,和查看Job的執行情況。

 停止Hadoop

1 $ stop-dfs.sh
2 $ stop-yarn.shResourceManager、NodeManager
3 $ mr-jobhistory-daemon.sh stop historyserver 

  Note:Hadoop常用的服務器管理命令腳本都可以在 $HADOOP_HOME/bin 和 $HADOOP_HOME/sbin 目錄中找到。

集群部署詳見:http://www.cnblogs.com/vincentzh/p/6034187.html


免責聲明!

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



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