寫在最前,在配置Hadoop之前,要確定已經準備好了Hadoop的準備環境,并且已經在機器上安裝完了Hadoop,以及撰寫了一些必要的集群腳本,具體操作詳情見這兩篇文章
Hadoop安裝及集群腳本撰寫
Hadoop集群準備環境搭建
一、Hadoop集群配置
1)集群部署規劃
注意:
①NameNode和SecondaryNameNode不要安裝在同一臺服務器上,NN和2NN的關系就好像是NN的補充是2NN,如果安裝在同一個機器上,機器一掛,NN和2NN全掛,完全不需要2NN對NN的補充
②ResourceManager也很消耗記憶體,不要和NameNode、SecondaryNameNode配置在同一臺機器上
所以安裝規劃如下
| hadoop102 | hadoop103 | hadoop104 | |
|---|---|---|---|
| HDFS | NameNode DataNode | DataNode | SecondaryNameNode DataNode |
| YARN | NodeManger | ResourceManager NodeManger | NodeManager |
2)組態檔
Hadoop組態檔分為兩類:默認組態檔和自定義檔案
自定義檔案主要有
core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml,四個檔案都放在hadoop目錄下的etc/hadoop路徑,可以根據實際需要進行配置
自定義檔案說明
| 檔案 | 說明 |
|---|---|
| core-site.xml | 核心組態檔 |
| hdfs-site.xml | hdfs組態檔 |
| yarn-site.xml | yarn配置問及那 |
| mapred-site.xml | mr組態檔 |
3)配置集群
①核心組態檔
配置core-site.xml
vim hadoop-3.1.3/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:8020</value>
</property>
<!-- 指定 hadoop 資料的存盤目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 網頁登錄使用的靜態用戶為 lnnu -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>lnnu</value>
</property>
</configuration>

注意:8020埠是客戶端訪問集群埠
②HDFS組態檔
配置hdfs-site.xml
vim hadoop-3.1.3/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web 端訪問地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop102:9870</value>
</property>
<!-- 2nn web 端訪問地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:9868</value>
</property>
</configuration>

注意:9870是訪問hdfs埠
③yarn組態檔
配置yarn-site.xml
vim hadoop-3.1.3/etc/hadoop/yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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>
<!-- 環境變數的繼承 -->
<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>

④MapReduce組態檔
配置mapred-site.xml
vim hadoop-3.1.3/etc/hadoop/mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 MapReduce 程式運行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

4)配置好之后將檔案分發到其他所有節點
xsync /opt/module/hadoop-3.1.3/etc/hadoop/
5)查看是否分發成功

二、啟動集群
1)配置workers
配置workers檔案,在/opt/module/hadoop-3.1.3/etc/hadoop/下
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
注意:檔案中不允許有空格,也不允許有空行,因為集群無法識別你的空格和空行是否為一臺機器

分發到其他節點
xsync /opt/module/hadoop-3.1.3/etc/hadoop/workers
2)啟動集群
① 如果集群是第一次啟動,需要在 hadoop102 節點格式化 NameNode
注意:格式化 NameNode,會產生新的集群 id,導致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往資料,如果集群在運行程序中報錯,需要重新格式化 NameNode 的話,一定要先停止 namenode 和 datanode 行程,并且要洗掉所有機器的 data 和 logs 目錄,然后再進行格式化,
hdfs namenode -format

②啟動HDFS
sbin/start-dfs.sh

③啟動YARN,因為YARN配置在了hadoop103上,所以到103上啟動,ResourceManager
sbin/start-yarn.sh

④web端查看HDFS的NameNode
瀏覽器:http://hadoop102:9870

⑤web端查看YARN的ResourceManager
瀏覽器:http://hadoop103:8088

3)集群小測驗
集群啟動之后,要測驗是否能夠正常運行,還是使用之前的官方小案例WordCount
①上傳檔案到集群
hadoop fs -mkdir /input
hadoop fs -put fileName /wc

上傳大檔案
hadoop fs -put /opt/software/jdk-8u212-linux-x64.tar.gz /

查看是否成功

4)配置歷史服務器
①歷史服務器可以在mapred-site.xml里配置
vim mapred-site.xml
增加內容
<!-- 歷史服務器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>
<!-- 歷史服務器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop102:19888</value>
</property>

②分發歷史服務器
xsync /opt/module/hadoop-3.1.3/etc/hadoop/mapred-site.xml

③啟動歷史服務器
mapred --daemon start historyserver

④查看是否啟動成功
jps

⑤web端查看JobHistory
http://hadoop102:19888/jobhistory

5)配置日志的聚集
就是把應用的日志資訊上傳到HDFS系統上,
日志聚集配置之后,可以方便的查看到程式運行詳情,方便開發除錯,
開啟日志聚集功能,需要重新啟動NodeManager、ResourceManager和HistoryServer,
開啟步驟:
①配置yarn-site.xml
vim yarn-site.xml
增加配置
<!-- 開啟日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 設定日志聚集服務器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 設定日志保留時間為 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

②分發配置
xsync /opt/module/hadoop-3.1.3/etc/hadoop/yarn-site.xml

③關閉NameManager、ResourceManager、HistoryServer
sbin/stop-dfs.sh
sbin/stop-yarn.sh
mapred --daemon stop historyserver


④確認已經關閉
jps

⑤啟動NameManager、ResourceManager、HistoryServer
sbin/start-dfs.sh
mapred --daemon start historyserver
sbin/start-yarn.sh


啟動成功

⑥執行WordCount案例
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input/word.txt /output

查看結果

結果內容


6)集群啟動/停止總結
①各個模塊分開啟動/停止
HDFS:
start-dfs.sh/stop-dfs.sh
YARN:
start-yarn.sh/stop-yarn.sh
②各個服務組件逐一啟動/停止
分別啟動HDFS組件
hdfs --daemon start/stop namenode/datanode/secondarynamenode
啟動/停止YARN
yarn --daemon start/stop resourcemanager/nodemanager
7)Hadoop集群常用腳本
①Hadoop啟停腳本
撰寫一個腳本檔案,可以啟動HDFS、YARN、HistoryServer
vim /home/lnnu/bin/myhadoop.sh
#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit ;
fi
case $1 in
"start")
echo " =================== 啟動 hadoop 集群 ==================="
echo " --------------- 啟動 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
echo " --------------- 啟動 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
echo " --------------- 啟動 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
echo " =================== 關閉 hadoop 集群 ==================="
echo " --------------- 關閉 historyserver ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo " --------------- 關閉 yarn ---------------"
ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
echo " --------------- 關閉 hdfs ---------------"
ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac
給腳本執行權限
chmod +x myhadoop.sh

腳本測驗
myhadoop start

②查看三臺服務器Java行程腳本執行權限
vim /home/lnnu/bin/jpsall
#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
echo =============== $host ===============
ssh $host jps
done
添加執行權限
chmod +x jpsall

測驗腳本
jpsall

測驗成功,將腳本分發

8)常用埠號說明
| 埠名稱 | Hadoop2.x | hadoop3.x |
|---|---|---|
| NameNode 內部通信埠 | 8020/9000 | 8020/9000/9820 |
| NameNode HTTP UI (hdfs埠) | 50070 | 9870 |
| MapReduce 查看執行任務視窗 | 8088 | 8088 |
| 歷史服務器通信埠 | 19888 | 19888 |
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379150.html
標籤:其他
上一篇:springboot集成rabbitmq接收訊息問題
下一篇:大資料之實時計算框架—Storm
