Hadoop 2.3.0 分布式集群搭建圖文

jopen 10年前發布 | 61K 次閱讀 Hadoop 分布式/云計算/大數據

一。配置虛擬機軟件

下載地址:https://www.virtualbox.org/wiki/downloads 
Hadoop2.3.0的分布式集群搭建圖文

1.虛擬機軟件設定

1)進入全集設定

Hadoop2.3.0的分布式集群搭建圖文

2)常規設定

Hadoop2.3.0的分布式集群搭建圖文

2.Linux安裝配置

1)名稱類型

名稱最后具有說明意義。版本根據個人情況。

Hadoop2.3.0的分布式集群搭建圖文

2)內存

在下物理機系統Win7x64,處理器i53210,內存8G

Hadoop2.3.0的分布式集群搭建圖文 

3)磁盤選擇

Hadoop2.3.0的分布式集群搭建圖文

4)磁盤文件

virtualbox格式vdiVMWare格式vmdk,微軟格式vhdvirtualbox不支持),Parallels格式hddvirtualbox不支持)。
vdivmdkVBoxManage.exe clonehd 原鏡像.vmdk 目標鏡像.vdi --format VDI 
vdivhd VBoxManage.exe clonehd 原鏡像.vdi 目標鏡像.vmdk --format VMDK 
vmdkvhdVBoxManage.exe clonehd 原鏡像.vdi 目標鏡像.vhd --format VHD 
Hadoop2.3.0的分布式集群搭建圖文 

5)磁盤空間

根據個人物理機配置,固定大小運行更快。
Hadoop2.3.0的分布式集群搭建圖文

6)磁盤位置

Hadoop2.3.0的分布式集群搭建圖文

7)數據傳輸

共享粘貼板和鼠標拖放的實現還需要系統安裝結束后安裝增強功能。
Hadoop2.3.0的分布式集群搭建圖文

8)軟驅

去除勾選。
Hadoop2.3.0的分布式集群搭建圖文

9Linux鏡像

Hadoop2.3.0的分布式集群搭建圖文

10)網絡

去除勾選,安裝過程中禁用網絡。
Hadoop2.3.0的分布式集群搭建圖文

二。安裝模板Linux

1.一般安裝過程

Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文

2.初始化用戶

注意:不要使用“自動登錄”。在下使用的是Ubuntu10.10,曾經這一步選擇自動登錄,給后續工作造成了很大麻煩。此時的用戶名最好是一個通用的名稱,因為后續會涉及SSH登錄。
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文

三。配置Linux

1.在桌面顯示終端

便于使用命令行。
Hadoop2.3.0的分布式集群搭建圖文

2.在桌面顯示“我的電腦”

Hadoop2.3.0的分布式集群搭建圖文

注意類型為“位置”。
Hadoop2.3.0的分布式集群搭建圖文

3.安裝增強功能

實現和物理機的粘貼板共享、鼠標拖放。
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文

現在有很多視圖模式可以使用:
Hadoop2.3.0的分布式集群搭建圖文

4.初始化root用戶

Hadoop2.3.0的分布式集群搭建圖文

當前用戶涉及集群配置的幾個重要信息:
Hadoop2.3.0的分布式集群搭建圖文

5.關閉防火墻

為了避免不必要的麻煩,在學習中建議關閉防火墻,這一步如果有修改,需重啟系統:
Hadoop2.3.0的分布式集群搭建圖文

四。準備資源

0.下載

OpenSSHhttp://archive.ubuntu.com/ubuntu/pool/main/o/openssh/  
         http://mirrors.oschina.net/ubuntu/pool/main/o/openssh/  
         這里不要下載太新的版本,以為你的Linux可能缺少其依賴。
JDKhttp://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html  
Hadoophttp://www.apache.org/dyn/closer.cgi/hadoop/common/  
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文

1.安裝SSH

1openssh-client

SHELL$ sudo dpkg -i openssh-client_5.3p1-3ubuntu3_i386.deb
Hadoop2.3.0的分布式集群搭建圖文

2openssh-server

SHELLsudo dpkg -i openssh-server_5.3p1-3ubuntu3_i386.deb
Hadoop2.3.0的分布式集群搭建圖文

3ssh-all

