4.hadoop之偽分散式模式

code1997發表於2020-12-29

偽分散式模式

1 偽分散式配置

1.1 配置叢集

配置檔案均在hadoop的安裝目錄的etc/hadoop下

1)配置:hadoop-env.sh

修改JAVA_HOME的路徑

export JAVA_HOME=/opt/module/jdk1.8

2)修改配置:etc/hadoop/core-site.xml

vim etc/hadoop/core-site.xml

image-20201229192011423

新增如下資訊:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <!--這裡需要自己進行修改-->
        <value>hdfs://hadoop01:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-2.7.2/data/tmp</value>
    </property>
</configuration>

3)修改配置資訊(可改可不改):etc/hadoop/hdfs-site.xml

<!-- 指定HDFS副本的數量:預設副本數為3 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>

1.2 啟動叢集

1)格式化NameNode(第一次啟動時格式化)

bin/hdfs namenode -format

2)啟動NameNode

sbin/hadoop-daemon.sh start namenode

#關閉
sbin/hadoop-daemon.sh stop namenode

image-20201229195031446

3)啟動DataNode

sbin/hadoop-daemon.sh start datanode

#關閉
sbin/hadoop-daemon.sh stop datanode

image-20201229195050161

1.3 檢視叢集

1)使用jps檢視:該命令時JDK的命令。

image-20201229195146710

問題1:jsp不生效

原因:全域性變數hadoop java沒生效。

解決方式:source /etc/profile檔案。

問題2:jsp發現程式沒有,但是重新啟動叢集,提示進行已經開啟。

原因:在linux的跟目錄下/tmp目錄中存在啟動的程式臨時檔案,將叢集相關程式刪除掉,再重新啟動叢集。

2)使用web端檢視

訪問:http://192.168.134.141:50070/dfshealth.html#tab-overview

問題1:如果連線不上,可能是防火牆沒有關。

#檢視防火牆狀態
systemctl status firewalld.service
#關閉防火牆
systemctl stop firewalld.service
#禁止開機啟動
systemctl disable firewalld.service

image-20201229201213830

1.4 啟動HDFS

1)常見操作:

#在hdfs中建立目錄
bin/hdfs dfs -mkdir -p /user/it/input
#檢視目錄
bin/hdfs dfs -ls /

image-20201229202205971

#檢視多級目錄
bin/hdfs dfs -lsr /
#或者
bin/hdfs dfs -ls -R /

image-20201229204932078

#將本地中的檔案wcinput/word.txt上傳到hdfs上的/user/it/input下
bin/hdfs dfs -put wcinput/word.txt /user/it/input

image-20201229203720534

2)此時使用workcount來計算hdfs上的檔案

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/it/input/word.txt /user/it/output

image-20201229204440625

3)檢視結果

