Hadoop叢集搭建

hfhsdgzsdgsdg發表於2023-02-21

文章目錄

一、執行環境配置(所有節點)

1、基礎配置

2、配置Host

二、依賴軟體安裝(101節點)

1、安裝JDK

2、安裝Hadoop(root)

3、Hadoop目錄結構

三、本地執行模式(官方WordCount)

1、簡介

2、本地執行模式(官方WordCount)

四、完全分散式執行模式

1、檔案分發指令碼(root)

2、SSH免密登入設定

3、同步檔案

4、叢集節點資源配置

4.1 核心配置檔案(core-site.xml)

4.2 HDFS配置檔案(hdfs-site.xml)

4.3 YARN配置檔案(yarn-site.xml)

4.4 MapReduce配置檔案(mapred-site.xml)

4.5 分發配置檔案

5、群起叢集

5.1 配置workers

5.2 啟動叢集

5.3 其它啟動停止方式

5.4 啟動指令碼

6、檢視相關頁面

7、配置歷史伺服器

8、配置日誌的聚集

9、其它

9.1 常用埠號

9.2 常用頁面

五、遇到問題

1、編輯檔案無許可權('readonly' option is set (add ! to override))

2、Hadoop啟動出錯Cannot assign requested address

一、執行環境配置(所有節點)

所有叢集服務,都需要配置


1、基礎配置

關閉防火牆,關閉防火牆開機自啟


systemctl stop firewalld

systemctl disable firewalld

1

2

建立lydms使用者,並修改lydms使用者的密碼lydms123


useradd lydms

passwd lydms

1

2

配置lydms使用者具有root許可權,方便後期加sudo執行root許可權的命令


[root@hadoop100 ~]# vim /etc/sudoers

## Allow root to run any commands anywhere

root    ALL=(ALL)     ALL

lydms   ALL=(ALL)     NOPASSWD:ALL

1

2

3

4

'readonly' option is set (add ! to override) 檢視5.1解決。


在/opt目錄下建立資料夾


mkdir /opt/module

mkdir /opt/software

1

2

並修改所屬主和所屬組


chown lydms:lydms /opt/module 

chown lydms:lydms /opt/software

1

2



2、配置Host

更新本機名稱(參照下表)


vim /etc/hostname

1

172.27.181.176 hadoop101

172.27.181.177 hadoop102

172.27.181.178 hadoop103

1

2

3

配置Linux克隆機主機名稱對映hosts檔案


vim /etc/hosts

1

172.27.181.176 hadoop101

172.27.181.177 hadoop102

172.27.181.178 hadoop103

1

2

3



重啟虛擬機器


reboot

1

二、依賴軟體安裝(101節點)

只有主節點進行配置


1、安裝JDK

下載JDK


wget https://gitcode.net/weixin_44624117/software/-/raw/master/software/jdk-8u181-linux-x64.tar.gz?inline=false

1

2

解壓檔案


tar -zxvf jdk-8u341-linux-x64.tar.gz -C /opt/module/

1

新增環境變數


vim /etc/profile.d/my_env.sh

1

#JAVA_HOME

export JAVA_HOME=/opt/module/jdk1.8.0_341

export PATH=$PATH:$JAVA_HOME/bin

1

2

3

載入環境變數


source /etc/profile

1

檢視是否安裝完成


java -version

1



2、安裝Hadoop(root)

下載地址


wget hadoop-3.1.3.tar.gz

1

2

解壓到/opt/module/目錄


tar -zxvf /root/hadoop-3.1.3.tar.gz -C /opt/module/

1

新增環境變數


vim /etc/profile.d/my_env.sh

1

#HADOOP_HOME

export HADOOP_HOME=/opt/module/hadoop-3.1.3

export PATH=$PATH:$HADOOP_HOME/bin

export PATH=$PATH:$HADOOP_HOME/sbin

1

2

3

4



載入環境變數


source /etc/profile

1

檢視是否安裝完成


hadoop version

1



3、Hadoop目錄結構



bin目錄:存放對Hadoop相關服務(hdfs,yarn,mapred)進行操作的指令碼。

etc目錄:Hadoop的配置檔案目錄,存放Hadoop的配置檔案。

lib目錄:存放Hadoop的本地庫(對資料進行壓縮解壓縮功能)。

sbin目錄:存放啟動或停止Hadoop相關服務的指令碼。

share目錄:存放Hadoop的依賴jar包、文件、和官方案例。

