Hadoop上路-01_Hadoop2.3.0的分布式集群搭建


一。配置虛擬機軟件

下載地址:https://www.virtualbox.org/wiki/downloads 

 

 

1.虛擬機軟件設定

1)進入全集設定

 

 

2)常規設定

 

 

2.Linux安裝配置

1)名稱類型

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

 

 

2)內存

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

 

 

3)磁盤選擇

 

 

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 

 

 

5)磁盤空間

根據個人物理機配置,固定大小運行更快。

 

 

6)磁盤位置

 

 

7)數據傳輸

共享粘貼板和鼠標拖放的實現還需要系統安裝結束后安裝增強功能。

 

 

8)軟驅

去除勾選。

 

 

9Linux鏡像

 

 

10)網絡

去除勾選,安裝過程中禁用網絡。

 

 

二。安裝模板Linux

1.一般安裝過程

 

 

 

 

 

 

 

2.初始化用戶

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

 

 

 

 

三。配置Linux

1.在桌面顯示終端

便於使用命令行。

 

 

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

 

 

注意類型為“位置”。

 

 

3.安裝增強功能

實現和物理機的粘貼板共享、鼠標拖放。

 

 

 

 

 

 

 

 

現在有很多視圖模式可以使用:

 

 

4.初始化root用戶

 

 

當前用戶涉及集群配置的幾個重要信息:

 

 

5.關閉防火牆

為了避免不必要的麻煩,在學習中建議關閉防火牆,這一步如果有修改,需重啟系統:

 

 

四。准備資源

 威格靈博客:www.cuiweiyou.com

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/  

 

 

 

1.安裝SSH

1openssh-client

SHELL$ sudo dpkg -i openssh-client_5.3p1-3ubuntu3_i386.deb

 

 

2openssh-server

SHELL$ sudo dpkg -i openssh-server_5.3p1-3ubuntu3_i386.deb

 

 

3ssh-all

SHELL$ sudo dpkg -i sudo dpkg -i ssh_5.3p1-3ubuntu3_all.deb 

 

 

4ssh-keygen

在我們的學習環境中沒有必要使用密碼,所以創建密鑰時留空,直接回車。

當然從這一步到6)可以先放棄,因為后續我們還需要單獨在每台主機上操作。

SHELL$ ssh-keygen 

 

 

5authorized_keys

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

SHELL$ sudo cat id_rsa.pub > authorized_keys 
SHELL$ sudo cat id_rsa.pub >> authorized_keys 
SHELL$ sudo cp id_rsa.pub authorized_keys 

 

 

6ssh localhost

登錄測試,初次登錄會讓用戶確認:

 

 

2.安裝JDK

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

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

 

1)環境變量

SHELL$ sudo gedit /etc/profile 

 

 

2)重載環境變量,測試

 

 

3.安裝Hadoop

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

解壓:SHELL$ sudo tar -zxvf hadoop-2.3.0.tar.gz 
移動:SHELL$ sudo mv hadoop-2.3.0 /home 

 

配置環境變量:在環境變量加入hadoopsbin目錄並重載。

 

 

五。分布式集群搭建

1.增加虛擬系統

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

 

 

2)修改UUID

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

 

3)導入系統

依照上文創建虛擬系統,到配置硬盤文件這一步:

 

 

先打開工作目錄,發現虛擬系統文件夾已經創建,將復制出的系統文件放入:

 

 

然后使用已有的虛擬硬盤文件:

 

 

這樣,每個虛擬系統的全部信息都保存在同一個文件夾了。

也可以使用VirtualBox的系統復制功能:

 

 

 

 

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

威格靈博客:www.cuiweiyou.com

下面就開始對7個系統分別進行配置,本文檔記錄以從屬機hapslave1為例:

首先我們啟動虛擬系統,直接使用root用戶登錄:

 

 

1)修改用戶名

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

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

SHELL$ chfn -f 新登錄名 原登錄名 

 

 

(2)使用root修改用戶

SHELL$ usermod -l 新登錄名 -d /home/新登錄名 -m 原登錄名 

 

 

2)配置hostname

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

SHELL$ sudo gedit /etc/hostname 

 

 

3)配置hosts

無論主控機還是從屬機,現在開始都需要單獨配置。注意每次重啟系統后一定要確認一下。

SHELL$ sudo gedit /etc/hosts   

 

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)步驟都結束后最終重啟系統。或者執行:

SHELL$ sudo /etc/init.d/networking restart

 

4配置網卡靜態IP

首先查看網卡名稱

SHELL$ ifconfig 

 

 

然后配置這個網卡:

SHELL$ sudo gedit /etc/network/interfaces 

 

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

 

這一步,如果只看到一個“lo”,一定要檢查虛擬系統的網絡配置是否開啟。

 

 

配置interfaces后重啟網卡:

SHELL$ sudo /etc/init.d/networking restart  

 

 

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

SHELL$ sudo chown -hR 用戶 hadoop根目錄 

 

 

3.集群的SSH配置

首先,把全部虛擬主機的網絡都配置為橋接,以組成一個局域網。

 

然后逐個啟動系統。都啟動后最好使用ping命令測試是否能夠互相通訊。

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

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

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

 

2)將hapmasterauthorized_keys文件發給hapslave1主機

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

SHELL$ scp 文件 遠程用戶@遠程主機:目錄  

 

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

SHELL$ cat 源文件 目標文件 

 

如果在執行追加時提示“bash: authorized_keys: 權限不夠”,可以使用chown命令給當前用戶添加操作.ssh目錄的權限。

 

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

每個主機都獲取了保存有7個主機公鑰的authorized_keys文件后,開始測試SSH登錄。

 

 

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>
         <!-- 設置臨時文件目錄。威格靈博客:www.cuiweiyou.com --> 
       <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>

 

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>

 

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)拷貝

SHELL$ sudo 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

 

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 

 

3.監控集群資源

1)命令行

SHELL$ hdfs dfsadmin -report

 

2)網頁

http://localhost:50070 

 

 

- end

威格靈博客:www.cuiweiyou.com


免責聲明!

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



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