目錄
- 集群簡介
- 服務(wù)器準(zhǔn)備
- 環(huán)境和服務(wù)器設(shè)置
- JDK環(huán)境安裝
- Hadoop安裝部署
- 啟動(dòng)集群
- 測試
集群簡介
在進(jìn)行集群搭建前,我們需要大概知道搭建的集群都是些啥玩意。
HADOOP集群具體來說包含兩個(gè)集群:HDFS集群和YARN集群,兩者在邏輯上分離,但物理上常在一起(啥意思?就是說:HDFS集群和YARN集群,他們倆是兩個(gè)不同的玩意,但很多時(shí)候都會(huì)部署在同一臺(tái)物理機(jī)器上)
- HDFS集群:負(fù)責(zé)海量數(shù)據(jù)的存儲(chǔ),集群中的角色主要有
- NameNode (DataNode的管理者,負(fù)責(zé)保存元數(shù)據(jù))
- DataNode (負(fù)責(zé)保存具體的數(shù)據(jù)內(nèi)容)
- YARN集群:負(fù)責(zé)海量數(shù)據(jù)運(yùn)算時(shí)的資源調(diào)度,集群中的角色主要有
- ResourceManager (NodeManager的管理者,負(fù)責(zé)NodeManager的調(diào)用等)
- NodeManager (當(dāng)ResourceManager進(jìn)行調(diào)用時(shí),負(fù)責(zé)調(diào)用本地的運(yùn)算資源等)
那mapreduce是什么呢?它其實(shí)是集群中一個(gè)應(yīng)用程序開發(fā)包,放在yarn集群上面跑。
搭建構(gòu)思
本集群搭建案例,以3節(jié)點(diǎn)為例進(jìn)行搭建,角色分配如下:
服務(wù)器 | 角色1 | 角色2 | 角色3 |
---|---|---|---|
note1 | NameNode | ResourceManager | |
note2 | DataNode | NodeManager | SecondaryNameNode |
note3 | DataNode | NodeManager |
解析:
note1服務(wù)器擔(dān)任的角色為NameNode和ResourceManager(即note1服務(wù)器為HDFS集群的NameNode節(jié)點(diǎn),同時(shí)也是YARN集群的ResourceManager節(jié)點(diǎn))
note2 服務(wù)器擔(dān)任的角色為 DataNode 、 NodeManager 和 SecondaryNameNode(同上)
note3 服務(wù)器擔(dān)任的角色為 DataNode 和 NodeManager(同上)
(ps:本來節(jié)點(diǎn)名字想打node的,錯(cuò)打成note,懶得改.)
服務(wù)器準(zhǔn)備
本案例使用虛擬機(jī)服務(wù)器來搭建HADOOP集群,所用軟件及版本:
- Vmware12.0
- Centos6.5 64bit
下載安裝過程就省略啦,網(wǎng)上鏈接和教程一大把。
環(huán)境和服務(wù)器設(shè)置
在進(jìn)行網(wǎng)絡(luò)準(zhǔn)備的前提,是安裝Vmware,新建三臺(tái)虛擬機(jī)。
注:以下操作在root用戶下操作。
配置虛擬機(jī)橋接方式,采用NAT方式聯(lián)網(wǎng)
配置Linux的網(wǎng)絡(luò)配置文件,具體設(shè)置步驟如下:
-
1、配置/etc/sysconfig/network-scripts/ifcfg-eth0
`shell> su root #切換為root用戶` `shell> vi /etc/sysconfig/network-scripts/ifcfg-eth0 #編輯配置文件` 配置內(nèi)容如下(修改下面有值的項(xiàng),沒有的加上): > DEVICE="..." > BOOTPROTO="static" #設(shè)置為靜態(tài)IP > HWADDR="....." > IPV6INIT="..." > NM_CONTROLLED="...." > ONBOOT="yes" > TYPE="......" > UUID=".........." > IPADDR="192.168.88.3" #IP地址 > NETMASK="255.255.255.0" # 子網(wǎng)掩碼 > GATEWAY="192.168.88.1" #網(wǎng)關(guān)地址
-
2、重啟網(wǎng)絡(luò)服務(wù),使配置生效。
`shell> service network restart # 重啟網(wǎng)絡(luò)服務(wù)`
-
添加hadoop用戶并添加sudo權(quán)限
shell> useradd hadoop #添加用戶hadoop
shell> passwd hadoop #設(shè)置用戶hadoop的密碼
shell> chmod u+w /etc/sudoers # 添加寫權(quán)限
shell> vi /etc/sudoers
進(jìn)入編輯模式,找到這一 行:"root ALL=(ALL) ALL"在起下面添加"hadoop ALL=(ALL) ALL",然后保存退出。
shell> chmod u-w /etc/sudoers #撤銷寫權(quán)限
設(shè)置服務(wù)器時(shí)間同步
date -s "2016-08-18 12:21:00
-
修改主機(jī)名
shell> vi /etc/sysconfig/network
配置內(nèi)容如下:
NETWORKING=yes
HOSTNAME=note1 -
配置內(nèi)網(wǎng)域名映射
配置/etc/hosts配置文件:shell> vi /etc/hosts
配置內(nèi)容如下:
192.168.88.3 note1
192.168.88.4 note2
192.168.88.5 note3 -
配置ssh免密登陸
生成ssh免登陸密鑰
shell> cd ~/.ssh #進(jìn)入到我的home目錄
shell> ssh-keygen -t rsa #(四個(gè)回車)
執(zhí)行完這個(gè)命令后,會(huì)生成兩個(gè)文件id_rsa(私鑰)、id_rsa.pub(公鑰)
將公鑰拷貝到要免密登陸的目標(biāo)機(jī)器上
shell> ssh-copy-id localhost
配置防火墻
因?yàn)樾枰M(jìn)行免密登錄,所以要對(duì)防火墻進(jìn)行關(guān)閉。
shell> service iptables status #查看防火墻狀態(tài)
shell> service iptables stop #關(guān)閉防火墻
shell> chkconfig iptables --list #查看防火墻開機(jī)啟動(dòng)狀態(tài)
shell> chkconfig iptables off #關(guān)閉防火墻開機(jī)啟動(dòng)
shell> reboot # 重啟
JDK環(huán)境安裝
解壓jdk
創(chuàng)建一個(gè)目錄app來放置解壓后的文件
shell> mkdir /home/hadoop/app #創(chuàng)建文件夾
shell> tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app #解壓
-
配置環(huán)境變量
解壓完畢后需要將java添加到環(huán)境變量中,并使其生效
shell> vi /etc/profile
在文件最后添加一下內(nèi)容:export JAVA_HOME=/home/hadoop/app/jdk-7u_65-i585
export PATH=$PATH:$JAVA_HOME/bin刷新配置,使其生效
shell> source /etc/profile
Hadoop安裝部署
-
解壓Hadoop安裝包
解壓到app目錄下
shell> tar -zxvf hadoop-2.7.3.tar.gz -C /home/hadoop/app #解壓
修改配置文件
配置文件都放在解壓目錄下的etc/hadoop/目錄下(我這里的目錄為/home/hadoop/app/hadoop-2.7.3/etc/hadoop/),但我們只對(duì)一部分的項(xiàng)進(jìn)行配置,沒有配置的項(xiàng)都將使用默認(rèn)值。配置項(xiàng)是以xml的格式來進(jìn)行的,最簡化配置如下:-
配置hadoop-env.sh
shell> vi hadoop-env.sh
在hadoop-env.sh配置文件中加入以下內(nèi)容:
export JAVA_HOME=/home/hadoop/apps/jdk1.7.0_51 # JDK路徑
-
配置core-site.xml
shell> vi core-site.xml
在core-site.xml配置文件中加入以下內(nèi)容:
<configuration>
`<property>` `<name>fs.defaultFS</name>` `<value>hdfs://note1:9000</value>` `</property>`
<property>
<name>hadoop.tmp.dir</name>
<value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value>
</property>
</configuration>
-
配置hdfs-site.xml
在用戶目錄下(/home/hadoop)創(chuàng)建一個(gè)data目錄,用來存放HDFS產(chǎn)生的數(shù)據(jù)。然后對(duì)hdfs-site.xml進(jìn)行配置
shell> mkdir /home/hadoop/data
shell> vi hdfs-site.xml
在hdfs-site.xml配置文件中加入以下內(nèi)容:
<configuration>
`<property>` `<name>dfs.namenode.name.dir</name>` `<value>/home/hadoop/data/name</value>` `</property>`
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/data/data</value>
</property>
`<property>` `<name>dfs.replication</name>` `<value>3</value>` `</property>`
<property>
<name>dfs.secondary.http.address</name>
<value>note2:50090</value>
</property>
</configuration>
-
配置mapred-site.xml
shell> vi mapred-site.xml
在mapred-site.xml配置文件中加入以下內(nèi)容:
<configuration>
``
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
-
配置yarn-site.xml
shell> vi yarn-site.xml
在yarn-site.xml配置文件中加入以下內(nèi)容:
<configuration>
`<property>` `<name>yarn.resourcemanager.hostname</name>` `<value>hadoop01</value>` `</property>`
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
-
配置salves
salves文件配置的內(nèi)容是集群的主機(jī)地址
shell> vi salves
在salves配置文件中加入以下內(nèi)容:
note1 #主機(jī)名,通過/etc/hosts文件映射為IP地址
note2
note3
注意:以上所有配置(除了免密登錄外,免密登錄只需要在NameNode節(jié)點(diǎn)配置即可)都要在所有節(jié)點(diǎn)服務(wù)器進(jìn)行配置。
啟動(dòng)集群
- 初始化HDFS集群
bin/hadoop namenode -format
- 啟動(dòng)HDFS集群
sbin/start-dfs.sh
- 啟動(dòng)YARN集群
sbin/start-yarn.sh
當(dāng)然,你也可以使用sbin/start-all.sh
這個(gè)命令同時(shí)把HDFS和YARN集群啟動(dòng),但是在做實(shí)驗(yàn)時(shí)不建議這樣做,因?yàn)檫@樣啟動(dòng)出現(xiàn)問題就不好定位了。在實(shí)際生產(chǎn)中,如果集群數(shù)量比較大,可以使用腳本進(jìn)行啟動(dòng)。
注意:一般情況下HDFS和YARN集群的主節(jié)點(diǎn)(NameNode和ResourceManager物理上都是在同一服務(wù)器的)使用命令進(jìn)行啟動(dòng)即可,其他節(jié)點(diǎn)會(huì)被主節(jié)點(diǎn)通過免密登錄自動(dòng)啟動(dòng)的。
測試
1、啟動(dòng)HDFS集群成功,通過jps命令查看,進(jìn)程2521 為NameNode進(jìn)程
2、啟動(dòng)Yarn集群成功,通過jps命令查看,進(jìn)程2803位 ResourceManager進(jìn)程
3、在瀏覽器查看HDFS集群(訪問主節(jié)點(diǎn)的50070端口即可),瀏覽器中輸入192.168.88.3:50070
4、停止Hadoop集群,可以分別停止(分別使用stop-dfs.sh
和stop-yarn.sh
),當(dāng)然你也可以一步停止集群(使用stop-all.sh
)
至此,Hadoop集群搭建完畢。