天天看點

Hadoop架構:叢集模式下分布式環境搭建一、基礎環境配置二、叢集環境搭建三、源代碼位址

本文源碼: GitHub·點這裡 || GitEE·點這裡

一、基礎環境配置

1、三台服務

準備三台Centos7服務,基礎環境從僞分布式環境克隆過來。

133 hop01,134 hop02,136 hop03           

2、設定主機名

## 設定名稱
hostnamectl set-hostname hop01
## 重新開機
reboot -f           

3、主機名通信

vim /etc/hosts
# 添加服務節點
192.168.37.133 hop01
192.168.37.134 hop02
192.168.37.136 hop03           

4、SSH免密登入

配置三台服務SSH免密登入。

[root@hop01 ~]# ssh-keygen -t rsa
...一路回車結束
[root@hop01 ~]# cd .ssh
...權限配置設定到指定叢集服務
[root@hop01 .ssh]# ssh-copy-id hop01
[root@hop01 .ssh]# ssh-copy-id hop02
[root@hop01 .ssh]# ssh-copy-id hop03
...在hop01免密登入到hop02
[root@hop01 ~]# ssh hop02           

這裡針對hop01服務,在hop02和hop03服務都要執行該操作。

5、同步時間

ntp元件安裝

# 安裝
yum install ntpdate ntp -y
# 檢視
rpm -qa|grep ntp           

基礎管理指令

# 檢視狀态
service ntpd status
# 啟動
service ntpd start
# 開機啟動
chkconfig ntpd on           

修改時間服務hop01

# 修改ntp配置
vim /etc/ntp.conf
# 添加内容
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
server 127.0.0.1
fudge 127.0.0.1 stratum 10           

修改hop02hop03時間機制,從hop01同步時間,并登出網絡擷取時間的機制。

server 192.168.37.133
# server 0.centos.pool.ntp.org iburst
# server 1.centos.pool.ntp.org iburst
# server 2.centos.pool.ntp.org iburst
# server 3.centos.pool.ntp.org iburst           

編寫定時任務

[root@hop02 ~]# crontab -e
*/10 * * * * /usr/sbin/ntpdate hop01           

修改hop02和hop03服務時間

# 指定時間
date -s "2018-05-20 13:14:55"
# 檢視時間
date           

這樣時間會基于hop01服務的時間不斷的更正或同步。

6、環境清理

從僞分布式環境虛拟機克隆三台Centos7服務,删除原來hadoop環境配置的data和log檔案夾。

[root@hop02 hadoop2.7]# rm -rf data/ logs/           

二、叢集環境搭建

1、叢集配置概覽

服務清單 HDFS檔案 YARN排程 單服務
hop01 DataNode NodeManager NameNode
hop02 ResourceManager
hop03 SecondaryNameNode

2、修改配置

vim core-site.xml

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://hop01:9000</value>
</property>           

這裡三台服務都需要分别指定目前主機名稱。

vim hdfs-site.xml

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hop03:50090</value>
</property>           

這裡修改副本數為3,并指定SecondaryNameNode服務,三台服務同樣修改指定SecondaryNameNode在hop03服務上。

vim yarn-site.xml

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hop02</value>
</property>           

指定ResourceManager服務在hop02上。

vim mapred-site.xml

<!-- 伺服器端位址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hop01:10020</value>
</property>

<!-- 伺服器web端位址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hop01:19888</value>
</property>           

指定相關web端檢視位址在服務hop01上。

3、叢集服務配置

路徑:/opt/hadoop2.7/etc/hadoop

檔案:vim slaves

hop01
hop02
hop03           

這裡配置三台服務的叢集清單。同步修改其他服務相同配置。

4、格式化NameNode

注意這裡NameNode配置在hop01服務上。

[root@hop01 hadoop2.7]# bin/hdfs namenode -format           

5、啟動HDFS

[root@hop01 hadoop2.7]# sbin/start-dfs.sh
Starting namenodes on [hop01]
hop01: starting namenode
hop03: starting datanode
hop02: starting datanode
hop01: starting datanode
Starting secondary namenodes [hop03]
hop03: starting secondarynamenode           

注意看這裡的列印資訊,和配置完全吻合。namenodes在hop01上啟動,secondary-namenodes在hop03上啟動,可以通過JPS指令到各個服務檢視驗證。

6、啟動YARN

注意Yarn配置在hop02服務上,是以在hop02服務執行啟動指令。

[root@hop02 hadoop2.7]# sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager
hop03: starting nodemanager
hop01: starting nodemanager
hop02: starting nodemanager,           

注意這裡的啟動列印日志,至此叢集規劃的服務都啟動完畢。

[root@hop01 hadoop2.7]# jps
4306 NodeManager
4043 DataNode
3949 NameNode
[root@hop02 hadoop2.7]# jps
3733 ResourceManager
3829 NodeManager
3613 DataNode
[root@hop03 hadoop2.7]# jps
3748 DataNode
3928 NodeManager
3803 SecondaryNameNode           

檢視各個服務下的叢集程序,與規劃配置一緻。

7、Web端界面

NameNode:http://hop01:50070
SecondaryNameNode:http://hop03:50090           

三、源代碼位址

GitHub·位址
https://github.com/cicadasmile/big-data-parent
GitEE·位址
https://gitee.com/cicadasmile/big-data-parent           

繼續閱讀