SHELLsudo dpkg -i sudo dpkg -i ssh_5.3p1-3ubuntu3_all.deb 
Hadoop2.3.0的分布式集群搭建圖文

4ssh-keygen

在我們的學習環境中沒有必要使用密碼,所以創建密鑰時留空,直接回車。
當然從這一步到6)可以先放棄,因為后續我們還需要單獨在每臺主機上操作。

SHELLssh-keygen 
Hadoop2.3.0的分布式集群搭建圖文

5authorized_keys

創建自動密碼驗證文件。如果使用cat命令,一個>為覆蓋寫入,另個為追加寫入。還可以使用cp命令。

SHELLsudo cat id_rsa.pub > authorized_keys 
SHELLsudo cat id_rsa.pub >> authorized_keys 
SHELLsudo cp  id_rsa.pub authorized_keys 
Hadoop2.3.0的分布式集群搭建圖文

6ssh localhost

登錄測試,初次登錄會讓用戶確認:
Hadoop2.3.0的分布式集群搭建圖文

2.安裝JDK

因為在下的jdkgz格式,所以首先需要解壓。解壓后移動到合適的目錄,注意不要用當前用戶的工作目錄,這是為了簡化后續工作。

解壓:SHELLsudo tar -zxvf jdk-7u51-linux-i586.gz 
移動:SHELLsudo mv jdk1.7.0_51 /home  

1)環境變量

SHELLsudo gedit /etc/profile 
Hadoop2.3.0的分布式集群搭建圖文

2)重載環境變量,測試

SHELLsudo source /etc/profile 
Hadoop2.3.0的分布式集群搭建圖文

3.安裝Hadoop

同樣,為了簡化后續工作解壓后移動到合適的目錄。

解壓:SHELLsudo tar -zxvf hadoop-2.3.0.tar.gz 
移動:SHELLsudo mv hadoop-2.3.0 /home 

配置環境變量:在環境變量加入
hadoopsbin目錄并重載。
Hadoop2.3.0的分布式集群搭建圖文

五。分布式集群搭建

1.增加虛擬系統

1)復制出一定數量的虛擬系統文件

Hadoop2.3.0的分布式集群搭建圖文

2)修改UUID

CMD$ %virtualbox%> VBoxManage internalcommands sethduuid 虛擬系統文件.vmdk 

3)導入系統

依照上文創建虛擬系統,到配置硬盤文件這一步:
Hadoop2.3.0的分布式集群搭建圖文

先打開工作目錄,發現虛擬系統文件夾已經創建,將復制出的系統文件放入:
Hadoop2.3.0的分布式集群搭建圖文

然后使用已有的虛擬硬盤文件:
Hadoop2.3.0的分布式集群搭建圖文

這樣,每個虛擬系統的全部信息都保存在同一個文件夾了。
也可以使用VirtualBox的系統復制功能:
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文

2.集群預設

7 個系統要按照下表一一配置:
主機名  角色   登錄用戶  hostname         hosts      IP      網關  
hapmaster 主控 master hadoop 
(全部7個主機的用戶都是同樣的)
hapmaster 127.0.0.1 localhost
192.168.1.240 hapmaster
192.168.1.241 hapslave1
192.168.1.242 hapslave2
192.168.1.243 hapslave3
192.168.1.244 hapslave4
192.168.1.245 hapslave5
192.168.1.246 hapslave6
192.168.1.240 192.168.1.1
hapslave1 附屬 slave hadoop hapslave1
127.0.0.1 localhost
...
192.168.1.241
192.168.1.1
hapslave2 附屬 slave hadoop hapslave2
127.0.0.1 localhost
...
192.168.1.242
192.168.1.1
hapslave3
附屬 slave hadoop hapslave3
127.0.0.1 localhost
...
192.168.1.243
192.168.1.1
hapslave4 附屬 slave hadoop hapslave4
127.0.0.1 localhost
...
192.168.1.244
192.168.1.1
hapslave5 附屬 slave hadoop hapslave5
127.0.0.1 localhost
...
192.168.1.245
192.168.1.1
hapslave6 附屬 slave hadoop hapslave6
127.0.0.1 localhost
...
192.168.1.246
192.168.1.1


