史上最詳細從零搭建分布式Hadoop叢集環境
- Hadoop叢集搭建
-
- 一,簡單介紹
- 二,虛拟機環境準備
- 三,安裝包
- 四,安裝與配置
- 五,啟動
Hadoop叢集搭建
一,簡單介紹
HADOOP叢集具體來說包含三個子產品:HDFS叢集,YARN叢集(兩者邏輯上分離,但實體上常在一起)和Mapreduce
HDFS叢集:
負責海量資料的存儲,叢集中的角色主要有 NameNode / DataNode
YARN叢集:
負責海量資料運算時的資源排程,叢集中的角色主要有 ResourceManager /NodeManager
Mapreduce:
它其實是一個分布式運算程式的程式設計架構,Mapreduce核心功能是将使用者編寫的業務邏輯代碼和自帶預設元件整合成一個完整的分布式運算程式,并發運作在一個hadoop叢集上;
二,虛拟機環境準備
虛拟機和linux環境安裝可參考部落格:https://blog.csdn.net/weixin_45997612/article/details/115321231
1 準備4台CentOS 7系統的虛拟機,每台記憶體至少為2G(正式環境中根據實際情況确定記憶體大小)
1.1 先将虛拟機網絡編輯器的網絡模式選為NAT
1.2 關閉防火牆(CentOS7采用新的firewalld,CentOS6及以前版本采用iptables,不過firewalld底層仍然調用的是iptable)
#檢視防火牆狀态
systemctl status firewalld
#關閉防火牆
systemctl stop firewalld.service
#關閉防火牆開機啟動
systemctl disable firewalld.service
1.3 修改主機名和ip映射(4台機器都要改)
#修改主機名
vi /etc/hostname
将預設的主機名localhost.localdomain 分别改為hadoop1,hadoop2,hadoop3,hadoop4
#修改ip與主機名映射
vi /etc/hosts
添加映射:把*替換為自己虛拟機的ip即可
192.168.**.*** hadoop1
192.168.**.*** hadoop2
192.168.**.*** hadoop3
192.168.**.*** hadoop4
1.4 重新開機虛拟機
reboot
2 配置免密登入
#生成ssh免登陸密鑰
ssh-keygen
輸入指令後回車,然後會有等待輸入密碼之類的,直接回車,一共4次回車
#在本機操作将免密密鑰複制到四台機器,包括本機
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh-copy-id hadoop4
#驗證是否登入成功
ssh hadoop2
顯示Last login: Thu Aug 13 10:28:07 2020 from 192.168.**.* 表示登入成功
#登出
exit
三,安裝包
所需安裝包:(jdk-8u161-linux-x64.tar.gz與hadoop-2.9.2.tar.gz,也可自己在官網下載下傳)
連結:https://pan.baidu.com/s/1gWx6yQoWrKA3pfFeAY_pSQ
提取碼:0r0p
四,安裝與配置
1,建立檔案夾,用來存放安裝包(4台機器都需建立)
#建立目錄/home/hadoop
mkdir /home/hadoop
# 然後分别建立 app hadoop java檔案夾
mkdir /home/hadoop/app mkdir /home/hadoop/hadoop mkdir /home/hadoop/java
#檔案夾含義
app:存放上傳的軟體
java:存放jdk
hadoop:hadoop安裝目錄
目錄結構如下:
2, 安裝JDK(4台機器都需安裝)
2.1 将jdk-8u161-linux-x64.tar.gz上傳到 /home/hadoop/app
2.2 解壓jdk
#進入app目錄
cd /home/hadoop/app
#解壓
tar -zxvf jdk-8u161-linux-x64.tar.gz -C /home/hadoop/java
2.3 将java添加到環境變量中
vim /etc/profile
#在檔案最後添加
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
export PATH=$PATH:$JAVA_HOME/bin
#重新整理配置
source /etc/profile
3, hadoop1機器上安裝hadoop,并配置
3.1 解壓
#進入app目錄
cd /home/hadoop/app
#将hadoop-2.9.2.tar.gz解壓到 hadoop檔案夾
tar -zxvf hadoop-2.9.2.tar.gz -C /home/hadoop/hadoop
3.2 配置slaves檔案
slaves就是指定DataNode啟動在哪台機器上
它會陸續啟動其他三個機器上的datanode,出現等待時,直接輸入登入密碼即可
vi /home/hadoop/hadoop/hadoop-2.9.2/etc/hadoop下的slaves檔案中localhost 改為
hadoop2
hadoop3
hadoop4
3.3 配置hadoop(在/home/hadoop/hadoop/hadoop-2.9.2/etc/hadoop目錄下)
第一個:hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
第二個:core-site.xml
<configuration>
<!-- 指定HADOOP所使用的檔案系統schema(URI),HDFS的老大(NameNode)的位址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定hadoop運作時産生檔案的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/hadoop-2.9.2/tmp</value>
</property>
<!-- 設定Hadoop的代理使用者 -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
第三個:hdfs-site.xml
<configuration>
<!-- 指定HDFS副本的數量,預設為3個 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定第一個namenode位址和通路端口 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop1:50070</value>
</property>
<!-- 指定第二個namenode位址和通路端口 -->
<property>
<name>dfs.secondary.http.address</name>
<value>hadoop1:50090</value>
</property>
</configuration>
第四個: 将mapred-site.xml.template重命名為mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
編輯mapred-site.xml
<configuration>
<!-- 指定mr運作在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
第五個:yarn-site.xml
<configuration>
<!-- 指定YARN的老大(ResourceManager)的位址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- reducer擷取資料的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
3.4 将hadoop添加到環境變量
vi /etc/proflie
#在檔案末尾加入以下内容
export JAVA_HOME=/home/hadoop/java/jdk1.8.0_161
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.9.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
#重新整理配置
source /etc/profile
4,遠端複制(将配置好的hadoop複制到其他3台機器)
scp -r /home/hadoop/hadoop [email protected]:/home/hadoop
scp -r /home/hadoop/hadoop [email protected]:/home/hadoop
scp -r /home/hadoop/hadoop [email protected]:/home/hadoop
目錄結構:
五,啟動
在hadoop1上操作:
5.1 格式化namenode
hdfs namenode -format (或者hadoop namenode -format)
5.2 啟動hadoop
#先啟動HDFS
sbin/start-dfs.sh
#再啟動YARN
sbin/start-yarn.sh
5.3 驗證是否啟動成功
#使用jps指令驗證,有以下程序表示啟動成功
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode
5.4 檢視圖形化界面
#在win10上配置ip映射(c:/windows/system32/drivers/etc)
192.168.**.*** hadoop1
192.168.**.*** hadoop2
192.168.**.*** hadoop3
192.168.**.*** hadoop4
#然後浏覽器通路
http://hadoop1:50070 (HDFS管理界面)
http://hadoop1:8088 (MR管理界面)