三、本地執行模式(官方WordCount)

1、簡介

Hadoop官方網站:


Hadoop執行模式包括:本地模式、偽分散式模式以及完全分散式模式。


本地模式:單機執行,只是用來演示一下官方案例。生產環境不用。

偽分散式模式:也是單機執行,但是具備Hadoop叢集的所有功能,一臺伺服器模擬一個分散式的環境。個別缺錢的公司用來測試,生產環境不用。

完全分散式模式:多臺伺服器組成分散式環境。生產環境使用。

2、本地執行模式(官方WordCount)

在hadoop-3.1.3檔案下面建立一個wcinput資料夾


mkdir /opt/module/hadoop-3.1.3/wcinput

1

在wcinput檔案下建立一個word.txt檔案


vim /opt/module/hadoop-3.1.3/wcinput/word.txt

1

hadoop yarn

hadoop mapreduce

lydms

lydms

1

2

3

4

執行單機Hadoop


hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput

1

檢視執行結果


cat wcoutput/part-r-00000

1



四、完全分散式執行模式

三臺資源列表


172.27.181.176 hadoop101

172.27.181.177 hadoop102

172.27.181.178 hadoop103

1

2

3

1、檔案分發指令碼(root)

新建檔案xsync


vim /bin/xsync

1

#!/bin/bash


#1. 判斷引數個數