下面就開始對7個系統分別進行配置,本文檔記錄以從屬機hapslave1為例:
首先我們啟動虛擬系統,直接使用root用戶登錄:
Hadoop2.3.0的分布式集群搭建圖文

1)修改用戶名

創建模板系統時我們已經初始化了root用戶,所以,以后在學習環境中完全可以一直使用root用戶。另外,如果你在安裝ubuntu時初始化用戶為“hadoop”,這一步和2)就可以跳過了。

    (1)在root下修改登錄用戶名

SHELLchfn -f 登錄名 原登錄名 
Hadoop2.3.0的分布式集群搭建圖文 

    (2)使用
root修改用戶

SHELLusermod -l 登錄名 -d /home/登錄名 -m 登錄名 
Hadoop2.3.0的分布式集群搭建圖文

2)配置 hostname

如果這一步使用的用戶是非root,在命令前要加sudo 。建議繼續在root下修改。主控機hapmaster也不需要此步驟。

SHELLsudo gedit /etc/hostname 
Hadoop2.3.0的分布式集群搭建圖文

3)配置hosts

無論主控機還是從屬機,現在開始都需要單獨配置。注意每次重啟系統后一定要確認一下。
SHELLsudo gedit /etc/hosts   
Hadoop2.3.0的分布式集群搭建圖文

127.0.0.1 localhost
192.168.1.240 hapmaster
192.168.1.241 hapslave1
192.168.1.242 hapslave2
192.168.1.243 hapslave3
192.168.1.244 hapslave4
192.168.1.245 hapslave5
192.168.1.246 hapslave6

注意:配置hostnamehosts后需重啟系統。可以在4)、5)步驟都結束后最終重啟系統。或者執行:

SHELLsudo /etc/init.d/networking restart

4配置網卡靜態IP

首先查看網卡名稱

SHELLifconfig 
Hadoop2.3.0的分布式集群搭建圖文 

然后配置這個網卡:

SHELLsudo gedit /etc/network/interfaces 
Hadoop2.3.0的分布式集群搭建圖文

auto eth0
iface eth0 inet static
address 192.168.1.24*
gateway 192.168.1.1
netmask 255.255.255.0

這一步,如果只看到一個“lo”,一定要檢查虛擬系統的網絡配置是否開啟。
Hadoop2.3.0的分布式集群搭建圖文

配置interfaces后重啟網卡:

SHELLsudo /etc/init.d/networking restart  
Hadoop2.3.0的分布式集群搭建圖文 

5賦予用戶對hadoop安裝目錄可寫的權限

SHELLsudo chown -hR 用戶 hadoop根目錄 
Hadoop2.3.0的分布式集群搭建圖文 

3.集群的SSH配置

首先,把全部虛擬主機的網絡都配置為橋接,以組成一個局域網。
Hadoop2.3.0的分布式集群搭建圖文
然后逐個啟動系統。都啟動后最好使用ping命令測試是否能夠互相通訊。

在創建模板系統時,已經在hapmaster主機創建了authorized_keys密鑰文件,并且拷貝出的6個從屬系統上也都有這個文件。
現在把7臺主機上面的authorized_keys、id_rsaid_rsa.pub三個文件都刪掉。這三個文件在/home/用戶名/.ssh/目錄里。

下面使用hapmaster主機開始操作:

1)生成新的id_rsa和id_rsa.pub文件

Hadoop2.3.0的分布式集群搭建圖文

2)將hapmasterauthorized_keys文件發給hapslave1主機

注意:遠程用戶要對遠程主機上指定的目錄有足夠權限。

SHELLscp 文件 遠程用戶@遠程主機:目錄  
Hadoop2.3.0的分布式集群搭建圖文

3)為hapslave1新建id_rsa.pub并追加到authorized_keys文件

SHELLcat 源文件 目標文件 
Hadoop2.3.0的分布式集群搭建圖文
如果在執行追加時提示“bash: authorized_keys: 權限不夠”,可以使用chown命令給當前用戶添加操作.ssh目錄的權限。

4)依次將全部主機的空密碼加入到同一個authorized_keys文件

每個主機都獲取了保存有7個主機公鑰的authorized_keys文件后,開始測試SSH登錄。
Hadoop2.3.0的分布式集群搭建圖文

4.Hadoop集群配置

