1. 程式人生 > >Hadoop集群環境搭建

Hadoop集群環境搭建

strong clu text data- dep table 什麽 隱藏文件 --nodeps

第一部分:準備Linux環境
創建虛擬機安裝系統的步驟在這裏就不講了,詳細步驟請看本人其他文章
打開建好的虛擬機
一、修改Hostname
1、 臨時修改hostname

hostname bigdata-01.liu.com

這種修改方式,系統重啟後就會失效
2、 永久修改hostname

vim /etc/sysconfig/network

打開後編輯如下內容

NETWORKING=yes #使用網絡
HOSTNAME=bigdata-01.liu.com #設置主機名

二、配置Host

vim /etc/hosts

添加如下內容

172.18.74.172 bigdata-01.liu.om

三、關閉防火墻

查看防火墻狀態

service iptables status

臨時關閉防火墻

service iptables stop

永久關閉防火墻(需要重啟才能生效)

chkconfig iptables off

四、關閉selinux
selinux是Linux一個子安全機制,學習環境可以將它禁用

vim /etc/sysconfig/selinux

把SELINUX設置成disabled

SELINUX=disabled

五、安裝JDK
檢測系統是否安裝jdk

java -version

如果顯示有openjdk需要先卸載再安裝Oracle的jdk(其他版本的jdk對hadoop的一些命令不是很支持)

rpm -qa | grep java

技術分享圖片
卸載openjdk,.noarch的文件可以不用刪除

rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.4.e17_5.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.191-2.6.15.4.e17_5.x86_64

然後再次使用rpm -qa | grep java 查看是否已經卸載openjdk,如果還有就再卸載一遍

用xshell遠程工具遠程虛擬機,安裝lrzsz命令

yum -y install lrzsz

導入jdk包並解壓到 /opt/modules目錄下

rz
tar -zvxf jdk-8u181-linux-x64.tar.gz -C /opt/modules

添加環境變量
設置JDK的環境變量 JAVA_HOME。需要修改配置文件/etc/profile,追加

export JAVA_HOME="/opt/modules/jdk1.8.0_181"
export PATH=$JAVA_HOME/bin:$PATH

技術分享圖片
修改完畢後,執行 source /etc/profile 使修改生效
再次執行 java –version,可以看見已經安裝完成
技術分享圖片

第二部分:hadoop安裝
完全分部式是真正利用多臺Linux主機來進行部署Hadoop,對Linux機器集群進行規劃,使得Hadoop各個模塊分別部署在不同的多臺機器上。
一、環境準備
1.克隆虛擬機
Vmware左側選中要克隆的機器,這裏對原有的BigData01機器進行克隆,虛擬機菜單中,選中管理菜單下的克隆命令。

選擇“創建完整克隆”,虛擬機名稱為BigData02,選擇虛擬機文件保存路徑,進行克隆。

再次克隆一個名為BigData03的虛擬機。
2.配置網絡
修改網卡名稱
在BigData02和BigData03機器上編輯網卡信息。執行sudo vim /etc/udev/rules.d/70-persistent-net.rules命令。因為是從BigData01機器克隆來的,所以會保留BigData01的網卡eth0,並且再添加一個網卡eth1。並且eth0的Mac地址和BigData01的地址是一樣的,Mac地址不允許相同,所以要刪除eth0,只保留eth1網卡,並且要將eth1改名為eth0。將修改後的eth0的mac地址復制下來,修改network-scripts文件中的HWADDR屬性。

vim /etc/sysconfig/network-scripts/ifcfg-eth0

修改網絡參數:

BigData02機器IP改為192.168.100.12

BigData03機器IP改為192.168.100.13
!!如果是在真實的服務器裏搭建Hadoop環境就需要再建兩個虛擬機,按照上面的步驟再來一遍了!!
3.配置Hostname以及hosts
BigData02配置hostname為 bigdata-02.liu.com

BigData03配置hostname為 bigdata-03.liu.com
BigData01、BigData02、BigData03三臺機器hosts都配置為:

172.18.74.172 bigdata-01.liu.com
172.18.74.173 bigdata-02.liu.com
172.18.74.174 bigdata-03.liu.com

4.配置Windows上的SSH客戶端

在本地Windows中的SSH客戶端上添加對BigData02、BigData03機器的SSH鏈接

二、服務器功能規劃

bigdata-01.liu.com bigdata-02.liu.com bigdata-03.liu.com
NameNode ResourceManage SecondaryNameNode
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer

三、在第一臺機器上安裝新的Hadoop
創建hadoop目錄

mkdir -p /opt/modules/app

導入Hadoop壓縮包並解壓到Hadoop目錄

rz
tar -zxf /opt/sofeware/hadoop-2.7.4-with-centos-6.7.tar.gz -C /opt/modules/app/

切換到/opt/modules/app/hadoop-2.7.4/etc/hadoop目錄,配置該目錄下的Hadoop JDK路徑修改hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路徑:

export JAVA_HOME="/opt/modules/jdk1.8.0_181"

配置core-site.xml
vim core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://bigdata-01.liu.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/app/hadoop-2.7.4/data/tmp</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
</configuration>

fs.defaultFS為NameNode的地址。

hadoop.tmp.dir為hadoop臨時目錄的地址,默認情況下,NameNode和DataNode的數據文件都會存在這個目錄下的對應子目錄下。應該保證此目錄是存在的,如果不存在,先創建。

