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