if [ $# -lt 1 ]

then

    echo "Not Enough Arguement!"

    exit

fi


#2. 遍歷叢集所有機器

for host in hadoop101 hadoop102 hadoop103

do

    echo ====================  $host  ====================

    #3. 遍歷所有目錄,挨個傳送


    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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

新增執行許可權


chmod +x /bin/xsync

1

2、SSH免密登入設定

原理:




生成公私鑰:


ssh-keygen -t rsa

1

檢視生成檔案


cd /home/lydms/.ssh/

ll

1

2



known_hosts 記錄ssh訪問過計算機的公鑰(public key)

id_rsa 生成的私鑰

id_rsa.pub 生成的公鑰

authorized_keys 存放授權過的無密登入伺服器公鑰

將公鑰複製到要免密登入的目標機器上(輸入相應密碼)


幾臺伺服器之間都要互相配置


ssh-copy-id hadoop101

ssh-copy-id hadoop102

ssh-copy-id hadoop103

1

2

3

測試:


ssh hadoop001

1



還需要配置(叢集各個節點之間免密溝通):


hadoop101上採用root賬號,配置一下免密登入到hadoop101、hadoop102、hadoop103。

hadoop102上採用root賬號,配置一下免密登入到hadoop101、hadoop102、hadoop103。

hadoop103上採用root賬號,配置一下免密登入到hadoop101、hadoop102、hadoop103;

最終效果:




3、同步檔案

同步環境變數/etc/profile.d/my_env.sh


同步JDK、Hadoop:/opt/model


同步環境變數


xsync /etc/profile.d/my_env.sh

# 在各個節點伺服器中載入環境變數(hadoop001、hadoop002、hadoop003)

source /etc/profile

1

2

3

同步JDK、Hadoop


xsync /opt/module/

1

4、叢集節點資源配置

NameNode和SecondaryNameNode不要安裝在同一臺伺服器。

ResourceManager也很消耗記憶體,不要和NameNode、SecondaryNameNode配置在同一臺機器上。

Hadoop001 Hadoop002 Hadoop003

HDFS NameNode

DataNode DataNode SecondaryNameNode

DataNode

YARN NodeManager ResourceManager

NodeManager NodeManager

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


預設配置檔案。


預設檔案 檔案存放在Hadoop的jar包中的位置

[core-default.xml] hadoop-common-3.1.3.jar/core-default.xml

[hdfs-default.xml] hadoop-hdfs-3.1.3.jar/hdfs-default.xml

[yarn-default.xml] hadoop-yarn-common-3.1.3.jar/yarn-default.xml

[mapred-default.xml] hadoop-mapreduce-client-core-3.1.3.jar/mapred-default.xml

自定義配置檔案:


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


4.1 核心配置檔案(core-site.xml)

cd $HADOOP_HOME/etc/hadoop

vim core-site.xml

1

2

檔案內容:


<configuration>

    <!-- 指定NameNode的地址 -->

    <property>

        <name>fs.defaultFS</name>

        <value>hdfs://hadoop101:8020</value>

    </property>


    <!-- 指定hadoop資料的儲存目錄 -->

    <property>

        <name>hadoop.tmp.dir</name>

        <value>/opt/module/hadoop-3.1.3/data</value>

    </property>


    <!-- 配置HDFS網頁登入使用的靜態使用者為lydms -->

    <property>

        <name>hadoop.http.staticuser.user</name>

        <value>lydms</value>

    </property>

</configuration>


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

4.2 HDFS配置檔案(hdfs-site.xml)

vim hdfs-site.xml

1

檔案內容:


<configuration>

        <!-- nn web端訪問地址-->

        <property>

        <name>dfs.namenode.http-address</name>

        <value>hadoop101:9870</value>

    </property>


        <!-- 2nn web端訪問地址-->

    <property>

        <name>dfs.namenode.secondary.http-address</name>

        <value>hadoop103:9868</value>

    </property>

</configuration>

1

2

3

4

5

6

7

8

9

10

11

12

13

4.3 YARN配置檔案(yarn-site.xml)

vim yarn-site.xml

1

<configuration>

    <!-- 指定MR走shuffle -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>


    <!-- 指定ResourceManager的地址-->

    <property>

        <name>yarn.resourcemanager.hostname</name>

        <value>hadoop102</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>


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

4.4 MapReduce配置檔案(mapred-site.xml)

vim mapred-site.xml

1

<configuration>

        <!-- 指定MapReduce程式執行在Yarn上 -->

    <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

    </property>

</configuration>

1

2

3

4

5

6

7

4.5 分發配置檔案

xsync /opt/module/hadoop-3.1.3/etc/hadoop/

1

5、群起叢集

5.1 配置workers

新增節點配置檔案


vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

1

hadoop101

hadoop102

hadoop103

1

2

3

同步配置


xsync /opt/module/hadoop-3.1.3/etc

1

5.2 啟動叢集

如果叢集是第一次啟動,需要在hadoop001節點格式化NameNode。


(注意:格式化NameNode,會產生新的叢集id,導致NameNode和DataNode的叢集id不一致,叢集找不到已往資料。如果叢集在執行過程中報錯,需要重新格式化NameNode的話,一定要先停止namenode和datanode程式,並且要刪除所有機器的data和logs目錄,然後再進行格式化。)


hdfs namenode -format

1

啟動HDFS


# 啟動

/opt/module/hadoop-3.1.3/sbin/start-dfs.sh

1

2



啟動YARN(配置了ResourceManager的節點hadoop002)


# 啟動

/opt/module/hadoop-3.1.3/sbin/start-yarn.sh

1

2



5.3 其它啟動停止方式

啟動/停止HDFS


# 整體啟動/停止HDFS

start-dfs.sh/stop-dfs.sh


# 分別啟動/停止HDFS元件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

1

2

3

4

5

啟動/停止YARN


# 整體啟動/停止YARN

start-yarn.sh/stop-yarn.sh

# 分別啟動/停止YARN元件

yarn --daemon start/stop resourcemanager/nodemanager

1

2

3

4

5.4 啟動指令碼

新建啟動/停止叢集指令碼


cd /home/lydms/bin

vim myhadoop.sh

1

2

#!/bin/bash


if [ $# -lt 1 ]

then

    echo "No Args Input..."

    exit ;

fi


case $1 in

"start")

        echo " ======啟動 hadoop叢集 ======="

        echo " --------------- 啟動 hdfs ---------------"

        ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"

        echo " --------------- 啟動 yarn ---------------"

        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"

;;

"stop")

        echo " ==========關閉 hadoop叢集 ========="

        echo " --------------- 關閉 yarn ---------------"

        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"

        echo " --------------- 關閉 hdfs ---------------"

        ssh hadoop101 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"

;;

*)

    echo "Input Args Error..."

;;

esac


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

賦予指令碼執行許可權


chmod +x myhadoop.sh


1

2

新建Java程式指令碼:jpsall


cd /home/lydms/bin

vim jpsall

1

2

#!/bin/bash


for host in hadoop101 hadoop102 hadoop103

do

    echo =============== $host ===============

    ssh $host jps

done

1

2

3

4

5

6

7

賦予指令碼執行許可權


chmod +x jpsall

1

分發/home/atguigu/bin目錄,保證自定義指令碼在三臺機器上都可以使用


xsync /home/lydms/bin/

1



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026759/viewspace-2936123/,如需轉載,請註明出處,否則將追究法律責任。

相關文章