1. 程式人生 > 其它 >基於virtual box虛擬機器的Hadoop叢集安裝配置教程

基於virtual box虛擬機器的Hadoop叢集安裝配置教程

本文記錄參考 http://dblab.xmu.edu.cn/blog/2775-2/ 搭建hadoop分散式叢集的過程

前置

  • 已在一臺虛擬機器配置好了偽分散式hadoop系統
  • 一臺虛擬機器作為master作為namenode,三臺虛擬機器data1、2、3(均安裝了ubuntu系統)作為datanode

網路配置

  • 網絡卡1配置為NAT網路,這樣虛擬機器可以正常訪問外部網路

  • 網絡卡2配置為host-only,這樣data虛擬機器可以和master虛擬機器通訊

    如果介面名稱顯示未指定,可以在virtualBox左上角選單欄點選管理,主機網路管理器,點選建立,便可以指定介面名稱

  • 配置主機名稱和網路
    sudo vim /etc/hostname

    ping data1 -c 3 測試網路是否連通

SSH無密碼登入節點

  • 必須要讓Master節點可以SSH無密碼登入到各個Slave節點上。首先,生成Master節點的公匙,如果之前已經生成過公鑰,必須要刪除原來生成的公鑰,重新生成一次,因為前面我們對主機名進行了修改。具體命令如下

    cd ~/.ssh              # 如果沒有該目錄,先執行一次ssh localhost
    rm ./id_rsa*           # 刪除之前生成的公匙(如果已經存在)
    ssh-keygen -t rsa       # 執行該命令後,遇到提示資訊,一直按回車就可以
    
  • 為了讓Master節點能夠無密碼SSH登入本機,需要在Master節點上執行如下命令:
    cat ./id_rsa.pub >> ./authorized_keys

  • 接下來,在Master節點將上公匙傳輸到Slave1節點(具體資料夾視具體情況而定)
    scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

  • 在data1節點上,將SSH公匙加入授權:

    mkdir ~/.ssh       # 如果不存在該資料夾需先建立,若已存在,則忽略本命令
    cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
    rm ~/id_rsa.pub    # 用完以後就可以刪掉
    
  • 如果有其他節點,一樣配置

配置PATH變數

  • 在前面的偽分散式安裝內容中,已經介紹過PATH變數的配置方法。可以按照同樣的方法進行配置,這樣就可以在任意目錄中直接使用hadoop、hdfs等命令了。如果還沒有配置PATH變數,那麼需要在Master節點上進行配置。 首先執行命令“vim /.bashrc”,也就是使用vim編輯器開啟“
    /.bashrc”檔案,然後,在該檔案最上面的位置加入下面一行內容:
    export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin
    儲存後執行命令“source ~/.bashrc”,使配置生效。

配置叢集/分散式環境

  • 在配置叢集/分散式模式時,需要修改“/usr/local/hadoop/etc/hadoop”目錄下的配置檔案,這裡僅設定正常啟動所必須的設定項,包括workers 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml共5個檔案,更多設定項可檢視官方說明。檔案在/usr/local/hadoop/etc/hadoop中

  • workers

  • core-site.xml

    <configuration>
    		<property>
    				<name>fs.defaultFS</name>
    				<value>hdfs://Master:9000</value>
    		</property>
    		<property>
    				<name>hadoop.tmp.dir</name>
    				<value>file:/usr/local/hadoop/tmp</value>
    				<description>Abase for other temporary directories.</description>
    		</property>
    </configuration>
    
  • hdfs-site.xml

    <configuration>
    		<property>
    				<name>dfs.namenode.secondary.http-address</name>
    				<value>Master:50090</value>
    		</property>
    		<property>
    				<name>dfs.replication</name>
    				<value>1</value>
    		</property>
    		<property>
    				<name>dfs.namenode.name.dir</name>
    				<value>file:/usr/local/hadoop/tmp/dfs/name</value>
    		</property>
    		<property>
    				<name>dfs.datanode.data.dir</name>
    				<value>file:/usr/local/hadoop/tmp/dfs/data</value>
    		</property>
    </configuration>
    
  • mapred-site.xml

    <configuration>
    		<property>
    				<name>mapreduce.framework.name</name>
    				<value>yarn</value>
    		</property>
    		<property>
    				<name>mapreduce.jobhistory.address</name>
    				<value>Master:10020</value>
    		</property>
    		<property>
    				<name>mapreduce.jobhistory.webapp.address</name>
    				<value>Master:19888</value>
    		</property>
    		<property>
    				<name>yarn.app.mapreduce.am.env</name>
    				<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    		</property>
    		<property>
    				<name>mapreduce.map.env</name>
    				<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    		</property>
    		<property>
    				<name>mapreduce.reduce.env</name>
    				<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
    		</property> 
    </configuration>
    
  • yarn-site.xml

    <configuration>
    		<property>
    				<name>yarn.resourcemanager.hostname</name>
    				<value>Master</value>
    		</property>
    		<property>
    				<name>yarn.nodemanager.aux-services</name>
    				<value>mapreduce_shuffle</value>
    		</property>
    </configuration>
    
  • 5個檔案全部配置完成以後,需要把Master節點上的“/usr/local/hadoop”資料夾複製到各個節點上
    在master節點上:

    cd /usr/local
    sudo rm -r ./hadoop/tmp     # 刪除 Hadoop 臨時檔案
    sudo rm -r ./hadoop/logs/*   # 刪除日誌檔案
    tar -zcf ~/hadoop.master.tar.gz ./hadoop   # 先壓縮再複製
    cd ~
    scp ./hadoop.master.tar.gz Slave1:/home/hadoop
    

    在data1節點上

    sudo rm -r /usr/local/hadoop    # 刪掉舊的(如果存在)
    sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
    sudo chown -R hadoop /usr/local/hadoop
    

啟動

  • 首次執行,在master節點上格式化節點:

    hdfs namenode -format
    
  • 啟動

    start-dfs.sh
    start-yarn.sh
    mr-jobhistory-daemon.sh start historyserver
    
  • 在master上jps檢視

  • data1上檢視

關閉

  • 在master虛擬機器上
    stop-yarn.sh
    stop-dfs.sh
    mr-jobhistory-daemon.sh stop historyserver
    
祝看到這裡的你生活愉快,謝謝