Hadoop上路_14-Hadoop2.3.0的分佈式集羣搭建

一。配置虛擬機軟件

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

1.虛擬機軟件設定

1)進入全集設定

2)常規設定

2.Linux安裝配置

1)名稱類型

名稱最後具備說明意義。版本根據我的狀況。 java

2)內存

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

 

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 
 
linux

5)磁盤空間

根據我的物理機配置,固定大小運行更快。
web

6)磁盤位置

7)數據傳輸

共享粘貼板和鼠標拖放的實現還須要系統安裝結束後安裝加強功能。
shell

8)軟驅

去除勾選。
apache

9Linux鏡像

10)網絡

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

二。安裝模板Linux

1.通常安裝過程






2.初始化用戶

注意:不要使用「自動登陸」。在下使用的是Ubuntu10.10,曾經這一步選擇自動登陸,給後續工做形成了很大麻煩。此時的用戶名最好是一個通用的名稱,由於後續會涉及SSH登陸。


bash

三。配置Linux

1.在桌面顯示終端

便於使用命令行。
網絡

2.在桌面顯示「個人電腦」



注意類型爲「位置」。

3.安裝加強功能

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








如今有不少視圖模式可使用:

4.初始化root用戶



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

5.關閉防火牆

爲了不沒必要要的麻煩,在學習中建議關閉防火牆,這一步若是有修改,需重啓系統:

四。準備資源

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

SHELLsudo dpkg -i openssh-server_5.3p1-3ubuntu3_i386.deb

3ssh-all

SHELLsudo dpkg -i sudo dpkg -i ssh_5.3p1-3ubuntu3_all.deb 

4ssh-keygen

在咱們的學習環境中沒有必要使用密碼,因此建立密鑰時留空,直接回車。
固然從這一步到6)能夠先放棄,由於後續咱們還須要單獨在每臺主機上操做。

SHELLssh-keygen 

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 

6ssh localhost

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

2.安裝JDK

由於在下的jdkgz格式,因此首先須要解壓。解壓後移動到合適的目錄,注意不要用當前用戶的工做目錄,這是爲了簡化後續工做。

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

1)環境變量

SHELLsudo gedit /etc/profile 

2)重載環境變量,測試

SHELLsudo source /etc/profile 

3.安裝Hadoop

一樣,爲了簡化後續工做解壓後移動到合適的目錄。

解壓:SHELLsudo tar -zxvf hadoop-2.3.0.tar.gz 
移動:SHELLsudo 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


下面就開始對7個系統分別進行配置,本文檔記錄以從屬機hapslave1爲例:
首先咱們啓動虛擬系統,直接使用root用戶登陸:

1)修改用戶名

建立模板系統時咱們已經初始化了root用戶,因此,之後在學習環境中徹底能夠一直使用root用戶。另外,若是你在安裝ubuntu時初始化用戶爲「hadoop」,這一步和2)就能夠跳過了。

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

SHELLchfn -f 登陸名 原登陸名 
 

    (2)使用
root修改用戶

SHELLusermod -l 登陸名 -d /home/登陸名 -m 登陸名 

2)配置 hostname

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

SHELLsudo gedit /etc/hostname 

3)配置hosts

不管主控機仍是從屬機,如今開始都須要單獨配置。注意每次重啓系統後必定要確認一下。
SHELLsudo 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)步驟都結束後最終重啓系統。或者執行:

SHELLsudo /etc/init.d/networking restart

4配置網卡靜態IP

首先查看網卡名稱

SHELLifconfig 
 

而後配置這個網卡:

SHELLsudo 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後重啓網卡:

SHELLsudo /etc/init.d/networking restart  
 

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

SHELLsudo 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主機

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

SHELLscp 文件 遠程用戶@遠程主機:目錄  

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

SHELLcat 源文件 目標文件 

若是在執行追加時提示「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>
        <!-- 設置臨時文件目錄 --> 
       <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)拷貝

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

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)命令行

SHELLhdfs dfsadmin -report

2)網頁

http://localhost:50070 



- end 歡迎加入Hadoop技術交流及就業指導羣:199362441

相關文章
相關標籤/搜索