Hadoop 2.2.0 (YARN)搭建筆記

來源:互聯網
上載者:User

最近工作需要,摸索著搭建了Hadoop 2.2.0(YARN)叢集,中間遇到了一些問題,在此記錄,希望對需要的同學有所協助。

        本篇文章不涉及hadoop2.2的編譯,編譯相關的問題在另外一篇文章《hadoop 2.2.0 源碼編譯筆記》中說明,本篇文章我們假定已經獲得了hadoop 2.2.0的64bit發行包。

        由於spark的相容問題,我們後面使用了Hadoop 2.0.5-alpha的版本(2.2.0是穩定版本),2.0.5的配置有一點細微的差別,文中有特別提示。

1. 簡介

     【本節摘自http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html】

     Hadoop是Apache軟體基金會旗下的一個開源分散式運算平台。以HadoopDistributed File System(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的開源實現)為核心的Hadoop為使用者提供了系統底層細節透明的分布式基礎架構。

  對於Hadoop的叢集來講,可以分成兩大類角色:Master和Salve。一個HDFS叢集是由一個NameNode和若干個DataNode組成的。其中NameNode作為主伺服器,管理檔案系統的命名空間和用戶端對檔案系統的訪問操作;叢集中的DataNode管理儲存的資料。MapReduce架構是由一個單獨運行在主節點上的JobTracker和運行在每個叢集從節點的TaskTracker共同組成的。主節點負責調度構成一個作業的所有任務,這些任務分布在不同的從節點上。主節點監控它們的執行情況,並且重新執行之前的失敗任務;從節點僅負責由主節點指派的任務。當一個Job被提交時,JobTracker接收到提交作業和配置資訊之後,就會將配置資訊等分發給從節點,同時調度任務並監控TaskTracker的執行。

  從上面的介紹可以看出,HDFS和MapReduce共同組成了Hadoop分布式系統體繫結構的核心。HDFS在叢集上實現Distributed File System,MapReduce在叢集上實現了分散式運算和任務處理。HDFS在MapReduce任務處理過程中提供了檔案操作和儲存等支援,MapReduce在HDFS的基礎上實現了任務的分發、跟蹤、執行等工作,並收集結果,二者相互作用,完成了Hadoop分布式叢集的主要任務。
2. 系統內容 系統版本

CentOS 6.4  64bit
uname -a
Linux ** 2.6.32_1-7-0-0 #1 SMP *** x86_64 x86_64 x86_64 GNU/Linux JAVA環境 安裝Java 1.6
將jdk解壓到local目錄下
添加JAVA_HOME環境變數到.bashrc檔案中

export JAVA_HOME="/home/<hostname>/local/jdk1.6.0_45/"
export JRE_HOME="/home/<hostname>/local/jdk1.6.0_45/jre/"
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

HADOOP解壓hadoop-2.2.0-bin_64.tar.gz(這個包是我在CentOS6.4 64bit的環境下編譯得到的) 到使用者根目錄

export HADOOP_HOME=/home/<hostname>/hadoop-2.2.0
[html] view plaincopyprint? export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH  

測試本地模式 hadoop預設情況下配置為本地模式,所以解壓後不修改任何配置,可以執行本地測試
// 建立本地目錄
mkdir input 
// 填充資料
cp conf/*.xml input 
// 執行hadoop
bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 
// 查看結果
[html] view plaincopyprint? cat output/*  

3. 網路環境 由於前期只是測試環境和配置,所以簡單的使用兩個節點:
master機器,充當namenode & datanode
slave機器,充當datanode

設定hostname
HDFS用hostname而不是IP來相互之間進行通訊,hadoop會反向解析hostname,即使是用了IP,也會使用hostname 來啟動TaskTracker,所以所有設定檔只能用hostname,不能用IP(滿滿的都是淚)。我們給兩個機器分別設定如下:

機器 IP HOSTNAME 角色
master 192.168.216.135 master namenode, datanode
slave 192.168.216.136 slave1 datanode

臨時更改hostname的命令是(root許可權)
hostname <new_name>
永久更改需要修改設定檔/etc/sysconfig/network
[html] view plaincopyprint? HOSTNAME=<new_name>  
修改hosts檔案 設定/etc/hosts檔案(每台機器上都要設定),添加如下內容 [html] view plaincopyprint? 192.168.216.135 master   192.168.216.136 slave1   namenode與datanode的/etc/hosts內容都必須是ip位址與host name的對應,不能使用127.0.0.1代替原生ip地址,否則hadoop使用hostname找ip時,會以"127.0.0.1"作為ip位址。
設定ssh無密碼訪問 master和所有的slave之間,需要實現雙向ssh無密碼訪問(slave和slave之間可以不用實現)。
請參見《ssh無密碼訪問》文章,本文不再詳述
防火牆設定 嚴格來說,應該是開啟某些對應的連接埠。為了簡單起見,我們這裡關閉selinux和iptalbes. 關閉selinux的方法 [html] view plaincopyprint? setenforce 1 設定SELinux 成為enforcing模式   setenforce 0 設定SELinux 成為permissive模式    如果永久關閉,編輯/etc/selinux/config [html] view plaincopyprint? SELINUX=disabled

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.