配置hdfs-site.xml
vim hdfs-site.xml

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>bigdata-03.liu.com:50090</value>
</property>
</configuration>

dfs.namenode.secondary.http-address是指定secondaryNameNode的http訪問地址和端口號,因為在規劃中,我們將BigData03規劃為SecondaryNameNode服務器,所以這裏設置:bigdata-03.liu.com:50090
配置slaves
vim slaves

bigdata-01.liu.com
bigdata-02.liu.com
bigdata-03.liu.com

slaves文件是指定HDFS上有哪些DataNode節點

配置yarn-site.xml
vim yarn-site.xml

<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>bigdata-02.liu.com</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>106800</value>
</property>
</configuration>

根據規劃yarn.resourcemanager.hostname這個指定resourcemanager服務器指向bigdata-02.liu.com

yarn.log-aggregation-enable是配置是否啟用日誌聚集功能

yarn.log-aggregation.retain-seconds是配置聚集的日誌在HDFS上最多保存多長時間
配置mapred-site.xml
從mapred-site.xml.template復制一個mapred-site.xml文件

cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>bigdata-01.liu.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>bigdata-01.liu.com:19888</value>
</property>
</configuration>

mapreduce.framework.name設置mapreduce任務運行在yarn上

mapreduce.jobhistory.address是設置mapreduce的歷史服務器安裝在BigData01機器上

mapreduce.jobhistory.webapp.address是設置歷史服務器的web頁面地址和端口號
四、設置SSH無密碼登錄
Hadoop集群中的各個機器間會相互地通過SSH訪問,每次訪問都輸入密碼是不現實的,所以要配置各個機器間的SSH是無密碼登錄的
在BigData01上生成公鑰

ssh-keygen -t rsa
一路回車,都設置為默認值,然後再當前用戶的Home目錄下的.ssh目錄中會生成公鑰文件(id_rsa.pub)和私鑰文件(id_rsa), .ssh是隱藏文件在home目錄下ls -a就會顯示出來

分發公鑰

ssh-copy-id bigdata-01.liu.com
ssh-copy-id bigdata-02.liu.com
ssh-copy-id bigdata-03.liu.com

五、分發Hadoop文件
首先在其他兩臺機器上創建存放Hadoop的目錄

mkdir -p /opt/modules/app

通過Scp分發

du -sh /opt/modules/app/hadoop-2.7.4/share/doc
scp -r /opt/modules/app/hadoop-2.7.4/ bigdata-02.liu.com:/opt/modules/app
scp -r /opt/modules/app/hadoop-2.7.4/ bigdata-03.liu.com:/opt/modules/app

格式NameNode
在NameNode機器bigdata-01上執行格式化:

/opt/modules/app/hadoop-2.7.4/bin/hdfs namenode –format

註意:
如果需要重新格式化NameNode,需要先將原來NameNode和DataNode下的文件全部刪除,不然會報錯,NameNode和DataNode所在的目錄是在core-site.xml中hadoop.tmp.dir、dfs.namenode.name.dir、dfs.datanode.data.dir屬性裏配置的。
因為每次格式化,默認是創建一個集群ID,並寫入NameNode和DataNode的VERSION文件中(VERSION文件所在目錄為dfs/name/current 和 dfs/data/current),重新格式化時,默認會生成一個新的集群ID,如果不刪除原來的目錄,會導致namenode中的VERSION文件中是新的集群ID,而DataNode中是舊的集群ID,不一致時會報錯。

六、啟動集群
切換到/opt/modules/app/hadoop-2.7.4目錄下
啟動HDFS

/opt/modules/app/hadoop-2.7.4/sbin/start-dfs.sh

jps查看已經啟動的服務
技術分享圖片
啟動YARN

/opt/modules/app/hadoop-2.7.4/sbin/start-yarn.sh

技術分享圖片
在BigData02上啟動ResourceManager:

sbin/yarn-daemon.sh start resourcemanager

啟動日誌服務器
因為我們規劃的是在BigData03服務器上運行MapReduce日誌服務,所以要在BigData03上啟動

/opt/modules/app/hadoop-2.7.4/sbin/mr-jobhistory-daemon.sh start historyserver

技術分享圖片
查看HDFS Web頁面
http://bigdata-01.liu.com:50070/
如果域名沒有解析可以在搜索欄中輸入ip+端口如:

172.18.74.172:50070

技術分享圖片
查看YARN Web 頁面
http://bigdata-02.liu.com:8088/cluster

172.18.74.173:8088/cluster

技術分享圖片
好啦,到這裏Hadoop集群環境的搭建就完成啦。建議Ha友們搭建Hadoop環境時先去鏈接一下各個組件是什麽這樣更有利於你順利的完成Hadoop環境的搭建,我的一些同學他們學這個比較早那時候也沒人了解Hadoop是什麽,聽他們說搭建了10天半個月的才搭建出來,我就是在他們的影響下逐漸了解了點Hadoop的知識,用了一天多的時間搭建好了,搭建過程中還遇到了不少突發情況,所以如果搭建過程中沒有什麽意外情況的話,半天就能搞定了,千萬不要遇到困難就放棄,堅持一定會勝利的!!
。。。從前車馬很慢,書信很遠,一生只夠愛一個人!!!

Hadoop集群環境搭建