這一步的配置在7臺系統上是相同的。在hadoop2.3.0中,以下配置文件都在%hadoop%/etc/hadoop目錄里。現在以hapslave1系統為例進行配置。

1core-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <!-- 當前集群NameNode的IP地址和端口號。2.0前使用fs.default.name,但后續兼容--> 
        <name>fs.defaultFS</name>
        <value>hdfs://192.168.1.240:9000</value>
    </property>
         <property>
        <!-- 設置臨時文件目錄 --> 
             <name>hadoop.tmp.dir</name>
        <!-- 當前用戶須要對此目錄有讀寫權限。可使用命令sudo chown -hR hadoop /home/hadoop-2.3.0/ --> 
             <value>/home/hadoop-2.3.0/hadoop-temp</value>  
         </property> 
</configuration>

2hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration> <property> <!-- SecondaryNamenode網絡地址 --> <name>dfs.namenode.secondary.http-address</name> <value>192.168.1.240:9001</value> </property> <property> <!-- NameNode工作目錄,須預先存在 --> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop-2.3.0/dfs-name</value> </property> <property> <!-- DataNode工作目錄 --> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop-2.3.0/dfs-data</value> </property> <property> <!-- 文件(副本)的存儲數量 --> <name>dfs.replication</name> <!-- 小于或等于附屬機數量。默認3 --> <value>4</value> </property> <property> <!-- 可以從網頁端監控hdfs --> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration></pre>

3mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration> <property> <!-- map-reduce運行框架 --> <name>mapreduce.framework.name</name>         <!-- yarn:分布式模式 --> <value>yarn</value> </property> </configuration></pre>

4yarn-site.xml

<?xml version="1.0"?>
<configuration>
    <property> 
        <name>Yarn.nodemanager.aux-services</name> 
        <value>mapreduce.shuffle</value> 
    </property> 
</configuration>

5yarn-env.sh

export JAVA_HOME=/home/jdk1.7.0_51

6hadoop-env.sh

export JAVA_HOME=/home/jdk1.7.0_51

7slaves

這里保存的是全部從屬機的主機名。

hapslave1
hapslave2
hapslave3
hapslave4
hapslave5
hapslave6

8)拷貝

