Hadoop框架:叢集模式下分散式環境搭建
阿新 • • 發佈:2020-09-27
本文原始碼:[GitHub·點這裡](https://github.com/cicadasmile/big-data-parent) || [GitEE·點這裡](https://gitee.com/cicadasmile/big-data-parent)
# 一、基礎環境配置
## 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
```
修改hop02\hop03時間機制,從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 | DataNode | NodeManager | ResourceManager |
|hop03 | DataNode | NodeManager | SecondaryNameNode |
## 2、修改配置
**vim core-site.xml**
```
```
這裡三臺服務都需要分別指定當前主機名稱。
**vim hdfs-site.xml**
```
```
這裡修改副本數為3,並指定SecondaryNameNode服務,三臺服務同樣修改指定SecondaryNameNode在hop03服務上。
**vim yarn-site.xml**
```
```
指定ResourceManager服務在hop02上。
**vim mapred-site.xml**
```
```
指定相關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
```
**推薦閱讀:程式設計體系整理**
|序號|專案名稱|GitHub地址|GitEE地址|推薦指數|
|:---|:---|:---|:---|:---|
|01|Java描述設計模式,演算法,資料結構|[GitHub·點這裡](https://github.com/cicadasmile/model-arithmetic-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/model-arithmetic-parent)|☆☆☆☆☆|
|02|Java基礎、併發、面向物件、Web開發|[GitHub·點這裡](https://github.com/cicadasmile/java-base-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/java-base-parent)|☆☆☆☆|
|03|SpringCloud微服務基礎元件案例詳解|[GitHub·點這裡](https://github.com/cicadasmile/spring-cloud-base)|[GitEE·點這裡](https://gitee.com/cicadasmile/spring-cloud-base)|☆☆☆|
|04|SpringCloud微服務架構實戰綜合案例|[GitHub·點這裡](https://github.com/cicadasmile/husky-spring-cloud)|[GitEE·點這裡](https://gitee.com/cicadasmile/husky-spring-cloud)|☆☆☆☆☆|
|05|SpringBoot框架基礎應用入門到進階|[GitHub·點這裡](https://github.com/cicadasmile/spring-boot-base)|[GitEE·點這裡](https://gitee.com/cicadasmile/spring-boot-base)|☆☆☆☆|
|06|SpringBoot框架整合開發常用中介軟體|[GitHub·點這裡](https://github.com/cicadasmile/middle-ware-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/middle-ware-parent)|☆☆☆☆☆|
|07|資料管理、分散式、架構設計基礎案例|[GitHub·點這裡](https://github.com/cicadasmile/data-manage-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/data-manage-parent)|☆☆☆☆☆|
|08|大資料系列、儲存、元件、計算等框架|[GitHub·點這裡](https://github.com/cicadasmile/big-data-parent)|[GitEE·點這裡](https://gitee.com/cicadasmile/big-data-parent)|☆☆☆