Hadoop系列一:Hadoop集群分布式部署
1、環(huán)境準備
VirtualBox虛擬機上分布部署三套Ubuntu15.10操作系統(tǒng)(Linux 64位),命名為Ubuntu_Hadoop(用戶名hp)、Ubuntu_C(用戶名c)、Ubuntu_PHP(用戶名php),并建立通信。
Ubuntu虛擬機之間通信建立:
1)三套Ubuntu虛擬機在Virtual Box的網(wǎng)絡(luò)設(shè)置為內(nèi)部(Internal)模式;
2)Ubuntu_Hadoop虛擬機IPV4設(shè)置為:
?? 地址:192.168.0.100
?? 掩碼:255.255.255.0
?? 網(wǎng)關(guān):192.168.0.1
Ubuntu_C虛擬機IPV4設(shè)置為:
?? 地址:192.168.0.101
?? 掩碼:255.255.255.0
?? 網(wǎng)關(guān):192.168.0.1
Ubuntu_PHP虛擬機IPV4設(shè)置為:
?? 地址:192.168.0.102
?? 掩碼:255.255.255.0
網(wǎng)關(guān):192.168.0.1
Virtual Box網(wǎng)絡(luò)配置參考:https://www.douban.com/group/topic/15558388/
Ubuntu_Hadoop(主機名為hp_VirualBox)虛擬機為Master節(jié)點,Ubuntu_C(主機名為c_VirualBox)和Ubuntu_PHP(主機名為php_VirualBox)作為Slave節(jié)點。Master機器主要配置NameNode和JobTracker的角色,負責(zé)總管分布式數(shù)據(jù)和分解任務(wù)的執(zhí)行;2個Salve機器配置DataNode和TaskTracker的角色,負責(zé)分布式數(shù)據(jù)存儲以及任務(wù)的執(zhí)行。
3)統(tǒng)一用戶設(shè)置
Ubuntu_C和Ubuntu_PHP新建用戶名hp并賦予root權(quán)限,和Ubuntu_Hadoop一致,用戶SSH認證。
$sudo adduserhp
$sudo gedit/etc/sudoers?? 修改hpALL=(ALL) ALL
4)網(wǎng)絡(luò)配置:
設(shè)置主機名:$sudogedit /etc/hostname
Ubuntu_Hadoop虛擬機主機名為master
Ubuntu_C虛擬機主機名為slave1
Ubuntu_PHP虛擬機主機名為slave2
設(shè)置三機器的hosts:$sudo gedit /etc/hosts
刪除hosts文件內(nèi)容,同樣追加如下內(nèi)容:
192.168.0.100master
192.168.0.101slave1
192.168.0.102slave2
設(shè)置三機器networks:$sudo gedit /etc /network
每臺機器按照各自網(wǎng)絡(luò)地址和主機名修改紅色部分內(nèi)容
2、JDK安裝
官網(wǎng)下載并解壓,Master和Slave節(jié)點都安裝home/hp路徑下。
路徑配置見:http://blog.csdn.net/fjssharpsword/article/details/50352231
3、SSH安裝和配置
1)SSH安裝
Hadoop控制腳本(并非守護進程)依賴SSH來執(zhí)行針對整個集群的操作。例如,某個腳本能夠終止并重啟集群中的所有守護進程。
Master和Slave節(jié)點都安裝:
$apt-getinstall ssh 安裝SSH協(xié)議;
$apt-getinstall rsync (rsync是一個遠程數(shù)據(jù)同步工具,可通過LAN/WAN快速同步多臺主機間的文件);
2)SSH無密碼驗證配置:
為支持無縫式工作,SSH允許用戶無需鍵入密碼即可登錄集群內(nèi)及其,創(chuàng)建一個公鑰/私鑰對,整個集群共享。SSH無密碼原理是:?Master(NameNode | JobTracker)作為客戶端,生成一個密鑰對,包括一個公鑰和一個私鑰,而后將公鑰復(fù)制到所有的Slave上,Master客戶端通過無密碼公鑰認證連接到服務(wù)器Salve(DataNode | Tasktracker)。
當(dāng)Master通過 SSH連接Salve時,Salve就會生成一個隨機數(shù)并用Master的公鑰對隨機數(shù)進行加密,并發(fā)送給Master,Maste收到加密數(shù)之后再用私鑰解密,并將解密數(shù)回傳給Slave,Slave確認解密數(shù)無誤之后就允許Master連接。
?? Master節(jié)點生成無密碼密鑰對:
$ssh-keygen –t rsa –f/home/hp/.ssh/id_rsa
命令執(zhí)行后/home/hp/.ssh/路徑下生成密鑰對:私鑰id_rsa和公鑰id_rsa.pub。
/home/hp/命令下執(zhí)行
$ls–a | grep.ssh? 查看生成.ssh文件夾
$cd .ssh 進入文件夾
$ls 可以看到生成的密文件。
?? 復(fù)制公鑰到兩臺Slave機器
如果hp用戶的home目錄是在NFS系統(tǒng)中,通過Master節(jié)點把公鑰id_rsa.pub追加到授權(quán)key中,使整個集群內(nèi)共享密鑰。
$cat/home/hp/.ssh/id_rsa.pub>>/home/hp/.ssh/authorized_keys
驗證是否成功:ssh localhost
如果home目錄并沒有通過NFS共享,則采用其他方法共享公鑰,如ssh-copy-id、scp等命令,本環(huán)境沒有掛載NFS文件系統(tǒng)功能,通過以下復(fù)制公鑰到Slave機器。
?Master節(jié)點執(zhí)行:
$ssh-copy-idhp@192.168.0.102 復(fù)制到Slave機器Ubuntu_PHP
測試:$ssh hp@192.168.0.102
#ssh-copy-idhp@192.168.0.101 復(fù)制到Slave機器Ubuntu_C
測試:$ssh hp@192.168.0.101
4、HDFS集群部署
Hadoop集群分成兩大類角色:Master和Salve。一個HDFS集群是由一個NameNode和若干個DataNode組成的。其中NameNode作為主服務(wù)器,管理文件系統(tǒng)的命名空間和客戶端對文件系統(tǒng)的訪問操作;集群中的DataNode管理存儲的數(shù)據(jù)。MapReduce框架是由一個單獨運行在主節(jié)點上的JobTracker和運行在每個集群從節(jié)點的TaskTracker共同組成的。主節(jié)點負責(zé)調(diào)度構(gòu)成一個作業(yè)的所有任務(wù),這些任務(wù)分布在不同的從節(jié)點上。主節(jié)點監(jiān)控它們的執(zhí)行情況,并且重新執(zhí)行之前的失敗任務(wù);從節(jié)點僅負責(zé)由主節(jié)點指派的任務(wù)。當(dāng)一個Job被提交時,JobTracker接收到提交作業(yè)和配置信息之后,就會將配置信息等分發(fā)給從節(jié)點,同時調(diào)度任務(wù)并監(jiān)控TaskTracker的執(zhí)行。
1)Master服務(wù)器安裝
官網(wǎng)下載hadoop-2.7.1.tar.gz包。
$cd /home/hp
$tar xzf hadoop-2.7.1.tar.gz
$sudo chown–Rhp:hphadoop?? 解壓出的文件夾hadoop擁有者改為hp用戶和組。
2)Master服務(wù)器配置
?? core-site.xml和hdfs-site.xml是站在 HDFS角度上配置文件,其中core-site.xml配置的是HDFS的地址和端口號。yarn-site.xml和mapred-site.xml是站在MapReduce角度上配置文件,其中mapred-site.xml配置的是JobTracker的地址和端口。
1)創(chuàng)建數(shù)據(jù)存放的文件夾,tmp、hdfs、hdfs/data、hdfs/name
$mkdirtmp
$mkdirhdfs
$mkdirhdfs/data
$mkdirhdfs/name
2)配置/home/hp/hadoop/etc/hadoop/core-site.xm
$gedit etc/hadoop/core-site.xml
<configuration>
<property>
?? ? ? <name>fs.defaultFS</name>
?? ? ? <value>hdfs://192.168.0.100:9000</value>
?? </property>
?? <property>
?? ? ? <name>hadoop.tmp.dir</name>
? ?? ? <value>/home/hp/hadoop/tmp</value>
?? </property>
?? <property>
?? ? ? <name>io.file.buffer.size</name>
?? ? ? <value>131072</value>
</property>
</configuration>
3)配置/home/hp/hadoop/etc/hadoop/hdfs-site.xm;
$gedit etc/hadoop/hdfs-site.xml
<configuration>
<property>
?? ? ? <name>dfs.namenode.name.dir</name>
?? ? ? <value>/home/hp/hadoop/dfs/name</value>
</property>
<property>
?? ? ? <name>dfs.datanode.data.dir</name>
?? ? ? <value>/home/hp/hadoop/dfs/data</value>
?? </property>
<property>
?? ? ? <name>dfs.replication</name>
?? ? ? <value>2</value>
</property>
<property>
?? ? ?<name>dfs.namenode.secondary.http-address</name>
?? ? ? <value>192.168.0.100:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
4)配置/home/hp/hadoop/etc/hadoop/mapred-site.xm;
$geditetc/hadoop/mapred-site.xml
<configuration>
<property>
?? ? ? <name>mapreduce.framework.name</name>
?? ? ? <value>yarn</value>
?? </property>
?? <property>
?? ? ? <name>mapreduce.jobhistory.address</name>
?? ? ? <value>192.168.0.100:10020</value>
?? </property>
?? <property>
?? ? ?<name>mapreduce.jobhistory.webapp.address</name>
?? ? ? <value>192.168.0.100:19888</value>
?? </property>
</configuration>
5)配置/home/hp/hadoop/etc/hadoop/yarn-site.xm;
$geditetc/hadoop/yarn-site.xml
<configuration>
<property>
?? ? ? <name>yarn.nodemanager.aux-services</name>
?? ? ? <value>mapreduce_shuffle</value>
?? </property>
?? <property>
?? ? ? <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
?? ? ?<value>org.apache.hadoop.mapred.ShuffleHandler</value>
?? </property>
?? <property>
?? ? ? <name>yarn.resourcemanager.address</name>
?? ? ? <value>192.168.0.100:8032</value>
?? </property>
?? <property>
?? ? ?<name>yarn.resourcemanager.scheduler.address</name>
?? ? ? <value>192.168.0.100:8030</value>
?? </property>
?? <property>
?? ? ?<name>yarn.resourcemanager.resource-tracker.address</name>
?? ? ? <value>192.168.0.100:8031</value>
?? </property>
?? <property>
?? ? ?<name>yarn.resourcemanager.admin.address</name>
?? ? ? <value>192.168.0.100:8033</value>
?? </property>
?? <property>
?? ? ?<name>yarn.resourcemanager.webapp.address</name>
?? ? ? <value>192.168.0.100:8088</value>
?? </property>
?? <property>
?? ? ?<name>yarn.nodemanager.resource.memory-mb</name>
?? ? ? <value>768</value>
?? </property>
</configuration>
6)配置/home/hp/hadoop/etc/hadoop/下hadoop-env.sh和yarn-env.sh的JAVA_HOME路徑
exportJAVA_HOME=/home/hp/jdk
7)配置/home/hp/hadoop/etc/hadoop/下slaves文件
slaves文件中加入192.168.0.101/192.168.0.102
8)Slave服務(wù)器Ubuntu_PHP和Ubuntu_C配置
將hadoop本地文件拷貝到兩臺Slave機器:
$ scp –r /home/hp/hadoophp@192.168.0.101:/home/hp
$ scp –r /home/hp/hadoophp@192.168.0.102:/home/hp
兩臺Slave機器如果JDK路徑不一致,則要修改hadoop-env.sh和yarn-env.sh的Java路徑,并授權(quán)JDK文件夾權(quán)限給hp用戶。
$sudo chmod –R777 /home/c/jdk??? Ubuntu_C機器的JDK路徑
$sudo chmod –R777 /home/php/jdk??? Ubuntu_php機器的JDK路徑
9)Master服務(wù)器進入Hadoop目錄下執(zhí)行$ bin/hdfs namenode –format 初始化
啟動在sbin目錄下執(zhí)行$sbin/start-all.sh
可以使用jps查看信息
停止執(zhí)行$sbin/stop-all.sh
5、總結(jié)上,主要是JDK、SSH、Hadoop配置三步,先在Master都部署好,整個操作系統(tǒng)直接復(fù)制Slave最佳。
總結(jié)
以上是生活随笔為你收集整理的Hadoop系列一:Hadoop集群分布式部署的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初试Android基于Vuforia开发
- 下一篇: Hadoop系列二:Hadoop单节点伪