SHELLsudo scp -rpv /home/hadoop-2.3.0/etc/hadoop/* 其它主機:/home/hadoop-2.3.0/etc/hadoop/

六。啟動集群

1.格式化HDFS系統

注意:需無任何warningerror

SHELL../bin$ hdfs namenode -format 或 hadoop namenode -format
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文

hadoop@hapmaster:/home/hadoop-2.3.0/bin$ hdfs namenode -format 
14/03/14 13:27:47 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = hapmaster/127.0.0.1
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 2.3.0
STARTUP_MSG:   classpath = /home/hadoop-2.3.0/etc/hadoop:/home/hadoop-2.3.0/share/hadoop/common/lib/jsr305-1.3.9.jar:/home/hadoop-2.3.0/share/hadoop/common/lib/junit-4.8.2.jar:
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common -r 1567123; compiled by 'jenkins' on 2014-02-11T13:40Z
STARTUP_MSG:   java = 1.7.0_51
************************************************************/
14/03/14 13:27:47 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
Formatting using clusterid: CID-82cb09b4-74eb-4053-9b46-8de025de7f74
14/03/14 13:27:50 INFO namenode.FSNamesystem: fsLock is fair:true
14/03/14 13:27:51 INFO namenode.HostFileManager: read includes:
HostSet(
)
14/03/14 13:27:51 INFO namenode.HostFileManager: read excludes:
HostSet(
)
14/03/14 13:27:51 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000
14/03/14 13:27:51 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-check=true
14/03/14 13:27:51 INFO util.GSet: Computing capacity for map BlocksMap
14/03/14 13:27:51 INFO util.GSet: VM type       = 32-bit
14/03/14 13:27:51 INFO util.GSet: 2.0% max memory 966.7 MB = 19.3 MB
14/03/14 13:27:51 INFO util.GSet: capacity      = 2^22 = 4194304 entries
14/03/14 13:27:51 INFO blockmanagement.BlockManager: dfs.block.access.token.enable=false
14/03/14 13:27:51 INFO blockmanagement.BlockManager: defaultReplication         = 4
14/03/14 13:27:51 INFO blockmanagement.BlockManager: maxReplication             = 512
14/03/14 13:27:51 INFO blockmanagement.BlockManager: minReplication             = 1
14/03/14 13:27:51 INFO blockmanagement.BlockManager: maxReplicationStreams      = 2
14/03/14 13:27:51 INFO blockmanagement.BlockManager: shouldCheckForEnoughRacks  = false
14/03/14 13:27:51 INFO blockmanagement.BlockManager: replicationRecheckInterval = 3000
14/03/14 13:27:51 INFO blockmanagement.BlockManager: encryptDataTransfer        = false
14/03/14 13:27:51 INFO blockmanagement.BlockManager: maxNumBlocksToLog          = 1000
14/03/14 13:27:51 INFO namenode.FSNamesystem: fsOwner             = hadoop (auth:SIMPLE)
14/03/14 13:27:51 INFO namenode.FSNamesystem: supergroup          = supergroup
14/03/14 13:27:51 INFO namenode.FSNamesystem: isPermissionEnabled = true
14/03/14 13:27:51 INFO namenode.FSNamesystem: HA Enabled: false
14/03/14 13:27:51 INFO namenode.FSNamesystem: Append Enabled: true
14/03/14 13:27:52 INFO util.GSet: Computing capacity for map INodeMap
14/03/14 13:27:52 INFO util.GSet: VM type       = 32-bit
14/03/14 13:27:52 INFO util.GSet: 1.0% max memory 966.7 MB = 9.7 MB
14/03/14 13:27:52 INFO util.GSet: capacity      = 2^21 = 2097152 entries
14/03/14 13:27:52 INFO namenode.NameNode: Caching file names occuring more than 10 times
14/03/14 13:27:52 INFO util.GSet: Computing capacity for map cachedBlocks
14/03/14 13:27:52 INFO util.GSet: VM type       = 32-bit
14/03/14 13:27:52 INFO util.GSet: 0.25% max memory 966.7 MB = 2.4 MB
14/03/14 13:27:52 INFO util.GSet: capacity      = 2^19 = 524288 entries
14/03/14 13:27:52 INFO namenode.FSNamesystem: dfs.namenode.safemode.threshold-pct = 0.9990000128746033
14/03/14 13:27:52 INFO namenode.FSNamesystem: dfs.namenode.safemode.min.datanodes = 0
14/03/14 13:27:52 INFO namenode.FSNamesystem: dfs.namenode.safemode.extension     = 30000
14/03/14 13:27:52 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
14/03/14 13:27:52 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
14/03/14 13:27:52 INFO util.GSet: Computing capacity for map Namenode Retry Cache
14/03/14 13:27:52 INFO util.GSet: VM type       = 32-bit
14/03/14 13:27:52 INFO util.GSet: 0.029999999329447746% max memory 966.7 MB = 297.0 KB
14/03/14 13:27:52 INFO util.GSet: capacity      = 2^16 = 65536 entries
14/03/14 13:27:52 INFO common.Storage: Storage directory /home/hadoop-2.3.0/dfs-name has been successfully formatted.
14/03/14 13:27:52 INFO namenode.FSImage: Saving image file /home/hadoop-2.3.0/dfs-name/current/fsimage.ckpt_0000000000000000000 using no compression
14/03/14 13:27:52 INFO namenode.FSImage: Image file /home/hadoop-2.3.0/dfs-name/current/fsimage.ckpt_0000000000000000000 of size 218 bytes saved in 0 seconds.
14/03/14 13:27:52 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
14/03/14 13:27:52 INFO util.ExitUtil: Exiting with status 0
14/03/14 13:27:52 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at hapmaster/127.0.0.1
************************************************************/
hadoop@hapmaster:/home/hadoop-2.3.0/bin$

2.啟動集群

SHELL.../sbin$ start-all.sh 
Hadoop2.3.0的分布式集群搭建圖文
Hadoop2.3.0的分布式集群搭建圖文

3.監控集群資源

1)命令行

SHELLhdfs dfsadmin -report
Hadoop2.3.0的分布式集群搭建圖文

2)網頁

http://localhost:50070 

Hadoop2.3.0的分布式集群搭建圖文
- end

來自:http://my.oschina.net/vigiles/blog/208430

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!