一、前言
大家好,我是向陽花花花花,這篇文章是我歷時三天,推翻重做兩小時進行搭建的Hadoop集群(完全分布式)個人筆記和感想,收錄于初心的《大數(shù)據(jù)》專欄。
?? 個人主頁:初心%個人主頁
?? 個人簡介:大家好,我是初心,一名正在努力的雙非二本院校計算機專業(yè)學生
?? 座右銘:理想主義的花,終究會盛開在浪漫主義的土壤里!??????
??歡迎大家:這里是CSDN,我記錄知識的地方,喜歡的話請三連,有問題請私信??
在集群搭建期間我經(jīng)歷了各種各樣的錯誤,困難和BUG,不過都被我收割了。成功搭建之后,為了加深對Hadoop集群環(huán)境搭建的理解,我決定推翻重做,這次重做的過程就順利多了!終于,歷時兩小時,我再次搭建好了Hadoop環(huán)境,而這篇文章就是我兩次搭建總結(jié)出來的方法,分享出來希望能幫助到大家。
二、配置三臺虛擬機
2.1 克隆三臺虛擬機
先從一臺虛擬機克隆出三臺虛擬機,作為搭建Hadoop完全分布式的三個節(jié)點。這里我的三個節(jié)點分別叫 hadoop102 hadoop103 hadoop104,克隆這里需要注意的地方:
虛擬機要是關(guān)機狀態(tài)才可以克隆
從虛擬機當前狀態(tài)克隆
創(chuàng)建完整克隆,之后填寫虛擬機名稱和存放位置就好
克隆好之后,分別再修改三臺虛擬機的內(nèi)存如下:
- hadoop102
- hadoop103
- hadoop104
2.2 配置克隆的虛擬機
- 修改網(wǎng)絡(luò)配置文件
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33
- 修改主機名
sudo vim /etc/hostname
- 修改客戶機內(nèi)容
sudo vim /etc/hosts
- 重啟reboot,在另外兩臺虛擬機并上將步驟再重復兩次
sudo reboot
- Windows配置IP和主機名對應
進入到這個文件夾下,修改hosts文件
C:\Windows\System32\drivers\etc
將這個文件拖動到桌面,使用記事本打開,進行編輯后放回覆蓋原文件。
2.3 使用Xshell連接虛擬機
在xshell中新建一個連接,重復三次,分別用xshell連接上三臺虛擬機
至此,創(chuàng)建三個虛擬機節(jié)點,以及使用Xshell連接虛擬機工作我們就做好了。這是搭建Hadoop集群前的準備工作,這里我的 hadoop102 hadoop103 hadoopp104 分別對應的ip為 192.168.10.102/103/104.
2.4 配置SSH免密登錄
在搭建Hadoop集群之前,我們還要為三臺虛擬機搭建免密登錄,這是基礎(chǔ),否則后面會不斷提示輸入密碼。這是一個繁瑣的操作,因此配置了免密之后我們就可以省略這些步驟,節(jié)省時間。
- 使用hadoop102登錄hadoop102
ssh localhost
接下來會提示問題,輸入yes就好,之后輸入本機的密碼,就可以連接上本機。我們登錄本機的目的是在 home 目錄下生成 .ssh 隱藏文件夾,以便進行下一步操作,下面退出剛才的登錄。
exit
進入到ssh文件夾(centos-1是我的普通用戶名,如果虛擬機只有root用戶,一定要創(chuàng)建一個普通用戶,否則找不到這個文件夾)。
cd /home/centos-1/.ssh/
- 在ssh文件夾下生成私鑰
執(zhí)行下面的命令生成本機的私鑰
ssh-keygen -t rsa
執(zhí)行完這個命令之后,查看當前文件夾的文件,可以看到多出這兩個文件
- 公私鑰對拷
執(zhí)行下面的命令,將Hadoop102的私鑰拷貝到Hadoop102 Hadoop103 Hadoop104上
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
最后,在Hadoop103,Hadoop104上重復上面的步驟,這樣就能實現(xiàn)三臺機器之前的相互免密登錄。
思考:root用戶進行免密登錄需不需要輸入密碼?
答案是要。因為root用戶下的.ssh文件夾和普通用戶是不一樣的,如果想要在 root 用戶下還能免密登錄,也要重復上面的步驟,個人認為hadoop102的root用戶配置了免密就可以了,其他的兩臺也可以配置
注意,這里是要為Hadoop102的root用戶配置hadoop102->hadoop103,hadoop102->hadoop104的免密的,否則后面使用分發(fā)腳本可能會提示沒有權(quán)限,無法分發(fā)!
三、Hadoop集群準備
3.1 安裝 rsync
安裝同步工具rsync,這是安裝xsync腳本的基礎(chǔ)
sudo yum install -y rsync
3.2 安裝xsync分發(fā)腳本
- 查看環(huán)境變量
echo $PATH
- 進入到在PATH中的一個目錄
cd /usr/local/bin
- 復制下面的分發(fā)腳本 xsync.sh ,再使用下面的命令創(chuàng)建xsync文件并粘貼,保存退出
sudo vim xsync
- 分發(fā)腳本xsync.sh
#! /bin/bash
# 1.判斷參數(shù)個數(shù)
if [ $# -lt 1 ]
then
echo Not Enough Argument!
exit;
fi
# 2.遍歷所有集群機器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $host ===================
# 3.遍歷所有目錄,挨個發(fā)送
for file in $@
do
# 4.判斷文件是否存在
if [ -e $file ]
then
# 5.獲取父目錄
pdir=$(cd -P $(dirname $file); pwd)
# 6.獲取當前文件的名稱
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
- 授予可執(zhí)行權(quán)限
sudo chmod 777 xsync
至此,虛擬機的任意目錄就可以使用xsync命令。如果不可以使用,則證明安裝失敗,請仔細檢查。
3.3 安裝JDK和安裝Hadoop
- 進入centos操作目錄
cd /opt
- 創(chuàng)建JDK和Hadoop的壓縮包存放目錄和文件存放目錄
sudo mkdir module
sudo mkdir software
在Xshell中通過Xftp文件上傳工具(或者lrzsz、finalShell等),上傳JDK和Hadoop的壓縮包到software目錄
- 解壓JDK和Hadoop到module目錄
tar -xzvf jdk-8u202-linux-x64.tar.gz -C /opt/module/
tar -xzvf hadoop-3.1.3.tar.gz -C /opt/module/
3.4 配置環(huán)境變量
- 進入到/etc/profile.d文件夾
cd /etc/profile.d
- my_env.sh文件
# JAVA_HOME
# 只需修改java_home 因人而異 是自己的jdk安裝目錄
export JAVA_HOME=/opt/module/jdk1.8.0_202
export PATH=$PATH:$JAVA_HOME/bin
# HADOOP_HOME
# 同理 這里只需修改Hadoop_home,是Hadoop安裝目錄
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
# 這里是centos-1是用戶名 因人而異 改為自己的虛擬機的普通用戶名或root
export HDFS_NAMENODE_USER=centos-1
export HDFS_DATANODE_USER=centos-1
export HDFS_SECONDARYNAMENODE_USER=centos-1
export YARN_RESOURCEMANAGER_USER=centos-1
export YARN_NODEMANAGER_USER=centos-1
- 新建文件my_env.sh,將my_env.sh文件內(nèi)容復制進來
sudo vim my_env.sh
- 刷新環(huán)境變量
source /etc/profile
- 測試環(huán)境變量是否配置成功
java
hadoop
如果輸出一大片信息說明配置好了
3.5 分發(fā)
使用xsync將hadoop102的jdk、Hadoop以及環(huán)境變量分發(fā)到另外兩臺虛擬機上。
- 分發(fā)JDK和Hadoop
xsync /opt/module/
- 分發(fā)環(huán)境變量
xsync /etc/profile.d/my_env.sh
四、Hadoop集群搭建
4.1 修改配置文件
首次搭建Hadoop完全分布式,要分別修改下面四個文件,這里僅展示configuration標簽內(nèi)的內(nèi)容。
首先進入到Hadoop的etc目錄的hadoop目錄
cd /opt/module/hadoop-3.1.3/etc/hadoop/
vim core-site.xml
core-site.xml
<configuration>
<!--指定NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
<description>version of this configuration file</description>
</property>
<!-- 指定Hadoop數(shù)據(jù)的存儲目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
<description>A base for other temporary directories.</description>
</property>
</configuration>
vim mapred-site.xml
mapred-site.xml
<configuration>
<!-- 指定MapReduce程序運行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3</value>
</property>
</configuration>
vim hdfs-site.xml
hdfs-site.xml
<configuration>
<!-- nn Web端訪問地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
<description>
The address and the base port where the dfs namenode web ui will listen on.
</description>
</property>
<!-- 2nn Web端訪問地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>
vim yarn-site.xml
yarn-site.xml
<configuration>
<!--指定MR走shuffle-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
<!--環(huán)境變量的繼承-->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
修改完成之后,退出到hadoop目錄
cd /opt/module/hadoop-3.1.3/etc
執(zhí)行分發(fā),將etc下的hadoop目錄的四個配置文件同步
xsync hadoop
4.2 配置workers
進入到配置文件目錄
cd /opt/module/hadoop-3.1.3/etc/hadoop/
修改workers文件,將文件內(nèi)容改成三臺主機名即可,之后再次分發(fā),將修改同步。
vim workers
xsync /opt/module/hadoop-3.1.3/etc/hadoop/
4.3 格式化集群
在hadoop102上進行格式化
hdfs namenode -format
至此,Hadoop完全分布式(集群)就搭建好了。
4.4 啟動集群
下面這張圖就是我們搭建的Hadoop集群的集群規(guī)劃。首先進入到hadoop目錄
cd /opt/module/hadoop-3.1.3/
在Hadoop102啟動HDFS(Hadoop分布式文件系統(tǒng))
sbin/start-dfs.sh
在Hadoop103啟動YARN(Hadoop資源調(diào)度管理)
sbin/start-yarn.sh
使用jps命令來查看進程,驗證是否和集群規(guī)劃一致。
如果按照教程來,執(zhí)行jps命令得到的結(jié)果和上圖不一致,請仔細檢查是否哪一步出現(xiàn)了問題,再進行下一步。
4.5 關(guān)閉集群
首先關(guān)閉YARN,再關(guān)閉HDFS,至此,Hadoop集群搭建(完全分布式搭建)成功。
sbin/stop-yarn.sh
sbin/stop-dfs.sh
五、結(jié)語
學習是一個漫長且持續(xù)漸進的過程,其中不免遇到很多困難,有時候讓你頭痛,讓你心慌。有人選擇逃避,有人選擇全力以赴,希望大家的每一天都變得充實。文章來源:http://www.zghlxwxcb.cn/news/detail-615089.html
? 這就是今天要分享給大家的全部內(nèi)容了,我們下期再見!
? 本文由初心原創(chuàng),首發(fā)于CSDN博客, 博客主頁:blog.csdn.net/qq_62592360
?? 理想主義的花,終究會盛開在浪漫主義的土壤里!
?? 如果你喜歡的話,記得點贊收藏關(guān)注,我在CSDN等你!文章來源地址http://www.zghlxwxcb.cn/news/detail-615089.html
到了這里,關(guān)于【Hadoop】完全分布式集群搭建的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!