大數據技術之Hadoop(YARN的搭建)與SHELL腳本(集羣分發腳本xsync)


大數據技術之Hadoop(YARN的搭建)與SHELL腳本(集羣分發腳本xsync)


1.YARN的搭建

1.1集羣部署規劃
集羣部署規劃1.2配置YARN
1.在配置的hadoop集羣中選擇hadoop112:進入hadoop目錄

       cd /usr/local/hadoop/hadoop-2.9.2/etc/hadoop/

2.配置文件yarn-env.sh

       vim yarn-env.sh
       export JAVA_HOME=/usr/local/java/jdk1.8.0_211

3.配置文件yarn-site.xml(注意resourcemanager的選擇

       vim 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>hadoop112</value>
</property>

4.將配置文件發送給另外兩臺
4.1下載rsync:yum -y install rsync
4.2進行發送:

      cd /usr/local/hadoop/hadoop-2.9.2/etc
      rsync -rvl hadoop/ hadoop111:/usr/local/hadoop/hadoop-2.9.2/etc/hadoop/
      rsync -rvl hadoop/ hadoop113:/usr/local/hadoop/hadoop-2.9.2/etc/hadoop/

5.啓動YARN

      start-yarn.sh

hadoop111
hadoop112
hadoop113
6.谷歌訪問:http://192.168.222.112:8088/cluster
YARN

2.Shell腳本

詳細鏈接:https://www.runoob.com/linux/linux-shell.html
2.1 Shell 腳本
Shell 腳本(shell script),是一種爲 shell 編寫的腳本程序。
業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。
由於習慣的原因,簡潔起見,本文出現的 “shell編程” 都是指 shell 腳本編程,不是指開發 shell 自身。
2.2 Shell 環境
Shell 編程跟 JavaScript、php 編程一樣,只要有一個能編寫代碼的文本編輯器和一個能解釋執行的腳本解釋器就可以了。
Linux 的 Shell 種類衆多,常見的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
……
本教程關注的是 Bash,也就是 Bourne Again Shell,由於易用和免費,Bash 在日常工作中被廣泛使用。同時,Bash 也是大多數Linux 系統默認的 Shell。
在一般情況下,人們並不區分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同樣也可以改爲 #!/bin/bash。
#! 告訴系統其後路徑所指定的程序即是解釋此腳本文件的 Shell 程序。
2.3 第一個shell腳本
打開文本編輯器(可以使用 vi/vim 命令來創建文件),新建一個文件 test.sh,擴展名爲 sh(sh代表shell),擴展名並不影響腳本執行,見名知意就好,如果你用 php 寫 shell 腳本,擴展名就用 php 好了。
輸入一些代碼,第一行一般是這樣:

       #!/bin/bash
       echo "Hello World !"

#! 是一個約定的標記,它告訴系統這個腳本需要什麼解釋器來執行,即使用哪一種 Shell。
echo 命令用於向窗口輸出文本。
2.4運行 Shell 腳本有兩種方法:
1、作爲可執行程序
將上面的代碼保存爲 test.sh,並 cd 到相應目錄:

       chmod +x ./test.sh  #使腳本具有執行權限
       ./test.sh  #執行腳本

注意,一定要寫成 ./test.sh,而不是 test.sh,運行其它二進制的程序也一樣,直接寫 test.sh,linux 系統會去 PATH 裏尋找有沒有叫 test.sh 的,而只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 PATH 裏,你的當前目錄通常不在 PATH 裏,所以寫成 test.sh 是會找不到命令的,要用 ./test.sh 告訴系統說,就在當前目錄找。
2、作爲解釋器參數
這種運行方式是,直接運行解釋器,其參數就是 shell 腳本的文件名,如:

       /bin/sh test.sh
       /bin/php test.php

這種方式運行的腳本,不需要在第一行指定解釋器信息,寫了也沒用。

3.編寫集羣分發腳本xsync

3.1. scp(secure copy)安全拷貝
(1)scp定義:
scp可以實現服務器與服務器之間的數據拷貝。(from server1 to server2)
(2)基本語法

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

命令 遞歸 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
(3)案例實操
(a)在hadoop111上,將hadoop111中/opt/module目錄下的軟件拷貝到hadoop112上。

      scp -r /opt/module  root@hadoop112:/opt/module

3.2 rsync 遠程同步工具
rsync主要用於備份和鏡像。具有速度快、避免複製相同內容和支持符號鏈接的優點。
rsync和scp區別:用rsync做文件的複製要比scp的速度快,rsync只對差異文件做更新。scp是把所有文件都複製過去。
(1)基本語法

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

命令 選項參數 要拷貝的文件路徑/名稱 目的用戶@主機:目的路徑/名稱
選項參數說明
選項參數說明(2)案例實操
(a)把hadoop111機器上的/opt/software目錄同步到hadoop112服務器的root用戶下的/opt/目錄

       rsync -rvl /opt/software/ root@hadoop112:/opt/software

3.3xsync集羣分發腳本
1.在 /bin/目錄下創建xsync( rsync版)

       vim /bin/xsync
#!/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`
echo pdir=$pdir

#4 獲取當前用戶名稱
user=`whoami`

#5 循環
for((host=112; host<114; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done

2.在 /bin/目錄下創建xsync( scp版)

       vim /bin/xsync
#!/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`
echo pdir=$pdir

#4 獲取當前用戶名稱
user=`whoami`

#5 循環
for((host=112; host<114; host++)); do
        echo ------------------- hadoop$host --------------
        scp -r $pdir/$fname $user@hadoop$host:$pdir/$fname
done

3.腳本的實現
(1)修改腳本 xsync 具有執行權限

       chmod 777 xsync
       chmod +x xsync

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

       xsync a.txt

rsyncscp

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