天天看點

搭建Hadoop完全分布式環境

資料來源,阿裡雲大資料開發學習視訊

分析:

1)準備3台客戶機(關閉防火牆、靜态ip、主機名稱,hosts配置)

2)安裝JDK

3)配置環境變量

4)安裝Hadoop

5)配置環境變量

6)配置叢集

7)單點啟動

8)配置ssh

9)群起并測試叢集

4.3.1虛拟機準備

4.3.2編寫叢集分發腳本xsync

1.scp(securecopy)安全拷貝

(1)scp定義:

scp可以實作伺服器與伺服器之間的資料拷貝。(fromserver1toserver2)

(2)基本文法

scp-r$pdir/[email protected]$host:$pdir/$fname

指令遞歸要拷貝的檔案路徑/名稱目的使用者@主機:目的路徑/名稱

2.rsync主要用于備份和鏡像。具有速度快、避免複制相同内容和支援符号連結的優點。

rsync和scp差別:用rsync做檔案的複制要比scp的速度快,rsync隻對差異檔案做更

新。scp是把所有檔案都複制過去。

(1)基本文法

rsync-rvl$pdir/[email protected]$host:$pdir/$fname

指令選項參數要拷貝的檔案路徑/名稱目的使用者@主機:目的路徑/名稱

(2)需求分析:

(a)rsync指令原始拷貝:

rsync  -rvl  /opt/module  [email protected]:/opt/

(b)期望腳本:

xsync要同步的檔案名稱

(c)說明:在/home/hadoop/bin這個目錄下存放的腳本,hadoop使用者可以在系統

任何地方直接執行。

#!/bin/bash
#1擷取輸入參數個數,如果沒有參數,直接退出
pcount=$#
if((pcount==0));then
echo no args;
exit;
fi
#2擷取檔案名稱
p1=$1
fname=`basename $p1`
echo fname=$fname
#3擷取上級目錄到絕對路徑
pdir=`cd -P $(dirname $p1);pwd`
echopdir=$pdir
#4擷取目前使用者名稱
user=`whoami`
#5循環
for((host=133;host<135;host++));do
  echo ------------------- hadoop$host --------------
  rsync -rvl $pdir/$fname [email protected]$host:$pdir
done
           

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

chmod 777  xsync

(c) 調用同步腳本

xsync/home/atguigu/bin

4.3.3叢集配置

1.叢集部署規劃(hdfs初始化在Hadoop132,yarn啟動在Hadoop133)

2-3 叢集配置

HADOOP132 HAdoop133 HAdoop133
HDFS

DataNode

NameNode

DataNode

DataNode

SecondaryNameNode

YARN NodeManager

ResourceManager

NodeManger

NodeManager

2.配置叢集(在Hadoop的etc/hadoop 裡面)

(1)核心配置檔案

配置core-site.xml

<configuration>

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

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop132:9000</value>

</property>

<!--指定Hadoop運作時産生檔案的存儲目錄-->

<property>

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

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

</property>

</configuration>

(2)HDFS配置檔案

配置hadoop-env.sh

export JAVA_HOME=/opt/jdk1.8.0_241

配置hdfs-site.xml

<configuration>

<!--指定HDFS副本的數量可省略,預設為3-->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

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

<property>

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

<value>hadoop134:50090</value>

</property>

</configuration>

(3)YARN配置檔案

配置yarn-env.sh

export JAVA_HOME=/opt/jdk1.8.0_241

配置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>hadoop133</value>

</property>

3.在叢集上分發配置好的Hadoop配置檔案

xsync  /opt/module/hadoop-2.7.2/

4.3.4叢集單點啟動

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

4.3.4叢集單點啟動

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

(2)在hadoop132上啟動NameNode

hadoop-daemon.sh start namenode

(3)在hadoop132、hadoop133以及hadoop134上分别啟動DataNode

hadoop-daemon.sh start datanode

4.3.5SSH無密登入配置(叢集群起準備)

(1)免密登入原理

搭建Hadoop完全分布式環境

(2)生成公鑰和私鑰:

進入.ssh 目錄(在目前使用者) ssh-keygen -t  rsa

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

(3)将公鑰拷貝到要免密登入的目标機器上

ssh-copy-id  hadoop132

ssh-copy-id  hadoop133

ssh-copy-id  hadoop134

還需要在hadoop132上采用root賬号,配置一下無密登入到hadoop132、hadoop133、

hadoop134;

還需要在hadoop133上采用hadoop賬号配置一下無密登入到hadoop132、hadoop133、

hadoop134伺服器上。

4.3.6群起叢集

1.配置slaves

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

加入以下内容

hadoop132

hadoop133

hadoop134

同步所有節點配置檔案

xsync slaves

2.啟動叢集

(1)如果叢集是第一次啟動,需要格式化NameNode(注意格式化之前,一定要先停止上次啟動的所有namenode和datanode程序,然後再删除data和log資料)

(2)啟動HDFS(hadoop 132) start-dfs.sh

(3)啟動YARN(hadoop133) start-yarn.sh

搭建Hadoop完全分布式環境
搭建Hadoop完全分布式環境
搭建Hadoop完全分布式環境

與設計一樣,打工告成.

本文章隻對關鍵部分進行記錄,具體的參考檔案,原檔案是存放在阿裡雲上面,

繼續閱讀