bin/hdfs dfs -cat /user/it/output/*

image-20201229204736235

1.5 格式化細節

1)先關掉程式

jsp檢視namenode和datanode,關閉這兩個程式。

2)刪除data資料夾和logs資料夾

1.6 檢視日誌

catlog下的日誌即可。

1.7 格式化namenode注意點

1)檢視datanode和namenode版本號

image-20201229210636844

image-20201229210721851

我們可以發現兩者的clusterID一致,兩者會進行通訊,如果我們頻繁的格式化namenode,可能會導致兩者的clusterID不一致,可能會出現兩者只有一個可以啟動。

image-20201229211201271

2 啟動YARN並執行MR程式

2.1 yarn的配置

1)配置yarn-env.sh:配置java_home

image-20201229211626995

2)配置yarn-site.xml

<!-- Reducer獲取資料的方式 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>hadoop01</value>
</property>

3)配置mapred-env.sh:配置java_home

image-20201229212202990

4)配置mapred-site.xml

mapred-site.xml.template改為mapred-site.xml。可以選擇複製cp mapred-site.xml.template mapred-site.xml

<!-- 指定MR執行在YARN上 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>

2.2 啟動yarn

1)啟動NameNode和DataNode

2)啟動ResourceManager

sbin/yarn-daemon.sh start resourcemanager

3)啟動NodeManager

sbin/yarn-daemon.sh start nodemanager

image-20201229213423240

3)檢視當前的程式

image-20201229214102812

注:如果出現錯誤就檢視對應的日誌檔案,來解決。

4)web埠檢視:mapreduce:埠號:8088

連結:http://hadoop01:8088/cluster

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-P6WQJdvR-1609253579788)(C:\Users\龍\AppData\Roaming\Typora\typora-user-images\image-20201229214337693.png)]

2.3 MR測試

1)刪除掉之前MR產生的目錄output

#刪除掉之前的output
bin/hdfs dfs -rm -r /user/it/output

image-20201229214946599

2)測試wordcount

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/it/input/word.txt /user/it/output

image-20201229220500895

3 配置歷史伺服器

我們發現有一個history欄,但是單擊也不能訪問,需要配置歷史伺服器。配置完成後不必重新啟動叢集。

1)配置mapred-site.xml

<!-- 歷史伺服器端地址 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>hadoop01:10020</value>
</property>
<!-- 歷史伺服器web端地址 -->
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>hadoop01:19888</value>
</property>

2)啟動歷史伺服器

sbin/mr-jobhistory-daemon.sh start historyserver

3)檢視是否啟動:jps

image-20201229221624824

4)檢視JobHistory

連結:http://hadoop01:19888/jobhistory

image-20201229221749054

5)此時檢視之前的任務的history也可以檢視

4 配置日誌聚集

日誌聚集概念:應用執行完成以後,將程式執行日誌上傳到HDFS系統上,可以方便的檢視程式的執行詳情,方便開發除錯。

如下圖的log

image-20201229222234568

注意:開啟日誌聚集的功能,需要重新啟動:nodeManager,ResourceManager和HistoryManager。

1)關閉nodeManager,ResourceManager和HistoryManager。

image-20201229222714185

2)配置yarn-site.xml

<!-- 日誌聚集功能使能 -->
<property>
	<name>yarn.log-aggregation-enable</name>
	<value>true</value>
</property>

<!-- 日誌保留時間設定7天 -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>604800</value>
</property>

3)啟動NodeManager 、ResourceManager和HistoryManager

sbin/yarn-daemon.sh start resourcemanager

sbin/yarn-daemon.sh start nodemanager

sbin/mr-jobhistory-daemon.sh start historyserver

jps檢視

4)刪除HDFS上已經存在的輸出檔案

bin/hdfs dfs -rm -r /user/it/output

5)執行WordCount程式

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/it/input/word.txt /user/it/output

6)檢視程式的日誌資訊

連結:http://hadoop01:8088/cluster

進入到history->logs

可以檢視到程式執行的過程中的執行資訊。

image-20201229223818326

5 配置檔案的說明

​ Hadoop配置檔案分兩類:預設配置檔案和自定義配置檔案,只有使用者想修改某一預設配置值時,才需要修改自定義配置檔案,更改相應屬性值。

1)預設的配置檔案

要獲取的預設檔案檔案存放在Hadoop的jar包中的位置
[core-default.xml]hadoop-common-2.7.2.jar/ core-default.xml
[hdfs-default.xml]hadoop-hdfs-2.7.2.jar/ hdfs-default.xml
[yarn-default.xml]hadoop-yarn-common-2.7.2.jar/ yarn-default.xml
[mapred-default.xml]hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml

2)自定義配置檔案

------------------- |
| [core-default.xml] | hadoop-common-2.7.2.jar/ core-default.xml |
| [hdfs-default.xml] | hadoop-hdfs-2.7.2.jar/ hdfs-default.xml |
| [yarn-default.xml] | hadoop-yarn-common-2.7.2.jar/ yarn-default.xml |
| [mapred-default.xml] | hadoop-mapreduce-client-core-2.7.2.jar/ mapred-default.xml |

2)自定義配置檔案

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四個配置檔案存放在$HADOOP_HOME/etc/hadoop這個路徑上,使用者可以根據專案需求重新進行修改配置。

相關文章