Hadoop系列一:Hadoop集群分布式部署
1、環境準備
VirtualBox虛擬機上分布部署三套Ubuntu15.10操作系統(Linux 64位),命名為Ubuntu_Hadoop(用戶名hp)、Ubuntu_C(用戶名c)、Ubuntu_PHP(用戶名php),并建立通信。
Ubuntu虛擬機之間通信建立:
1)三套Ubuntu虛擬機在Virtual Box的網絡設置為內部(Internal)模式;
2)Ubuntu_Hadoop虛擬機IPV4設置為:
?? 地址:192.168.0.100
?? 掩碼:255.255.255.0
?? 網關:192.168.0.1
Ubuntu_C虛擬機IPV4設置為:
?? 地址:192.168.0.101
?? 掩碼:255.255.255.0
?? 網關:192.168.0.1
Ubuntu_PHP虛擬機IPV4設置為:
?? 地址:192.168.0.102
?? 掩碼:255.255.255.0
網關:192.168.0.1
Virtual Box網絡配置參考:https://www.douban.com/group/topic/15558388/
Ubuntu_Hadoop(主機名為hp_VirualBox)虛擬機為Master節點,Ubuntu_C(主機名為c_VirualBox)和Ubuntu_PHP(主機名為php_VirualBox)作為Slave節點。Master機器主要配置NameNode和JobTracker的角色,負責總管分布式數據和分解任務的執行;2個Salve機器配置DataNode和TaskTracker的角色,負責分布式數據存儲以及任務的執行。
3)統一用戶設置
Ubuntu_C和Ubuntu_PHP新建用戶名hp并賦予root權限,和Ubuntu_Hadoop一致,用戶SSH認證。
$sudo adduserhp
$sudo gedit/etc/sudoers?? 修改hpALL=(ALL) ALL
4)網絡配置:
設置主機名:$sudogedit /etc/hostname
Ubuntu_Hadoop虛擬機主機名為master
Ubuntu_C虛擬機主機名為slave1
Ubuntu_PHP虛擬機主機名為slave2
設置三機器的hosts:$sudo gedit /etc/hosts
刪除hosts文件內容,同樣追加如下內容:
192.168.0.100master
192.168.0.101slave1
192.168.0.102slave2
設置三機器networks:$sudo gedit /etc /network
每臺機器按照各自網絡地址和主機名修改紅色部分內容
2、JDK安裝
官網下載并解壓,Master和Slave節點都安裝home/hp路徑下。
路徑配置見:http://blog.csdn.net/fjssharpsword/article/details/50352231
3、SSH安裝和配置
1)SSH安裝
Hadoop控制腳本(并非守護進程)依賴SSH來執行針對整個集群的操作。例如,某個腳本能夠終止并重啟集群中的所有守護進程。
Master和Slave節點都安裝:
$apt-getinstall ssh 安裝SSH協議;
$apt-getinstall rsync (rsync是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件);
2)SSH無密碼驗證配置:
為支持無縫式工作,SSH允許用戶無需鍵入密碼即可登錄集群內及其,創建一個公鑰/私鑰對,整個集群共享。SSH無密碼原理是:?Master(NameNode | JobTracker)作為客戶端,生成一個密鑰對,包括一個公鑰和一個私鑰,而后將公鑰復制到所有的Slave上,Master客戶端通過無密碼公鑰認證連接到服務器Salve(DataNode | Tasktracker)。
當Master通過 SSH連接Salve時,Salve就會生成一個隨機數并用Master的公鑰對隨機數進行加密,并發送給Master,Maste收到加密數之后再用私鑰解密,并將解密數回傳給Slave,Slave確認解密數無誤之后就允許Master連接。
?? Master節點生成無密碼密鑰對:
$ssh-keygen –t rsa –f/home/hp/.ssh/id_rsa
命令執行后/home/hp/.ssh/路徑下生成密鑰對:私鑰id_rsa和公鑰id_rsa.pub。
/home/hp/命令下執行
$ls–a | grep.ssh? 查看生成.ssh文件夾
$cd .ssh 進入文件夾
$ls 可以看到生成的密文件。
?? 復制公鑰到兩臺Slave機器
如果hp用戶的home目錄是在NFS系統中,通過Master節點把公鑰id_rsa.pub追加到授權key中,使整個集群內共享密鑰。
$cat/home/hp/.ssh/id_rsa.pub>>/home/hp/.ssh/authorized_keys
驗證是否成功:ssh localhost
如果home目錄并沒有通過NFS共享,則采用其他方法共享公鑰,如ssh-copy-id、scp等命令,本環境沒有掛載NFS文件系統功能,通過以下復制公鑰到Slave機器。
?Master節點執行:
$ssh-copy-idhp@192.168.0.102 復制到Slave機器Ubuntu_PHP
測試:$ssh hp@192.168.0.102
#ssh-copy-idhp@192.168.0.101 復制到Slave機器Ubuntu_C
測試:$ssh hp@192.168.0.101
4、HDFS集群部署
Hadoop集群分成兩大類角色:Master和Salve。一個HDFS集群是由一個NameNode和若干個DataNode組成的。其中NameNode作為主服務器,管理文件系統的命名空間和客戶端對文件系統的訪問操作;集群中的DataNode管理存儲的數據。MapReduce框架是由一個單獨運行在主節點上的JobTracker和運行在每個集群從節點的TaskTracker共同組成的。主節點負責調度構成一個作業的所有任務,這些任務分布在不同的從節點上。主節點監控它們的執行情況,并且重新執行之前的失敗任務;從節點僅負責由主節點指派的任務。當一個Job被提交時,JobTracker接收到提交作業和配置信息之后,就會將配置信息等分發給從節點,同時調度任務并監控TaskTracker的執行。
1)Master服務器安裝
官網下載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服務器配置
?? core-site.xml和hdfs-site.xml是站在 HDFS角度上配置文件,其中core-site.xml配置的是HDFS的地址和端口號。yarn-site.xml和mapred-site.xml是站在MapReduce角度上配置文件,其中mapred-site.xml配置的是JobTracker的地址和端口。
1)創建數據存放的文件夾,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服務器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路徑,并授權JDK文件夾權限給hp用戶。
$sudo chmod –R777 /home/c/jdk??? Ubuntu_C機器的JDK路徑
$sudo chmod –R777 /home/php/jdk??? Ubuntu_php機器的JDK路徑
9)Master服務器進入Hadoop目錄下執行$ bin/hdfs namenode –format 初始化
啟動在sbin目錄下執行$sbin/start-all.sh
可以使用jps查看信息
停止執行$sbin/stop-all.sh
5、總結上,主要是JDK、SSH、Hadoop配置三步,先在Master都部署好,整個操作系統直接復制Slave最佳。
總結
以上是生活随笔為你收集整理的Hadoop系列一:Hadoop集群分布式部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初试Android基于Vuforia开发
- 下一篇: Hadoop系列二:Hadoop单节点伪