hadoop(本地模式,僞分佈式運行模式,完全分佈式運行模式)

4.1 本地運行模式

4.1.1 官方Grep案例(參照官網文檔)

1.    創建在hadoop-2.7.2文件下面創建一個input文件夾

[atguigu@hadoop101 hadoop-2.7.2]$ mkdir input

2.    將Hadoop的xml配置文件複製到input

[atguigu@hadoop101 hadoop-2.7.2]$ cp etc/hadoop/*.xml input

3.    執行share目錄下的MapReduce程序

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar

share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar grep input output 'dfs[a-z.]+'

注意:output必須不能存在,否則會報錯

4.    查看輸出結果

[atguigu@hadoop101 hadoop-2.7.2]$ cat output/*

4.1.2 官方WordCount案例

1.    創建在hadoop-2.7.2文件下面創建一個wcinput文件夾

[atguigu@hadoop101 hadoop-2.7.2]$ mkdir wcinput

2.    在wcinput文件下創建一個wc.input文件

[atguigu@hadoop101 hadoop-2.7.2]$ cd wcinput

[atguigu@hadoop101 wcinput]$ touch wc.input

3.    編輯wc.input文件

[atguigu@hadoop101 wcinput]$ vi wc.input

在文件中輸入如下內容

hadoop yarn

hadoop mapreduce

atguigu

atguigu

保存退出::wq

4.    回到Hadoop目錄/opt/module/hadoop-2.7.2

5.    執行程序

[atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar

 share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput

6.    查看結果

[atguigu@hadoop101 hadoop-2.7.2]$ cat wcoutput/part-r-00000

atguigu 2

hadoop  2

mapreduce       1

yarn    1

4.2 僞分佈式運行模式

4.2.1 啓動HDFS並運行MapReduce程序

1.    分析

       (1)配置集羣

       (2)啓動、測試集羣增、刪、查

       (3)執行WordCount案例

2.    執行步驟

(1)配置集羣

              (a)配置:hadoop-env.sh

Linux系統中獲取JDK的安裝路徑:

[atguigu@ hadoop101 ~]# echo $JAVA_HOME

/opt/module/jdk1.8.0_144

修改JAVA_HOME 路徑:

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

(b)配置:core-site.xml

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

<property>

<name>fs.defaultFS</name>

    <value>hdfs://hadoop101:9000</value>

</property>

 

<!-- 指定Hadoop運行時產生文件的存儲目錄 -->

<property>

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

   <value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

(c)配置:hdfs-site.xml

<!-- 指定HDFS副本的數量 -->

<property>

   <name>dfs.replication</name>

   <value>1</value>

</property>

(2)啓動集羣

(a)格式化NameNode(第一次啓動時格式化,以後就不要總格式化)

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs namenode -format

              (b)啓動NameNode

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start namenode

              (c)啓動DataNode

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/hadoop-daemon.sh start datanode

(3)查看集羣

              (a)查看是否啓動成功

[atguigu@hadoop101 hadoop-2.7.2]$ jps

13586 NameNode

13668 DataNode

13786 Jps

注意:jpsJDK中的命令,不是Linux命令。不安裝JDK不能使用jps

              (b)web端查看HDFS文件系統

http://hadoop101:50070/dfshealth.html#tab-overview

注意:如果不能查看,看如下帖子處理

http://www.cnblogs.com/zlslch/p/6604189.html

              (c)查看產生的Log日誌

                說明:在企業中遇到Bug時,經常根據日誌提示信息去分析問題、解決Bug

當前目錄:/opt/module/hadoop-2.7.2/logs

[atguigu@hadoop101 logs]$ ls

hadoop-atguigu-datanode-hadoop.atguigu.com.log

hadoop-atguigu-datanode-hadoop.atguigu.com.out

hadoop-atguigu-namenode-hadoop.atguigu.com.log

hadoop-atguigu-namenode-hadoop.atguigu.com.out

SecurityAuth-root.audit

[atguigu@hadoop101 logs]# cat hadoop-atguigu-datanode-hadoop101.log

d)思考:爲什麼不能一直格式化NameNode,格式化NameNode,要注意什麼?

[atguigu@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/name/current/

[atguigu@hadoop101 current]$ cat VERSION

clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837

 

[atguigu@hadoop101 hadoop-2.7.2]$ cd data/tmp/dfs/data/current/

clusterID=CID-f0330a58-36fa-4a2a-a65f-2688269b5837

 

注意:格式化NameNode,會產生新的集羣id,導致NameNodeDataNode的集羣id不一致,集羣找不到已往數據。所以,格式NameNode時,一定要停止相關進程,刪除data數據和log日誌,然後再格式化NameNode

(4)操作集羣

              (a)在HDFS文件系統上創建一個input文件夾

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -mkdir -p /user/atguigu/input

              (b)將測試文件內容上傳到文件系統上

[atguigu@hadoop101 hadoop-2.7.2]$bin/hdfs dfs -put wcinput/wc.input

  /user/atguigu/input/

              (c)查看上傳的文件是否正確

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -ls  /user/atguigu/input/

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat  /user/atguigu/ input/wc.input

              (d)運行MapReduce程序

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar

share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input/ /user/atguigu/output

              (e)查看輸出結果

命令行查看:

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*

瀏覽器查看,如圖2-34所示

 

圖2-34 查看output文件

              (f)將測試文件內容下載到本地

[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -get /user/atguigu/output/part-r-00000 ./wcoutput/

(g)刪除輸出結果

[atguigu@hadoop101 hadoop-2.7.2]$ hdfs dfs -rm -r /user/atguigu/output

4.2.2 啓動YARN並運行MapReduce程序

1.    分析

       (1)配置集羣在YARN上運行MR

       (2)啓動、測試集羣增、刪、查

       (3)在YARN上執行WordCount案例

2.    執行步驟      

       (1)配置集羣

              (a)配置yarn-env.sh

配置一下JAVA_HOME

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

(b)配置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>hadoop101</value>

</property>

              (c)配置:mapred-env.sh

配置一下JAVA_HOME

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

              (d)配置: (對mapred-site.xml.template重新命名爲) mapred-site.xml

[atguigu@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml

[atguigu@hadoop101 hadoop]$ vi mapred-site.xml

 

<!-- 指定MR運行在YARN上 -->

<property>

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

     <value>yarn</value>

</property>

(2)啓動集羣

(a)啓動前必須保證NameNode和DataNode已經啓動

(b)啓動ResourceManager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager

(c)啓動NodeManager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager

       3)集羣操作

(a)YARN的瀏覽器頁面查看,如圖2-35所示

http://hadoop101:8088/cluster

 

圖2-35 YARN的瀏覽器頁面

              (b)刪除文件系統上的output文件

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output

              (c)執行MapReduce程序

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hadoop jar

 share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input  /user/atguigu/output

              (d)查看運行結果,如圖2-36所示

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -cat /user/atguigu/output/*

 

圖2-36 查看運行結果

4.2.3 配置歷史服務器

爲了查看程序的歷史運行情況,需要配置一下歷史服務器。具體配置步驟如下:

1.    配置mapred-site.xml

[atguigu@hadoop101 hadoop]$ vi mapred-site.xml

在該文件裏面增加如下配置。

<!-- 歷史服務器端地址 -->

<property>

<name>mapreduce.jobhistory.address</name>

<value>hadoop101:10020</value>

</property>

 

<!-- 歷史服務器web端地址 -->

<property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop101:19888</value>

</property>

2.    啓動歷史服務器

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver

3.    查看歷史服務器是否啓動

[atguigu@hadoop101 hadoop-2.7.2]$ jps

4.    查看JobHistory

http://hadoop101:19888/jobhistory

4.2.4 配置日誌的聚集

日誌聚集概念:應用運行完成以後,將程序運行日誌信息上傳到HDFS系統上。

日誌聚集功能好處:可以方便的查看到程序運行詳情,方便開發調試。

注意:開啓日誌聚集功能,需要重新啓動NodeManager ResourceManagerHistoryManager

開啓日誌聚集功能具體步驟如下:

  1. 配置yarn-site.xml

[atguigu@hadoop101 hadoop]$ vi 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>

  1. 關閉NodeManager 、ResourceManager和HistoryManager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop resourcemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh stop nodemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh stop historyserver

  1. 啓動NodeManager 、ResourceManager和HistoryManager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start resourcemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/yarn-daemon.sh start nodemanager

[atguigu@hadoop101 hadoop-2.7.2]$ sbin/mr-jobhistory-daemon.sh start historyserver

  1. 刪除HDFS上已經存在的輸出文件

[atguigu@hadoop101 hadoop-2.7.2]$ bin/hdfs dfs -rm -R /user/atguigu/output

  1. 執行WordCount程序

[atguigu@hadoop101 hadoop-2.7.2]$ hadoop jar

 share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /user/atguigu/input /user/atguigu/output

  1. 查看日誌,如圖2-37,2-38,2-39所示

http://hadoop101:19888/jobhistory

 

圖2-37  Job History

 

圖2-38 job運行情況

 

圖2-39 查看日誌

4.2.5 配置文件說明

Hadoop配置文件分兩類:默認配置文件和自定義配置文件,只有用戶想修改某一默認配置值時,才需要修改自定義配置文件,更改相應屬性值。

2.資料\01_jar\03_linux編譯過的hadoop jar\hadoop-2.7.2\share\hadoop下查找所有jar包,放到\2.資料\01_jar\_lib目錄下查看

(1)默認配置文件:

表2-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-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四個配置文件存放在$HADOOP_HOME/etc/hadoop這個路徑上,用戶可以根據項目需求重新進行修改配置。

4.3 完全分佈式運行模式(開發重點)

分析:

       1)準備3臺客戶機(關閉防火牆、靜態ip、主機名稱

       2)安裝JDK

       3)配置環境變量

       4)安裝Hadoop

       5)配置環境變量

6)配置集羣

7)單點啓動

       8)配置ssh

       9)羣起並測試集羣

4.3.1 虛擬機準備

詳見3.1章。

4.3.2 編寫集羣分發腳本xsync

1.    scp(secure copy)安全拷貝

(1)scp定義:

scp可以實現服務器與服務器之間的數據拷貝。(from server1 to server2)

       (2)基本語法

scp    -r          $pdir/$fname              $user@hadoop$host:$pdir/$fname

命令   遞歸       要拷貝的文件路徑/名稱    目的用戶@主機:目的路徑/名稱

 

注意:

如果目標目錄不存在,直接將源test放到opt目錄下

scp -r test/ root@hadoop102:/opt/目標目錄/

 

如果目標目錄存在,將源test放到opt/test目錄下

scp -r test/ root@hadoop102:/opt/目標目錄/

 

將源內容直接拷貝到目標目錄下

scp -r test/* root@hadoop102:/opt/目標目錄/

(3)案例實操

(a)在hadoop101上,將hadoop101中/opt/module目錄下的軟件拷貝到hadoop102上。

[atguigu@hadoop101 /]$ scp -r /opt/module  root@hadoop102:/opt/module

(b)在hadoop103上,將hadoop101服務器上的/opt/module目錄下的軟件拷貝到hadoop103上。

[atguigu@hadoop103 opt]$sudo scp -r atguigu@hadoop101:/opt/module root@hadoop103:/opt./module

(c)在hadoop103上操作將hadoop101中/opt/module目錄下的軟件拷貝到hadoop104上。

[atguigu@hadoop103 opt]$ scp -r atguigu@hadoop101:/opt/module root@hadoop104:/opt/module

注意:拷貝過來的/opt/module目錄,別忘了在hadoop102hadoop103hadoop104上修改所有文件的,所有者和所有者組。sudo chown atguigu:atguigu -R /opt/module

(d)將hadoop101中/etc/profile文件拷貝到hadoop102的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop102:/etc/profile

(e)將hadoop101中/etc/profile文件拷貝到hadoop103的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop103:/etc/profile

(f)將hadoop101中/etc/profile文件拷貝到hadoop104的/etc/profile上。

[atguigu@hadoop101 ~]$ sudo scp /etc/profile root@hadoop104:/etc/profile

注意:拷貝過來的配置文件別忘了source一下/etc/profile,。

2.    rsync 遠程同步工具

rsync主要用於備份和鏡像。具有速度快、避免複製相同內容和支持符號鏈接的優點。

rsyncscp區別:rsync做文件的複製要比scp的速度快,rsync只對差異文件做更新。scp是把所有文件都複製過去。

       (1)基本語法

rsync    -rvl       $pdir/$fname              $user@hadoop$host:$pdir/$fname

命令   選項參數   要拷貝的文件路徑/名稱    目的用戶@主機:目的路徑/名稱

         選項參數說明

表2-2

選項

功能

-r

遞歸

-v

顯示覆制過程

-l

拷貝符號連接

(2)案例實操

              (a)把hadoop101機器上的/opt/software目錄同步到hadoop102服務器的root用戶下的/opt/目錄

[atguigu@hadoop101 opt]$ rsync -rvl /opt/software/ root@hadoop102:/opt/software

3.    xsync集羣分發腳本

(1)需求:循環複製文件到所有節點的相同目錄下

       (2)需求分析:

(a)rsync命令原始拷貝:

rsync  -rvl     /opt/module              root@hadoop103:/opt/

              (b)期望腳本:

xsync要同步的文件名稱

              c)說明:在/home/atguigu/bin這個目錄下存放的腳本,atguigu用戶可以在系統任何地方直接執行。

(3)腳本實現

(a)在/home/atguigu目錄下創建bin目錄,並在bin目錄下xsync創建文件,文件內容如下:

[atguigu@hadoop102 ~]$ mkdir bin

[atguigu@hadoop102 ~]$ cd bin/

[atguigu@hadoop102 bin]$ touch xsync

[atguigu@hadoop102 bin]$ vi xsync

在該文件中編寫如下代碼

#!/bin/bash

#1 獲取輸入參數個數,如果沒有參數,直接退出

pcount=$#

if((pcount==0)); then

echo no args;

exit;

fi

 

#2 獲取文件名稱

p1=$1

fname=`basename $p1`

echo fname=$fname

 

#3 獲取上級目錄到絕對路徑 –P指向實際物理地址,防止軟連接

pdir=`cd -P $(dirname $p1); pwd`

echo pdir=$pdir

 

#4 獲取當前用戶名稱

user=`whoami`

 

#5 循環

for((host=103; host<105; host++)); do

        echo ------------------- hadoop$host --------------

        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir

done

(b)修改腳本 xsync 具有執行權限

[atguigu@hadoop102 bin]$ chmod 777 xsync

(c)調用腳本形式:xsync 文件名稱

[atguigu@hadoop102 bin]$ xsync /home/atguigu/bin

注意:如果將xsync放到/home/atguigu/bin目錄下仍然不能實現全局使用,可以將xsync移動到/usr/local/bin目錄下。

4.3.3 集羣配置

1.    集羣部署規劃

表2-3

 

hadoop102

hadoop103

hadoop104

HDFS

 

NameNode

DataNode

 

DataNode

SecondaryNameNode

DataNode

YARN

 

NodeManager

ResourceManager

NodeManager

 

NodeManager

2.    配置集羣

       (1)核心配置文件

配置core-site.xml

[atguigu@hadoop102 hadoop]$ vi core-site.xml

在該文件中編寫如下配置

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

<property>

     <name>fs.defaultFS</name>

      <value>hdfs://hadoop102:9000</value>

</property>

 

<!-- 指定Hadoop運行時產生文件的存儲目錄 -->

<property>

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

     <value>/opt/module/hadoop-2.7.2/data/tmp</value>

</property>

       (2)HDFS配置文件

配置hadoop-env.sh

[atguigu@hadoop102 hadoop]$ vi hadoop-env.sh

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

配置hdfs-site.xml

[atguigu@hadoop102 hadoop]$ vi hdfs-site.xml

在該文件中編寫如下配置

<property>

     <name>dfs.replication</name>

     <value>3</value>

</property>

 

<!-- 指定Hadoop輔助名稱節點主機配置 -->

<property>

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

      <value>hadoop104:50090</value>

</property>

(3)YARN配置文件

配置yarn-env.sh

[atguigu@hadoop102 hadoop]$ vi yarn-env.sh

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

配置yarn-site.xml

[atguigu@hadoop102 hadoop]$ vi 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>hadoop103</value>

</property>

(4)MapReduce配置文件

配置mapred-env.sh

[atguigu@hadoop102 hadoop]$ vi mapred-env.sh

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

配置mapred-site.xml

[atguigu@hadoop102 hadoop]$ cp mapred-site.xml.template mapred-site.xml

 

[atguigu@hadoop102 hadoop]$ vi mapred-site.xml

在該文件中增加如下配置

<!-- 指定MR運行在Yarn上 -->

<property>

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

     <value>yarn</value>

</property>

3.在集羣上分發配置好的Hadoop配置文件

[atguigu@hadoop102 hadoop]$ xsync /opt/module/hadoop-2.7.2/

4.查看文件分發情況

[atguigu@hadoop103 hadoop]$ cat /opt/module/hadoop-2.7.2/etc/hadoop/core-site.xml

4.3.4 集羣單點啓動

(1)如果集羣是第一次啓動,需要格式化NameNode

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop namenode -format

(2)在hadoop102上啓動NameNode

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start namenode

[atguigu@hadoop102 hadoop-2.7.2]$ jps

3461 NameNode

(3)在hadoop102、hadoop103以及hadoop104上分別啓動DataNode

[atguigu@hadoop102 hadoop-2.7.2]$ hadoop-daemon.sh start datanode

[atguigu@hadoop102 hadoop-2.7.2]$ jps

3461 NameNode

3608 Jps

3561 DataNode

[atguigu@hadoop103 hadoop-2.7.2]$ hadoop-daemon.sh start datanode

[atguigu@hadoop103 hadoop-2.7.2]$ jps

3190 DataNode

3279 Jps

[atguigu@hadoop104 hadoop-2.7.2]$ hadoop-daemon.sh start datanode

[atguigu@hadoop104 hadoop-2.7.2]$ jps

3237 Jps

3163 DataNode

 

訪問http://hadoop102:50070/查看效果

測試

在hadoop102上創建目錄

在hadoop104上上傳文件

在hadoop103上刪除目錄

4)思考:每次都一個一個節點啓動,如果節點數增加到1000個怎麼辦?

       早上來了開始一個一個節點啓動,到晚上下班剛好完成,下班?

4.3.5 SSH無密登錄配置

1.    配置ssh

(1)基本語法

ssh另一臺電腦的ip地址

(2)ssh連接時出現Host key verification failed的解決方法

[atguigu@hadoop102 opt] $ ssh 192.168.1.103

The authenticity of host '192.168.1.103 (192.168.1.103)' can't be established.

RSA key fingerprint is cf:1e:de:d7:d0:4c:2d:98:60:b4:fd:ae:b1:2d:ad:06.

Are you sure you want to continue connecting (yes/no)?

Host key verification failed.

(3)解決方案如下:直接輸入yes

2.    無密鑰配置

(1)免密登錄原理,如圖2-40所示

圖2-40  免密登陸原理

(2)生成公鑰和私鑰:

[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa

然後敲(三個回車),就會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)

(3)將公鑰拷貝到要免密登錄的目標機器上

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop103

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop104

注意:ssh訪問自己也需要輸入密碼,所以我們需要將公鑰也拷貝給102

[atguigu@hadoop102 .ssh]$ ssh-copy-id hadoop102

注意:

還需要在ResourceManager節點hadoop103上採用atguigu賬號配置一下無密登錄到hadoop102hadoop103hadoop104服務器上。

如果在hadoop102上需要採用root賬號訪問其它服務器,配置一下無密登錄到hadoop102hadoop103hadoop104

3.    .ssh文件夾下(~/.ssh)的文件功能解釋

表2-4

known_hosts

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

id_rsa

生成的私鑰

id_rsa.pub

生成的公鑰

authorized_keys

存放授權過得無密登錄服務器公鑰

4.3.6 羣起集羣

1.    配置slaves

/opt/module/hadoop-2.7.2/etc/hadoop/slaves

[atguigu@hadoop102 hadoop]$ vi slaves

在該文件中增加如下內容:

hadoop102

hadoop103

hadoop104

注意:該文件中添加的內容結尾不允許有空格,文件中不允許有空行。

同步所有節點配置文件

[atguigu@hadoop102 hadoop]$ xsync slaves

2.    啓動集羣

       (1)如果集羣是第一次啓動,需要格式化NameNode(注意格式化之前,一定要先停止上次啓動的所有namenodedatanode進程,然後再刪除datalog數據)

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hdfs namenode -format

2)啓動HDFS

[atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh

[atguigu@hadoop102 hadoop-2.7.2]$ jps

4166 NameNode

4482 Jps

4263 DataNode

[atguigu@hadoop103 hadoop-2.7.2]$ jps

3218 DataNode

3288 Jps

 

[atguigu@hadoop104 hadoop-2.7.2]$ jps

3221 DataNode

3283 SecondaryNameNode

3364 Jps

(3)啓動YARN

[atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

注意:NameNodeResourceManger如果不是同一臺機器,不能在NameNode上啓動 YARN,應該在ResouceManager所在的機器上啓動YARN

(4)Web端查看SecondaryNameNode

(a)瀏覽器中輸入:http://hadoop104:50090/status.html

              (b)查看SecondaryNameNode信息,如圖2-41所示。

 

圖2-41 SecondaryNameNode的Web端

3.    集羣基本測試

(1)上傳文件到集羣

         上傳小文件

[atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfs -mkdir -p /user/atguigu/input

[atguigu@hadoop102 hadoop-2.7.2]$ hdfs dfs -put wcinput/wc.input /user/atguigu/input

         上傳大文件

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -put

 /opt/software/hadoop-2.7.2.tar.gz  /user/atguigu/input

(2)上傳文件後查看文件存放在什麼位置

(a)查看HDFS文件存儲路徑

[atguigu@hadoop102 subdir0]$ pwd

/opt/module/hadoop-2.7.2/data/tmp/dfs/data/current/BP-938951106-192.168.10.107-1495462844069/current/finalized/subdir0/subdir0

(b)查看HDFS在磁盤存儲文件內容

[atguigu@hadoop102 subdir0]$ cat blk_1073741825

hadoop yarn

hadoop mapreduce

atguigu

atguigu

(3)拼接

-rw-rw-r--. 1 atguigu atguigu 134217728 5月  23 16:01 blk_1073741836

-rw-rw-r--. 1 atguigu atguigu   1048583 5月  23 16:01 blk_1073741836_1012.meta

-rw-rw-r--. 1 atguigu atguigu  63439959 5月  23 16:01 blk_1073741837

-rw-rw-r--. 1 atguigu atguigu    495635 5月  23 16:01 blk_1073741837_1013.meta

[atguigu@hadoop102 subdir0]$ cat blk_1073741836>>tmp.file

[atguigu@hadoop102 subdir0]$ cat blk_1073741837>>tmp.file

[atguigu@hadoop102 subdir0]$ tar -zxvf tmp.file

(4)下載

[atguigu@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -get

 /user/atguigu/input/hadoop-2.7.2.tar.gz ./

4.3.7 集羣啓動/停止方式總結

1.    各個服務組件逐一啓動/停止

       (1)分別啓動/停止HDFS組件

              hadoop-daemon.sh  start / stop  namenode / datanode / secondarynamenode

       (2)啓動/停止YARN

              yarn-daemon.sh  start / stop  resourcemanager / nodemanager

       這種方式的使用場景,一般集羣已經啓動完畢了,單獨添加或者刪除節點的時候使用

2.    各個模塊分開啓動/停止(配置ssh是前提)常用

       (1)整體啓動/停止HDFS

              start-dfs.sh   /  stop-dfs.sh

       (2)整體啓動/停止YARN

              start-yarn.sh  /  stop-yarn.sh

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章