下載地址:https://www.virtualbox.org/wiki/downloads
html
名稱最後具備說明意義。版本根據我的狀況。 java
在下物理機系統Win7x64,處理器i53210,內存8G。 node
virtualbox格式vdi,VMWare格式vmdk,微軟格式vhd(virtualbox不支持),Parallels格式hdd(virtualbox不支持)。
vdi轉vmdk:VBoxManage.exe clonehd 原鏡像.vmdk 目標鏡像.vdi --format VDI
vdi轉vhd :VBoxManage.exe clonehd 原鏡像.vdi 目標鏡像.vmdk --format VMDK
vmdk轉vhd:VBoxManage.exe clonehd 原鏡像.vdi 目標鏡像.vhd --format VHD
linux
根據我的物理機配置,固定大小運行更快。
web
共享粘貼板和鼠標拖放的實現還須要系統安裝結束後安裝加強功能。
shell
去除勾選。
apache
去除勾選,安裝過程當中禁用網絡。
ubuntu
注意:不要使用「自動登陸」。在下使用的是Ubuntu10.10,曾經這一步選擇自動登陸,給後續工做形成了很大麻煩。此時的用戶名最好是一個通用的名稱,由於後續會涉及SSH登陸。
bash
便於使用命令行。
網絡
注意類型爲「位置」。
實現和物理機的粘貼板共享、鼠標拖放。
如今有不少視圖模式可使用:
當前用戶涉及集羣配置的幾個重要信息:
爲了不沒必要要的麻煩,在學習中建議關閉防火牆,這一步若是有修改,需重啓系統:
OpenSSH:http://archive.ubuntu.com/ubuntu/pool/main/o/openssh/
http://mirrors.oschina.net/ubuntu/pool/main/o/openssh/
這裏不要下載太新的版本,覺得你的Linux可能缺乏其依賴。
JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
Hadoop:http://www.apache.org/dyn/closer.cgi/hadoop/common/
SHELL$ sudo dpkg -i openssh-client_5.3p1-3ubuntu3_i386.deb
SHELL$ sudo dpkg -i openssh-server_5.3p1-3ubuntu3_i386.deb
SHELL$ sudo dpkg -i sudo dpkg -i ssh_5.3p1-3ubuntu3_all.deb
在咱們的學習環境中沒有必要使用密碼,因此建立密鑰時留空,直接回車。
固然從這一步到6)能夠先放棄,由於後續咱們還須要單獨在每臺主機上操做。
SHELL$ ssh-keygen
建立自動密碼驗證文件。若是使用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
登陸測試,初次登陸會讓用戶確認:
由於在下的jdk是gz格式,因此首先須要解壓。解壓後移動到合適的目錄,注意不要用當前用戶的工做目錄,這是爲了簡化後續工做。
解壓:SHELL$ sudo tar -zxvf jdk-7u51-linux-i586.gz
移動:SHELL$ sudo mv jdk1.7.0_51 /home
SHELL$ sudo gedit /etc/profile
SHELL$ sudo source /etc/profile
一樣,爲了簡化後續工做解壓後移動到合適的目錄。
解壓:SHELL$ sudo tar -zxvf hadoop-2.3.0.tar.gz
移動:SHELL$ sudo mv hadoop-2.3.0 /home
配置環境變量:在環境變量加入hadoop的sbin目錄並重載。
%virtualbox% CMD> VBoxManage internalcommands sethduuid 虛擬系統文件.vmdk
依照上文建立虛擬系統,到配置硬盤文件這一步:
先打開工做目錄,發現虛擬系統文件夾已經建立,將複製出的系統文件放入:
而後使用已有的虛擬硬盤文件:
這樣,每一個虛擬系統的所有信息都保存在同一個文件夾了。
也可使用VirtualBox的系統複製功能:
主機名 | 角色 | 登陸用戶 | 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用戶登陸:
建立模板系統時咱們已經初始化了root用戶,因此,之後在學習環境中徹底能夠一直使用root用戶。另外,若是你在安裝ubuntu時初始化用戶爲「hadoop」,這一步和2)就能夠跳過了。
(1)在root下修改登陸用戶名
SHELL$ chfn -f 新登陸名 原登陸名
(2)使用root修改用戶
SHELL$ usermod -l 新登陸名 -d /home/新登陸名 -m 原登陸名
若是這一步使用的用戶是非root,在命令前要加sudo 。建議繼續在root下修改。主控機hapmaster也不須要此步驟。
SHELL$ sudo gedit /etc/hostname
不管主控機仍是從屬機,如今開始都須要單獨配置。注意每次重啓系統後必定要確認一下。
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
注意:配置hostname和hosts後需重啓系統。能夠在4)、5)步驟都結束後最終重啓系統。或者執行:
SHELL$ sudo /etc/init.d/networking restart
首先查看網卡名稱
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
SHELL$ sudo chown -hR 用戶 hadoop根目錄
首先,把所有虛擬主機的網絡都配置爲橋接,以組成一個局域網。
而後逐個啓動系統。都啓動後最好使用ping命令測試是否可以互相通信。
在建立模板系統時,已經在hapmaster主機建立了authorized_keys密鑰文件,而且拷貝出的6個從屬系統上也都有這個文件。
如今把7臺主機上面的authorized_keys、id_rsa、id_rsa.pub三個文件都刪掉。這三個文件在/home/用戶名/.ssh/目錄裏。
下面使用hapmaster主機開始操做:
注意:遠程用戶要對遠程主機上指定的目錄有足夠權限。
SHELL$ scp 文件 遠程用戶@遠程主機:目錄
SHELL$ cat 源文件 目標文件
若是在執行追加時提示「bash: authorized_keys: 權限不夠」,可使用chown命令給當前用戶添加操做.ssh目錄的權限。
每一個主機都獲取了保存有7個主機公鑰的authorized_keys文件後,開始測試SSH登陸。
這一步的配置在7臺系統上是相同的。在hadoop2.3.0中,如下配置文件都在%hadoop%/etc/hadoop目錄裏。如今以hapslave1系統爲例進行配置。
<?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>
<?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>
<?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>
<?xml version="1.0"?> <configuration> <property> <name>Yarn.nodemanager.aux-services</name> <value>mapreduce.shuffle</value> </property> </configuration>
export JAVA_HOME=/home/jdk1.7.0_51
export JAVA_HOME=/home/jdk1.7.0_51
這裏保存的是所有從屬機的主機名。
hapslave1 hapslave2 hapslave3 hapslave4 hapslave5 hapslave6
SHELL$ sudo scp -rpv /home/hadoop-2.3.0/etc/hadoop/* 其它主機:/home/hadoop-2.3.0/etc/hadoop/
注意:需無任何warning或error。
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$
SHELL.../sbin$ start-all.sh
SHELL$ hdfs dfsadmin -report
- end 歡迎加入Hadoop技術交流及就業指導羣:199362441