天天看點

大資料—Hadoop 3.x—二.hadoop搭建

1.第一個demo

使用hadoop的mapReduce自帶的demo程式統計單詞出現的次數

建立檔案wcinput

Bash

複制代碼

echo 123 aa bb > wcinput

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount wcinput ./wcoutput

檢視結果

cat wcoutput/part-r-00000

大資料—Hadoop 3.x—二.hadoop搭建

2.配置三台伺服器分發腳本

  1. 分發腳本

#!/bin/bash

#1. 判斷參數個數

if [ $# -lt 1 ]

then

        echo Not Enough Arguement!

        exit;

fi

#2. 周遊叢集所有機器

for host in hadoop17 hadoop18 hadoop19

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 is not exist!

                fi

        done

done

存放至usr/local/bin下

  1. 配置ssh免密登入

#生成rsa密鑰對

ssh-keygen -t rsa

#同步ssh公鑰

ssh-copy-id hadoop17

ssh-copy-id hadoop18

ssh-copy-id hadoop19

需要現在/etc/hosts中配置hadoop17/18/19的ip位址

3.叢集配置

3.1 叢集規劃

hadoop17 hadoop18 hadoop19
HDFS NAMENODE,DATANODE DATANODE SECONDNAMENODE,DATANODE
YARN NODEMANAGER RESOURCEMANAGER,NODEMANAGER

3.2 叢集配置

叢集配置,參照上述規劃配置:

3.2.1 根據叢集規劃,配置HDFS和YARN

配置HDFS的NameNode,DataNode

cd /opt/module/hadoop-3.3.1/etc/hadoop

vim core-site.xml

# 在configuration中增加如下配置

    <!-- 配置NameNode的位址 -->

        <property>

                <name>fs.defaultFS</name>

                <value>hdfs://hadoop17:8020</value>

        </property>

        <!-- 配置hadoop的資料存儲目錄 -->

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

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

vim hdfs-site.xml

    <!-- 配置nn web通路位址 -->

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

                <value>hadoop17:9870</value>

        <!-- 配置2nn web通路位址 -->

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

                <value>hadoop19:9868</value>

vim yarn-site.xml

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

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

                <value>mapreduce_shuffle</value>

        <!-- 指定ResourceManager位址 -->

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

                <value>hadoop18</value>

vim mapred-site.xml

    <!-- 指定MR運作在yarn上 -->

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

                <value>yarn</value>

上述配置在hadoop17節點進行,然後分發至其他兩台伺服器

xsync hadoop/

3.2.2 配置workers

vim workers

#配置17/18/19

3.2.3 初始化HDFS

隻有第一次啟動時需要初始化

hdfs namenode -format

3.2.4 啟動HDFS叢集

sbin/start-dfs.sh

啟動報錯,ERROR: Attempting to operate on hdfs namenode as root

ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.

大資料—Hadoop 3.x—二.hadoop搭建

使用root使用者,需要配置如下環境變量:

export HDFS_NAMENODE_USER="root"

export HDFS_DATANODE_USER="root"

export HDFS_SECONDARYNAMENODE_USER="root"

export YARN_RESOURCEMANAGER_USER="root"

export YARN_NODEMANAGER_USER="root"

# 在系統變量中配置或者在 啟動/停止腳本中配置  sbin/start-dfs.sh sbin/stop-dfs.sh

叢集啟動成功的标志:

  1. 三台伺服器 jps可以看到啟動的服務
  2. web通路 http://192.168.164.17:9870/
    1. 記得關閉防火牆或修改防火牆政策

3.2.5 啟動yarn叢集

根據yarn叢集規劃,RM在18節點

cd /opt/module/hadoop-3.3.1/sbin/

start-yarn.sh

驗證yarn叢集啟動成功的兩種方式:

  1. 三台伺服器 jps可以看到啟動的服務,檢視是否包含RM/NM
  2. http://192.168.164.18:8088/
    1. 記得關閉18節點防火牆或者修改防火牆政策