antony@notes:~/data-platform$ cat "建置-Apache-Hadoop-3.3.3.md"
建置 Apache Hadoop 3.3.3
建置 Apache Hadoop 3.3.3
[TOC]
Create VM-US2204
Create VM-US2204 Cluster
:::spoiler 1. 啟動 US2004 虛擬主機, 執行以下設定命令
C:\Users\bigred>ssh bigboss@192.168.61.110
bigboss@192.168.61.110s password:
# 系統更新
$ sudo apt update; sudo apt upgrade; sudo apt autoremove
# 安裝套件以及 Hadoop 所需的套件
$ sudo apt-get install tree unzip net-tools openjdk-8-jdk libisal-dev libsnappy-dev libz-dev
# 允許 ssh process 的環境變數,會去讀取 ~/.ssh/environment
$ sudo nano /etc/ssh/sshd_config
.......
PermitUserEnvironment yes
# 當我們第一次 ssh 連到別台機器時,直接收公鑰,不要再問我 yes 或 no
$ sudo nano /etc/ssh/ssh_config
.........
StrictHostKeyChecking no
# 產生公私鑰
$ ssh-keygen -t rsa -P ''
Enter file in which to save the key (/home/bigred/.ssh/id_rsa): 按 Enter
# 複製公鑰成 authorized_keys
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
# 設定 /etc/hosts
$ sudo nano /etc/hosts
127.0.0.1 localhost
127.0.1.1 cvn80
192.168.66.110 dta1
192.168.66.111 dts1
192.168.66.112 dts2
192.168.66.113 dts3
192.168.66.114 dtm1
192.168.66.115 dtm2
192.168.66.120 dtw1
192.168.66.121 dtw2
192.168.66.122 dtw3
192.168.66.123 dtw4
192.168.66.124 dtw5
192.168.66.125 dtw6
# 設定 sudo 群組執行 sudo 免密碼
# 因 bigboss 在 sudo 群組裡,在第 50 行
$ sudo nano -l /etc/sudoers
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
# 設定 bigboss 帳號自動登入 ( 在第 40 行 )
$ sudo nano -l /lib/systemd/system/getty@.service
ExecStart=-/sbin/agetty --autologin bigboss --keep-baud 115200,38400,9600 %I $TERM
# 編輯 /etc/profile,新增以下 55 行~ 71 行的內容
$ sudo nano /etc/profile
gw=$(/sbin/route -n | grep -e "^0.0.0.0 " | head -n 1)
export GWIF=${gw##* }
ips=$(/sbin/ifconfig $GWIF | grep 'inet ')
export IP=$(echo $ips | cut -d' ' -f2 | cut -d':' -f2)
export NETID=${IP%.*}
export GW=$(/sbin/route -n | grep -e '^0.0.0.0' | tr -s \ - | cut -d ' ' -f2)
export PATH=/home/bigboss/bin:/home/bigboss/vmusdt/bin:$PATH
clear; sleep 3
v=$(cat /etc/os-release | grep 'PRETTY_NAME' | cut -d '=' -f 2)
echo "Welcome to DT Platform V 22.07 ($v)"
[ "$IP" != "" ] && echo "IP : $IP"
echo ""
alias ping='ping -c 4 '
alias dir='ls -alh '
alias poweroff='sudo poweroff'
alias reboot='sudo reboot'
# uninstall cloud-init
## Disable all services (uncheck everything except "None"):
$ sudo dpkg-reconfigure cloud-init
## Uninstall the package and delete the folders
$ sudo dpkg-reconfigure cloud-init
$ sudo apt-get purge cloud-init
$ sudo rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/
## Restart the computer
$ sudo reboot
# 關閉 ipv6
## 雙引號裡新增 ipv6.disable=1 , 在第 10, 11 行
$ sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"
GRUB_CMDLINE_LINUX="ipv6.disable=1"
# Now update the GRUB bootloader configuration files for the changes to take effect with the following command:
$ sudo update-grub2
## Restart the computer
$ sudo reboot
## 檢查是否符合預期
$ test -f /proc/net/if_inet6 && echo "IPv6 is enabled." || echo "IPv6 is disabled."
IPv6 is disabled.
# 檢查 java 版本
$ java -version check
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)
## 關機
$ sudo poweroffsudo apt autoremove 解釋 sshd_config 詳細說明連結 ssh_config 詳細說明連結 Ubuntu Server 設定帳號自動登入 :::
:::spoiler 2. 將以上兩台母機 壓縮,並透過 scp 命令,複製到所在的 落地雲 主機,然後解壓縮至使用者家目錄。
參考圖片
:::
:::spoiler 3. 啟動 VMware Workstation Player, 設定 資科平台 十二部虛擬主機
設定 虛擬主機 名稱
dta1, dtm1, dtm2, dts1..dts3,dtw1..6
設定 虛擬主機 記憶體
dta1 -> 6G ( 6144 mb )
dts1 -> 6G
dts2 -> 6G
dts3 -> 6G
dtm1 -> 4G ( 4096 mb )
dtm2 -> 4G
dtw1 -> 10G ( 10240 mb )
dtw2 -> 10G
dtw3 -> 10G
dtw4 -> 10G
dtw5 -> 10G
dtw6 -> 10G
設定 虛擬主機 網卡
Network Adapter -> Bridge:::
:::spoiler 4. 啟動 資科平台 虛擬主機, 然後設定網路系統
在 Windows 命令提示字元 視窗, 執行以下命令, 登入虛擬主機
c:\>ssh bigboss@192.168.66.xx
設定固定 IP
$ sudo nano /etc/netplan/00-installer-config.yaml
network:
version: 2
renderer: networkd
ethernets:
ens32:
dhcp4: no
addresses:
- 192.168.66.xx/24
routes:
- to: default
via: 192.168.66.2
nameservers:
addresses: [8.8.8.8, 168.95.1.1]
測試網路
$ sudo netplan apply
設定電腦名稱
$ sudo nano /etc/hostname
dta1
$ sudo reboot:::
資科平台系統建置
:::spoiler 下載 資料科技 平台套件檔
在 Windows 系統的 cmd 視窗, 執行以下命令
$ ssh bigboss@<dta1 IP>
$ cd; wget http://www.oc99.org/zip/vmusdt2022.zip; unzip vmusdt2022.zip
$ dir vmusdt ## vmusdt (Virtual Machine Ubuntu Server Data technology)
total 20K
drwxr-xr-x 5 bigboss bigboss 4.0K Jul 4 02:45 .
drwxr-x--- 9 bigboss bigboss 4.0K Jul 5 11:35 ..
drwxr-xr-x 2 bigboss bigboss 4.0K Jul 5 11:34 bin
drwxr-xr-x 5 bigboss bigboss 4.0K May 9 18:57 hdp210
drwxr-xr-x 5 bigboss bigboss 4.0K Jul 6 03:36 hdp33
$ dir vmusdt/bin
total 28K
drwxr-xr-x 2 bigboss bigboss 4.0K Jul 5 11:34 .
drwxr-xr-x 5 bigboss bigboss 4.0K Jul 4 02:45 ..
-rwxr-xr-x 1 bigboss bigboss 1.2K Jul 5 03:21 dtconf
-rwxr-xr-x 1 bigboss bigboss 974 Jul 4 05:06 dtcopy
-rwxr-xr-x 1 bigboss bigboss 280 Jul 4 08:49 dthdpchk
-rwxr-xr-x 1 bigboss bigboss 472 Jul 4 09:08 dtsyschk
-rwxr-xr-x 1 bigboss bigboss 771 Jul 4 13:38 dtwget
# 因為有把/home/bigboss/vmusdt/bin加到PATH環境變數,所以才可以直接執行vmusdt/bin目錄裡面的命令
$ echo $PATH
/home/bigboss/bin:/home/bigboss/vmusdt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bi
$ cd ~/vmusdt; dir hdp33
total 32K
drwxr-xr-x 5 bigboss bigboss 4.0K Jul 6 03:36 .
drwxr-xr-x 5 bigboss bigboss 4.0K Jul 4 02:45 ..
drwxr-xr-x 2 bigboss bigboss 4.0K Jul 6 07:09 bin
drwxr-xr-x 7 bigboss bigboss 4.0K Jul 4 07:22 conf
-rw-r--r-- 1 bigboss bigboss 420 Jul 4 02:32 dlist
-rw-r--r-- 1 bigboss bigboss 889 Jul 4 07:35 environment
drwxrwxr-x 7 bigboss bigboss 4.0K Jul 4 02:45 opt
-rwxr-xr-x 1 bigboss bigboss 2.6K Jul 4 07:33 us.bashus.bash –> 設定資科平台所需的環境變數 opt –> 資科平台套件的存放目錄 bin –> 存放部署或建制資科平台所需的命令 conf –> 存放資科平台套件設定檔的目錄 dlist –> 資科平台套件下載連結清單 environment –> 設定 ssh 直接執行指令時的環境變數 :::
修改 資科平台 程式 ( ~/vmusdt/bin/ )
:::spoiler 修改 dtwget
修改命令 :
$ nano -l ~/vmusdt/bin/dtwget修改內容 :
第 5 行,更改為 [ ! -d ~/vmusdt/hdp${1} ] && echo "~/vmusdt/hdp${1} not found" && exit 1
第 6 行,更改為 [ ! -f ~/vmusdt/hdp${1}/dlist ] && echo "~/vmusdt/hdp${1}/dlist not found" && exit 1
第 27 行,更改為 sudo chown -R bigboss:bigboss ~/vmusdt/hdp${1}/opt修改結果 :
#!/bin/bash
[ "$#" != 1 ] && echo "dtwget version" && exit 1
[ ! -d ~/vmusdt/hdp${1} ] && echo "~/vmusdt/hdp${1} not found" && exit 1
[ ! -f ~/vmusdt/hdp${1}/dlist ] && echo "~/vmusdt/hdp${1}/dlist not found" && exit 1
read -p "download DT packages ? (YES/NO) " ans
if [ "$ans" == "YES" ]; then
[ -d ~/vmusdt/hdp${1}/opt ] && rm -r ~/vmusdt/hdp${1}/opt &>/dev/null
mkdir -p ~/vmusdt/hdp${1}/opt
while read line; do
wget $line &>/dev/null
if [ "$?" == "0" ]; then
n=${line##*/}
tar xvfz $n -C ~/vmusdt/hdp${1}/opt &>/dev/null
[ "$?" == "0" ] && echo "$n ok"
rm $n
else
n=${line##*/}
echo "$n failed"
fi
done < ~/vmusdt/hdp${1}/dlist
fi
sudo chown -R bigboss:bigboss ~/vmusdt/hdp${1}/opt:::
:::spoiler 修改 dtcopy
修改命令 :
$ nano -l ~/vmusdt/bin/dtcopy修改內容 :
第 3 行 刪除 dta2 ,新增 dts1 dts2 dts3 dtw5 dtw6
第 25 行 bigred -- > bigboss
第 28 行 bigred -- > bigboss修改結果 :
$ nano ~/vmusdt/bin/dtcopy
#!/bin/bash
w="dta1 dts1 dts2 dts3 dtm1 dtm2 dtw1 dtw2 dtw3 dtw4 dtw5 dtw6"
[ "$#" != 1 ] && echo "dtcopy version" && exit 1
[ ! -d ~/vmusdt/hdp${1}/opt ] && echo "~/vmusdt/hdp${1}/opt not found" && exit 1
for x in $w
do
nc -w 1 -z $x 22 &>/dev/null
[ "$?" != "0" ] && continue
ssh $x sudo mkdir -p /opt/bin &>/dev/null
ssh $x sudo chmod -R 777 /opt &>/dev/null
n=$(ssh $x ls /opt)
for y in $n
do
([ "$y" == "cni" ] || [ "$y" == "bin" ] || [ "$y" == "nfs" ]) && continue
ssh $x sudo rm -r /opt/$y
done
scp -r ~/vmusdt/hdp${1}/opt/* bigboss@$x:/opt/ &>/dev/null
[ "$?" == "0" ] && echo "$x /opt/ ok"
scp ~/vmusdt/hdp${1}/bin/* bigboss@$x:/opt/bin &>/dev/null
[ "$?" == "0" ] && echo "$x /opt/bin ok"
scp /etc/hosts $x:~ &>/dev/null
ssh $x 'sudo mv hosts /etc/hosts'
[ "$?" == "0" ] && echo "$x /etc/hosts ok"
ssh $x sudo chown -R root:root /opt
ssh $x sudo chmod -R 0777 /opt
echo ""
done:::
:::spoiler 修改 dtconf
修改命令 :
nano -l ~/vmusdt/bin/dtconf修改內容 :
第 3 行 ,更改為 w="dta1 dts1 dts2 sts3 dtm1 dtm2 dtw1 dtw2 dtw3 dtw4 dtw5 dtw6"
第 19 行,更改為 [ "$?" == "0" ] && scp ~/vmusdt/hdp${1}/conf/$y/* bigboss@$x:/opt/$y/etc/hadoop/ &>/dev/null && echo "$x $y config ok" && continue
第 20 行,更改為 [ -d ~/vmusdt/hdp${1}/conf/$y ] && scp ~/vmusdt/hdp${1}/conf/$y/* bigboss@$x:/opt/$y/conf/ &>/dev/null
第 25 行,更改為 scp -r ~/vmusdt/hdp${1}/environment bigboss@$x:~/.ssh/environment &>/dev/null
第 28 行,更改為 scp -r ~/vmusdt/hdp${1}/us.bash bigboss@$x:~/us.bash &>/dev/null
第 31 行,更改為 ssh $x 'cat /etc/profile | grep '/home/bigboss/us.bash' &>/dev/null'
第 32 行,更改為 [ "$?" != "0" ] && ssh $x 'echo source /home/bigboss/us.bash | sudo tee -a /etc/profile &>/dev/null'修改結果 :
#!/bin/bash
w="dta1 dts1 dts2 dts3 dtm1 dtm2 dtw1 dtw2 dtw3 dtw4 dtw5 dtw6"
[ "$#" != 1 ] && echo "dtconf version" && exit 1
[ ! -d ~/vmusdt/hdp${1}/opt ] && echo "~/vmusdt/hdp${1}/opt not found" && exit 1
n=$(ls ~/vmusdt/hdp${1}/opt)
for x in $w
do
nc -w 1 -z $x 22 &>/dev/null
[ "$?" != "0" ] && continue
for y in $n
do
echo "$y" | grep 'hadoop-' &>/dev/null
[ "$?" == "0" ] && scp ~/vmusdt/hdp${1}/conf/$y/* bigboss@$x:/opt/$y/etc/hadoop/ &>/dev/null && echo "$x $y config ok" && continue
[ -d ~/vmusdt/hdp${1}/conf/$y ] && scp ~/vmusdt/hdp${1}/conf/$y/* bigboss@$x:/opt/$y/conf/ &>/dev/null
[ "$?" == "0" ] && echo "$x $y config ok"
done
ssh $x 'sudo rm /etc/environment &>/dev/null'
scp -r ~/vmusdt/hdp${1}/environment bigboss@$x:~/.ssh/environment &>/dev/null
[ "$?" == "0" ] && echo "$x environment ok"
scp -r ~/vmusdt/hdp${1}/us.bash bigboss@$x:~/us.bash &>/dev/null
[ "$?" == "0" ] && echo "$x us.bash ok"
ssh $x 'cat /etc/profile | grep '/home/bigboss/us.bash' &>/dev/null'
[ "$?" != "0" ] && ssh $x 'echo source /home/bigboss/us.bash | sudo tee -a /etc/profile &>/dev/null'
echo "$x /etc/profile ok"
echo ""
done:::
:::spoiler 修改 dthdpchk
修改命令 :
nano bin/dthdpchk修改內容 :
m="dta1 dts1 dts2 dts3 dtm1 dtm2"
w="dtw1 dtw2 dtw3 dtw4 dtw5 dtw6"修改結果 :
#!/bin/bash
m="dta1 dts1 dts2 dts3 dtm1 dtm2"
w="dtw1 dtw2 dtw3 dtw4 dtw5 dtw6"
for n in $m $w
do
nc -w 1 -z $n 22 &>/dev/null
if [ "$?" == "0" ]; then
echo "[$n]"
ssh $n 'hadoop version | head -n 1'
ssh $n 'hadoop checknative'
echo ""
fi
done:::
:::spoiler 修改 dtsyschk
修改命令 :
$ nano ~/vmusdt/bin/dtsyschk修改內容 :
m="dtm1 dtm2 dts1 dts2 dts3"
w="dtw1 dtw2 dtw3 dtw4 dtw5 dtw6"修改結果 :
#!/bin/bash
m="dtm1 dtm2 dts1 dts2 dts3"
w="dtw1 dtw2 dtw3 dtw4 dtw5 dtw6"
for n in $m $w
do
nc -w 1 -z $n 22 &>/dev/null
if [ "$?" == "0" ]; then
ssh $n exit &>/dev/null
[ "$?" == "0" ] && echo -n "$n ssh ok"
ssh $n 'java -version' &>/dev/null
[ "$?" == "0" ] && echo -n ", jdk8 ok"
ssh $n 'which python3' &>/dev/null
if [ "$?" == "0" ]; then
echo ", python3 ok"
else
echo ""
fi
fi
done:::
修改 環境變數 套件清單檔 ( ~/vmusdt/hdp33/ )
:::spoiler 修改 資科平台所需的環境變數
pig, spark, Hive 會去讀取 us.bash,hadoop 不會
修改命令 :
nano -l ~/vmusdt/hdp33/us.bash修改內容 :
第 2 行,更改為 adminuser=bigboss
第 3 行,確認 java-8-openjdk
第 4 行,更改為 export HADOOP_HOME=/opt/hadoop-3.3.3
第 14 行,更改為 /home/bigboss/jhslog
第 27 行,更改為 export HIVE_HOME=/opt/apache-hive-3.1.3-bin
第 30 行,更改為 export PATH=/home/bigboss/vmusdt/bin:$PATH
第 33 行,更改為 export HBASE_HOME=/opt/hbase-2.4.13
第 34 行,更改為 export HBASE_CONF_DIR=/opt/hbase-2.4.13/conf修改結果 :
#!/bin/bash
adminuser=bigboss
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk/jre ## 資料科技平台所跑的 Java 程式的家
export HADOOP_HOME=/opt/hadoop-3.3.3
export HADOOP_LOG_DIR=/tmp
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native/
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
# export HADOOP_USER_CLASSPATH_FIRST=true
[ -z $HADOOP_USER_NAME ] && [ $SHELL == '/bin/bash' ] && declare -r HADOOP_USER_NAME=$USER
# JobHistory log file path, 會自動產生目錄
# export HADOOP_MAPRED_LOG_DIR="/home/bigboss/jhslog"
export YARN_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export YARN_LOG_DIR=/tmp
# hadoop 3.2.1 及 3.1.3 這二個版本只要執行檔案傳送命令就會出現以下訊息
# hadoop fs -put -f /etc/passwd /tmp
# SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
export HADOOP_ROOT_LOGGER="WARN,console"
export PIG_HOME=/opt/pig-0.17.0
export PIG_HEAPSIZE=512
export HIVE_HOME=/opt/apache-hive-3.1.3-bin
export PATH=/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH=/usr/lib/jvm/java-1.8-openjdk/bin:/home/bigboss/dt/bin:$PATH
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PIG_HOME/bin:$HIVE_HOME/bin
export HBASE_HOME=/opt/hbase-2.4.13
export HBASE_CONF_DIR=/opt/hbase-2.4.13/conf
export ZOOKEEPER_HOME=/opt/apache-zookeeper-3.6.3-bin
export ZOO_LOG_DIR=/tmp/logs
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$HBASE_HOME/bin
#export ZEPPELIN_HOME=/opt/zeppelin-0.9.0-bin-all
#export PATH=$PATH:$ZEPPELIN_HOME/bin
export SPARK_HOME=/opt/spark-3.2.1-bin-hadoop3.2
export SPARK_CONF_DIR=$SPARK_HOME/conf
export PYSPARK_PYTHON=/usr/bin/python3
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
if [ -d /opt/jupyter/miniconda3/bin ];then
export ANACONDA_ROOT=/opt/jupyter/miniconda3
export PATH=$ANACONDA_ROOT/bin:$PATH
export PYSPARK_PYTHON=$ANACONDA_ROOT/bin/python
fi
if [ "$USER" != "" ]; then
[ -f /home/$USER/dkc.env ] && source /home/$USER/dkc.env
if [ ! -d metastore_db ]; then
#hn=$(hostname)
#if [ ${hn:0:3} == "adm" ] || [ ${hn:0:2} == "ds" ] || [ ${hn:0:8} == "zeppelin" ]; then
echo -n "build derby database ..."
schematool -initSchema -dbType derby &>/dev/null
if [ "$?" == "0" ]; then
echo " ok"
echo "set hive.cli.print.current.db=true;" > .hiverc
echo "set hive.metastore.warehouse.dir=/user/$USER/hive;" >> .hiverc
echo "set hive.exec.scratchdir=/user/$USER/tmp;" >> .hiverc
fi
fi
alias nano='nano -Ynone'
alias dir='ls -alh'
alias ssh='ssh -q'
fi:::
:::spoiler 修改 ssh 直接執行命令時的環境變數檔案
修改命令 :
nano -l ~/vmusdt/hdp33/environment修改內容 :
第 1 行,更改為 JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
第 2 行,更改為 HADOOP_HOME=/opt/hadoop-3.3.3
第 4 行,更改為 LD_LIBRARY_PATH=/opt/hadoop-3.3.3/lib/native/
第 5 行,更改為 HADOOP_COMMON_LIB_NATIVE_DIR=/opt/hadoop-3.3.3/lib/native
第 6 行,更改為 HADOOP_OPTS=-Djava.library.path=/opt/hadoop-3.3.3/lib/native
第 7 行,更改為 HADOOP_MAPRED_LOG_DIR=/home/bigboss/jhslog
第 8 行,更改為 YARN_HOME=/opt/hadoop-3.3.3
第 14 行,更改為 HBASE_HOME=/opt/hbase-2.4.13
第 15 行,更改為 HBASE_CONF_DIR=/opt/hbase-2.4.13/conf
第 17 行,更改為
PATH=/root/bin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/hadoop-3.3.3/bin:/opt/hadoop-3.3.3/sbin:/opt/pig-0.17.0/bin:/opt/apache-hive-3.1.3-bin/bin:/opt/spark-3.2.1-bin-hadoop3.2/bin:/opt/spark-3.2.1-bin-hadoop3.2/sbin:/opt/hbase-2.4.13/bin:/opt/apache-zookeeper-3.6.3-bin/bin修改結果 :
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
HADOOP_HOME=/opt/hadoop-3.3.3
HADOOP_LOG_DIR=/tmp
LD_LIBRARY_PATH=/opt/hadoop-3.3.3/lib/native/
HADOOP_COMMON_LIB_NATIVE_DIR=/opt/hadoop-3.3.3/lib/native
HADOOP_OPTS=-Djava.library.path=/opt/hadoop-3.3.3/lib/native
HADOOP_MAPRED_LOG_DIR=/home/bigboss/jhslog
YARN_HOME=/opt/hadoop-3.3.3
YARN_LOG_DIR=/tmp
PIG_HOME=/opt/pig-0.17.0/
PIG_HEAPSIZE=512
SPARK_HOME=/opt/spark-3.2.1-bin-hadoop3.2
HIVE_HOME=/opt/apache-hive-3.1.3-bin
HBASE_HOME=/opt/hbase-2.4.11
HBASE_CONF_DIR=/opt/hbase-2.4.11/conf
HBASE_LOG_DIR=/tmp
ZOO_LOG_DIR=/tmp/logs
PATH=/root/bin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/hadoop-3.3.3/bin:/opt/hadoop-3.3.3/sbin:/opt/pig-0.17.0/bin:/opt/apache-hive-3.1.3-bin/bin:/opt/spark-3.2.1-bin-hadoop3.2/bin:/opt/spark-3.2.1-bin-hadoop3.2/sbin:/opt/hbase-2.4.11/bin:/opt/apache-zookeeper-3.6.3-bin/bin:::
:::spoiler 修改 下載資科平台套件 清單檔
修改命令 :
$ nano ~/vmusdt/hdp33/dlist修改內容 :
第 1 行,更改為
https://dlcdn.apache.org/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz
第 5 行,更改為
https://dlcdn.apache.org/hbase/2.4.13/hbase-2.4.13-bin.tar.gz修改結果 :
https://dlcdn.apache.org/hadoop/common/hadoop-3.3.3/hadoop-3.3.3.tar.gz
https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
https://dlcdn.apache.org/pig/pig-0.17.0/pig-0.17.0.tar.gz
https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz
https://dlcdn.apache.org/hbase/2.4.13/hbase-2.4.13-bin.tar.gz
https://dlcdn.apache.org/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz:::
修改 hadoop 設定檔 ( ~/vmusdt/hdp33/conf/hadoop-3.3.3/ )
:::spoiler 修改 設定檔目錄名稱
$ mv ~/vmusdt/hdp33/conf/hadoop-3.3.2/ ~/vmusdt/hdp33/conf/hadoop-3.3.3/
$ mv ~/vmusdt/hdp33/conf/apache-hive-3.1.2-bin/ ~/vmusdt/hdp33/conf/apache-hive-3.1.3-bin/
$ mv ~/vmusdt/hdp33/conf/hbase-2.4.12 ~/vmusdt/hdp33/conf/hbase-2.4.13檢查設定檔和套件檔的目錄名稱要一致
bigboss@dta1:~/vmusdt$ dir hdp33/conf
total 28K
drwxr-xr-x 7 bigboss bigboss 4.0K Jul 8 12:51 .
drwxr-xr-x 5 bigboss bigboss 4.0K Jul 8 13:04 ..
drwxr-xr-x 2 bigboss bigboss 4.0K Jul 8 12:59 apache-hive-3.1.3-bin
drwxr-xr-x 2 bigboss bigboss 4.0K Feb 6 16:00 apache-zookeeper-3.6.3-bin
drwxr-xr-x 2 bigboss bigboss 4.0K Jul 8 12:28 hadoop-3.3.3
drwxr-xr-x 2 bigboss bigboss 4.0K Jul 8 12:55 hbase-2.4.13
drwxr-xr-x 2 bigboss bigboss 4.0K May 9 18:54 spark-3.2.1-bin-hadoop3.2
bigboss@dta1:~/vmusdt$ dir /opt
total 32K
drwxrwxrwx 8 root root 4.0K Jul 4 05:28 .
drwxr-xr-x 18 root root 4.0K Jul 3 05:46 ..
drwxrwxrwx 10 root root 4.0K Jul 4 05:27 apache-hive-3.1.3-bin
drwxrwxrwx 6 root root 4.0K Jul 4 05:27 apache-zookeeper-3.6.3-bin
drwxrwxrwx 2 root root 4.0K Jul 4 05:28 bin
drwxrwxrwx 10 root root 4.0K Jul 4 05:28 hadoop-3.3.3
drwxrwxrwx 16 root root 4.0K Jul 4 05:28 pig-0.17.0
drwxrwxrwx 13 root root 4.0K Jul 4 05:28 spark-3.2.1-bin-hadoop3.2:::
:::spoiler 修改 hadoop-env.sh
修改命令
nano -l ~/vmusdt/hdp33/conf/hadoop-3.3.3/hadoop-env.sh修改第 54 行,java-11-openjdk-amd64 –> java-8-openjdk-amd64
修改結果 :
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/Hadoop的程式,會到 hadoop-env.sh 這個檔案來讀取設定檔
:::
:::spoiler 修改 hdfs-site.xml
修改命令 :
$ nano -l ~/vmusdt/hdp33/conf/hadoop-3.3.3/hdfs-site.xml修改內容 :
第 10 行,更改為 <value>file:/home/bigboss/nn</value>
第 14 行,更改為 <value>file:/home/bigboss/dn</value>
第 80 行,更改為 <value>/opt/hadoop-3.3.3/etc/hadoop/hdfs.allow</value>
第 84 行,更改為 <value>/opt/hadoop-3.3.3/etc/hadoop/hdfs.decommission</value>修改結果 :
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/bigboss/nn</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/bigboss/dn</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>bigboss</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>false</value>
<description>
1. webhdfs 功能有關閉, 但 Port 50070 不會被關掉
2. NameNode 內定會啟動 WebHDFS 網站
3. webhdfs client 必須要能連接到所有 Datanode, 才能執行 HDFS 功能
</description>
</property>
<!--
<property>
<name>dfs.namenode.accesstime.precision</name>
<value>3600000</value>
<description>
The access time for HDFS file is precise up to this value.
The default value is 1 hour. Setting a value of 0 disables
access times for HDFS.
</description>
</property>
-->
<!--
<property>
<name>dfs.nfs3.dump.dir</name>
<value>/tmp/.hdfs-nfs</value>
</property>
<property>
<name>dfs.nfs.exports.allowed.hosts</name>
<value>* rw</value>
</property>
<property>
<name>nfs.export.point</name>
<value>/user</value>
</property>
-->
<!--
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>100000</value>
</property>
-->
<!--
<property>
<name>net.topology.script.file.name</name>
<value>/opt/bin/rack-awareness.sh</value>
</property>
-->
<!--
<property>
<name>dfs.hosts</name>
<value>/opt/hadoop-3.3.3/etc/hadoop/hdfs.allow</value>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop-3.3.3/etc/hadoop/hdfs.decommission</value>
</property>
-->
</configuration>:::
:::spoiler 修改 mapred-site.xml
修改命令 :
$ nano -l ~/vmusdt/hdp33/conf/hadoop-3.3.3/mapred-site.xml第 11 行內容修改為以下 :
<value>/opt/hadoop-3.3.3/share/hadoop/mapreduce/*,/opt/hadoop-3.3.3/share/hadoop/mapreduce/lib/*,/opt/hadoop-3.3.3/share/hadoop/common/*,/opt/hadoop-3.3.3/share/hadoop/common/lib/*,/opt/hadoop-3.3.3/share/hadoop/yarn/*,/opt/hadoop-3.3.3/share/hadoop/yarn/lib/*,/opt/hadoop-3.3.3/share/hadoop/hdfs/*,/opt/hadoop-3.3.3/share/hadoop/hdfs/lib/*</value>修改結果 :
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>/opt/hadoop-3.3.3/share/hadoop/mapreduce/*,/opt/hadoop-3.3.3/share/hadoop/mapreduce/lib/*,/opt/hadoop-3.3.3/share/hadoop/common/*,/opt/hadoop-3.3.3/share/hadoop/common/lib/*,/opt/hadoop-3.3.3/share/hadoop/yarn/*,/opt/hadoop-3.3.3/share/hadoop/yarn/lib/*,/opt/hadoop-3.3.3/share/hadoop/hdfs/*,/opt/hadoop-3.3.3/share/hadoop/hdfs/lib/*</value>
</property>
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>384</value>
</property>
<property>
<name>yarn.app.mapreduce.am.command-opts</name>
<value>-Xmx256m</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>512</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx384m</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>384</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx256m</value>
</property>
<!-- Disable Speculative Execution -->
<!--
<property>
<name>mapred.map.tasks.speculative.execution</name>
<value>false</value>
</property>
<property>
<name>mapred.reduce.tasks.speculative.execution</name>
<value>false</value>
</property>
-->
<!--
<property>
<name>mapreduce.input.fileinputformat.split.minsize</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.input.fileinputformat.split.maxsize</name>
<value>2048</value>
</property>
-->
</configuration>:::
:::spoiler 修改 yarn-site.xml
修改命令 :
$ nano -l ~/vmusdt/hdp33/conf/hadoop-3.3.3/yarn-site.xml修改內容 :
第 23 行,更改為 <value>/home/bigboss/yarn</value>
第 75 行,更改為 <value>/opt/hadoop-3.3.3/etc/hadoop/yarn.allow</value>
第 80 行,更改為 <value>/opt/hadoop-3.3.3/etc/hadoop/yarn.decommission</value>
第 90 行,更改為 <value>bigboss yarnadmin</value>修改結果 :
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>dtm2:8088</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>dtm2</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/bigboss/yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>dtm2:10020</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>8</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>384</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>896</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-vcores</name>
<value>1</value>
</property>
<!--
<property>
<name>yarn.scheduler.increment-allocation-mb</name>
<value>384</value>
</property>
-->
<!--
<property>
<name>yarn.resourcemanager.nodes.include-path</name>
<value>/opt/hadoop-3.3.3/etc/hadoop/yarn.allow</value>
</property>
<property>
<name>yarn.resourcemanager.nodes.exclude-path</name>
<value>/opt/hadoop-3.3.3/etc/hadoop/yarn.decommission</value>
</property>
-->
<!--
<property>
<name>yarn.acl.enable</name>
<value>true</value>
</property>
<property>
<name>yarn.admin.acl</name>
<value>bigboss yarnadmin</value>
</property>
-->
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
</configuration>:::
修改 hive 設定檔 (~/vmusdt/hdp33/conf/apache-hive-3.1.3-bin/)
:::spoiler 修改 hive-site.xml.template
修改命令 :
$ nano -l hdp33/conf/apache-hive-3.1.3-bin/hive-site.xml.template修改內容 :
第 21 行,更改為 <value>bigboss</value>修改結果 :
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mariadb://mdb:3306/metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.mariadb.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveuser</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hivepassword</value>
</property>
<property>
<name>hive.users.in.admin.role</name>
<value>bigboss</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<property>
<name>hive.security.authorization.enabled</name>
<value>false</value>
</property>
</configuration>:::
修改 資科平台 系統程式 (~/vmusdt/hdp33/bin/)
:::spoiler 修改 dtest
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/dtest修改內容 :
第 21 行,更改為
hadoop jar /opt/hadoop-3.3.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar pi 2 1000 &> /tmp/out修改結果 :
#!/bin/bash
echo "[HDFS]"
nc -w 1 -z dtm1 22 &>/dev/null
[ "$?" != 0 ] && echo 'dtm1 exited' && exit 1
ssh -q dtm1 jps | grep 'NameNode' &>/dev/null
[ "$?" != 0 ] && echo "HDFS exited" && exit 1
hdfs dfsadmin -report &> /tmp/out
cat /tmp/out | grep 'Live datanodes'
cat /tmp/out | grep 'Name: '
echo ""
echo "[YARN]"
nc -w 1 -z dtm2 22 &>/dev/null
[ "$?" != 0 ] && echo 'dtm2 exited' && exit 1
ssh dtm2 jps | grep 'ResourceManager' &>/dev/null
[ "$?" != 0 ] && echo "YARN exited" && exit 1
yarn node -list -all 2>/dev/null
echo""
echo [MapReduce]
hadoop jar /opt/hadoop-3.3.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.3.jar pi 2 1000 &> /tmp/out
cat /tmp/out | grep ' Pi '
echo""
hdfs dfs -ls /tmp/spark-events &>/dev/null
[ "$?" != "0" ] && hdfs dfs -mkdir /tmp/spark-events && hdfs dfs -chmod -R 777 /tmp
echo [Spark]
spark-submit --num-executors 1 --executor-memory 512m --master yarn \
/opt/spark-3.2.1-bin-hadoop3.2/examples/src/main/python/pi.py 10 2>/dev/null
echo ""
echo [HBase]
nc -w 1 -z dtm1 22 &>/dev/null
[ "$?" != 0 ] && echo 'dtm1 exited' && exit 1
ssh -q dtm1 jps | grep 'HMaster' &>/dev/null
if [ "$?" == "0" ]; then
echo "status" | hbase shell -n 2>/dev/null | head -n 1
fi:::
:::spoiler 修改 hls
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/hls修改內容 :
第 14 行,更改為
j=$(ssh -q bigboss@$n sudo jps 2>/dev/null | grep -v Jps)修改結果 :
#!/bin/bash
nn="dtm1"
rs="dtm2"
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
nc -w 1 -z $nn 8020 &>/dev/null
[ "$?" != 0 ] && echo "pls start HDFS first or fomathdfs" && exit 1
for n in $nn $rs $w
do
nc -w 1 -z $n 22 &>/dev/null
if [ "$?" == "0" ]; then
j=$(ssh -q bigboss@$n sudo jps 2>/dev/null | grep -v Jps)
if [ "$j" != "" ]; then
echo -e "[$n]\n$j"
echo ""
fi
fi
done:::
:::spoiler 修改 lake.schema
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/lake.schema修改內容 :
第 2 行,更改為
owner=bigboss
第 5 行,更改為
ssh bigboss@dtm1 jps 2>/dev/null | grep NameNode &>/dev/null修改結果 :
#!/bin/bash
owner=bigboss
group=bigboss
ssh bigboss@dtm1 jps 2>/dev/null | grep NameNode &>/dev/null
[ "$?" != "0" ] && echo "start HDFS first" && exit 1
lakeschema="/raw/ /elt/ /dataset/ /apps/ /metadata/"
for dn in $lakeschema
do
hdfs dfs -ls $dn &>/dev/null
if [ "$?" != "0" ]; then
hdfs dfs -mkdir $dn
hdfs dfs -chown $owner:$group $dn
hdfs dfs -chmod 755 $dn
echo "$dn ($owner:$group,755)"
else
echo "$dn existed"
fi
done
hdfs dfs -ls /tmp/hadoop-yarn &>/dev/null
[ "$?" != "0" ] && hdfs dfs -mkdir -p /tmp/hadoop-yarn/staging && echo "/tmp/hadoop-yarn/staging created (YARN)"
hdfs dfs -ls /tmp/hive &>/dev/null
[ "$?" != "0" ] && hdfs dfs -mkdir /tmp/hive/ && echo "/tmp/hive created (Jupyter)"
hdfs dfs -ls /tmp/spark-events &>/dev/null
[ "$?" != "0" ] && hdfs dfs -mkdir /tmp/spark-events/ && echo "/tmp/spark-events created (Spark)"
hdfs dfs -chmod -R 777 /tmp/ && echo "/tmp (777)"
echo ""
echo "執行完成"
exit 0:::
:::spoiler 修改 lake.users
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/lake.users修改內容 :
第 3 行,更改為
ssh bigboss@dtm1 jps 2>/dev/null | grep NameNode &>/dev/null
第 9 行,更改為
for us in rbean gbean ybean zbean zp01 zp02 zp03 bigboss修改結果 :
#!/bin/bash
ssh bigboss@dtm1 jps 2>/dev/null | grep NameNode &>/dev/null
[ "$?" != "0" ] && echo "start HDFS first" && exit 1
hdfs dfs -mkdir /user/ &>/dev/null
[ "$?" == "0" ] && echo -e "[HDFS]\n/user created"
for us in rbean gbean ybean zbean zp01 zp02 zp03 bigboss
do
hdfs dfs -mkdir /user/$us/ &>/dev/null
if [ "$?" == "0" ]; then
hdfs dfs -chmod 755 /user/$us/
hdfs dfs -chown $us:$us /user/$us/
echo "/user/$us created"
else
echo "/user/$us existed"
fi
done
i=101
while [ $i -le 200 ]
do
cat /etc/hosts | grep "ds$2" &>/dev/null
[ "$?" != 0 ] && i=$(($i+1)) && continue
nc -w 1 -z "ds$i" 22
[ "$?" != "0" ] && break
hdfs dfs -mkdir /user/ds$i/ &>/dev/null
if [ "$?" == "0" ]; then
hdfs dfs -chmod 755 /user/ds$i/
hdfs dfs -chown ds$i:ds$i /user/ds$i/
echo "/user/ds$i created"
else
echo "/user/ds$i existed"
fi
i=$(($i+1))
done
echo ""
echo "執行完成"
exit 0:::
:::spoiler 修改 starthba
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/starthba修改內容 :
第 9 行,更改為
ssh bigboss@dtm2 zkServer.sh start &>/dev/null
新增以下這行
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
第 17 行,更改為
for n in $w
第 21 行,更改為
ssh bigboss@$n hbase-daemon.sh start regionserver &>/dev/null修改結果 :
#!/bin/bash
#n=$(hostname)
#[ ${n:0:3} != "adm" ] && echo "oops, pls return to admxxx" && exit 1
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
nc -w 5 -z dtm1 8020 &>/dev/null
[ "$?" != 0 ] && echo "pls start HDFS first" && exit 1
ssh bigboss@dtm2 zkServer.sh start &>/dev/null
[ "$?" == "0" ] && echo "dtm3: ZooKeeper started"
ssh bigboss@dtm1 hbase-daemon.sh start master &>/dev/null
[ "$?" == "0" ] && echo "dtm3: Hbase Master started"
for n in $w
do
nc -w 3 -z $n 22 &>/dev/null
if [ "$?" == "0" ]; then
ssh bigboss@$n hbase-daemon.sh start regionserver &>/dev/null
[ "$?" == "0" ] && echo "$n: Region Server started"
fi
done:::
:::spoiler 修改 starthdfs
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/starthdfs修改內容 :
第 6 行,更改為 ssh bigboss@"$m" hadoop-daemon.sh start namenode &>/dev/null
第 11 行,更改為 ssh bigboss@"$m" hadoop-daemon.sh start secondarynamenode &>/dev/null
第 18 行,更改為 ssh bigboss@"$n" hadoop-daemon.sh start datanode &>/dev/null修改結果 :
#!/bin/bash
m="dtm1"
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
ssh bigboss@"$m" hadoop-daemon.sh start namenode &>/dev/null
sleep 10; nc -w 5 -z $m 8020 &>/dev/null
[ "$?" != 0 ] && echo "pls formathdfs first" && exit 1
echo "$m: Name Node Started"
ssh bigboss@"$m" hadoop-daemon.sh start secondarynamenode &>/dev/null
[ "$?" == "0" ] && echo "$m: Secondary Name Node started"
for n in $w
do
nc -w 5 -z $n 22 &>/dev/null
if [ "$?" == "0" ]; then
ssh bigboss@"$n" hadoop-daemon.sh start datanode &>/dev/null
[ "$?" == "0" ] && echo "$n: Data Node started"
fi
done:::
:::spoiler 修改 startjps
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/startjps修改內容 :
新增以下這行
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
第 5 行,更改為
for n $w修改結果 :
#!/bin/bash
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
for n in $w
do
ssh $n 'nohup jpslog.sh &>/dev/null &'
done:::
:::spoiler 修改 startmaxctn
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/startmaxctn修改內容 :
新增以下這行
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
第 5 行,更改為
for n in $w修改結果 :
#!/bin/bash
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
for n in $w
do
ssh $n 'nohup /opt/bin/maxjps.sh &>/dev/null &'
done:::
:::spoiler 修改 startyarn
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/startyarn修改內容 :
第 5 行,更改為
yn=5
第 15 行,更改為
ssh bigboss@"$rs" yarn-daemon.sh start resourcemanager &>/dev/null
第 17 行,更改為
ssh bigboss@"$rs" mr-jobhistory-daemon.sh start historyserver &>/dev/null
第 24 行,更改為
ssh bigboss@$n yarn-daemon.sh start nodemanager &>/dev/null修改結果 :
#!/bin/bash
nn="dtm1"
rs="dtm2"
yn=5
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
#n=$(hostname)
#[ ${n:0:3} != "adm" ] && echo "oops, pls return to admxxx" && exit 1
nc -w 5 -z $nn 8020 &>/dev/null
[ "$?" != 0 ] && echo "pls start HDFS first" && exit 1
ssh bigboss@"$rs" yarn-daemon.sh start resourcemanager &>/dev/null
[ "$?" == "0" ] && echo "$rs: Resource Manager started"
ssh bigboss@"$rs" mr-jobhistory-daemon.sh start historyserver &>/dev/null
[ "$?" == "0" ] && echo "$rs: Job History Server started"
## 多 if 判斷是因為,剩的 VM 可以給 Hbase 的程式跑
c=0
for n in $w
do
if [ "$c" -le "$yn" ]; then
ssh bigboss@$n yarn-daemon.sh start nodemanager &>/dev/null
[ "$?" == "0" ] && echo "$n: Node Manager started"
c=$(( c+1 ))
fi
done:::
:::spoiler 修改 stophba
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/stophba修改內容 :
新增以下這行
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
第 12 行,更改為
ssh bigboss@$n hbase-daemon.sh stop regionserver &>/dev/null
第 17 行,更改為
ssh bigboss@dtm2 hbase-daemon.sh stop master &>/dev/null
第 20 行,更改為
ssh bigboss@dtm1 zkServer.sh stop &>/dev/null修改結果 :
#!/bin/bash
#n=$(hostname)
#[ ${n:0:3} != "adm" ] && echo "oops, pls return to admxxx" && exit 1
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
for n in $w
do
nc -w 1 -z $n 22 &>/dev/null
if [ "$?" == "0" ]; then
ssh bigboss@$n hbase-daemon.sh stop regionserver &>/dev/null
[ "$?" == "0" ] && echo "$n: Region Server stoped"
fi
done
ssh bigboss@dtm2 hbase-daemon.sh stop master &>/dev/null
[ "$?" == "0" ] && echo "dtm1: Hbase Master stoped"
ssh bigboss@dtm1 zkServer.sh stop &>/dev/null
[ "$?" == "0" ] && echo "dtm2: ZooKeeper stoped":::
:::spoiler 修改 stophdfs
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/stophdfs修改內容 :
第 13 行,更改為
ssh bigboss@$n hadoop-daemon.sh stop datanode &>/dev/null
第 18 行,更改為
ssh bigboss@"$m" hadoop-daemon.sh stop secondarynamenode &>/dev/null
第 20 行,更改為
ssh bigboss@"$m" hadoop-daemon.sh stop namenode &>/dev/null修改結果 :
#!/bin/bash
m="dtm1"
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
#n=$(hostname)
#[ ${n:0:3} != "adm" ] && echo "oops, pls return to admxxx" && exit 1
for n in $w
do
nc -w 1 -z $n 22 &>/dev/null
if [ "$?" == "0" ]; then
ssh bigboss@$n hadoop-daemon.sh stop datanode &>/dev/null
[ "$?" == "0" ] && echo "$n: Data Node stoped"
fi
done
ssh bigboss@"$m" hadoop-daemon.sh stop secondarynamenode &>/dev/null
[ "$?" == "0" ] && echo "$m: Secondary Name Node stoped"
ssh bigboss@"$m" hadoop-daemon.sh stop namenode &>/dev/null
[ "$?" == "0" ] && echo "$m: Name Node stoped":::
:::spoiler 修改 stopjps
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/stopjps修改內容 :
新增以下這行
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
第 5 行,更改為
for n in $w修改結果 :
#!/bin/bash
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
for n in $w
do
ssh $n 'touch /tmp/jlog.stop'
ssh $n "cat /tmp/jps-$n.log"
echo ""
done:::
:::spoiler 修改 stopmaxctn
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/stopmaxctn修改內容 :
新增以下這行
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
第 5 行,更改為
for n in $w修改結果 :
#!/bin/bash
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
for n in $w
do
ssh $n 'touch /tmp/maxjlog.stop'
ssh $n "cat /tmp/jps-$n.log | uniq"
echo ""
done:::
:::spoiler 修改 stopyarn
修改命令 :
$ nano -l ~/vmusdt/hdp33/bin/stopyarn修改內容 :
第 5 行,更改為
yn=5
第 15 行,更改為
ssh bigboss@$n yarn-daemon.sh stop nodemanager &>/dev/null
第 21 行,更改為
ssh bigboss@"$rs" mr-jobhistory-daemon.sh stop historyserver &>/dev/null
第 23 行,更改為
ssh bigboss@"$rs" yarn-daemon.sh stop resourcemanager &>/dev/null修改結果 :
#!/bin/bash
nn="dtm1"
rs="dtm2"
yn=5
w=$(cat /etc/hosts | grep -e ' dtw[0-9]' | cut -d' ' -f2)
#n=$(hostname)
#[ ${n:0:3} != "adm" ] && echo "oops, pls return to admxxx" && exit 1
c=0
for n in $w
do
if [ "$c" -le "$yn" ]; then
ssh bigboss@$n yarn-daemon.sh stop nodemanager &>/dev/null
[ "$?" == "0" ] && echo "$n: Node Manager stoped"
c=$(( c+1 ))
fi
done
ssh bigboss@"$rs" mr-jobhistory-daemon.sh stop historyserver &>/dev/null
[ "$?" == "0" ] && echo "$rs: Job History Server stoped"
ssh bigboss@"$rs" yarn-daemon.sh stop resourcemanager &>/dev/null
[ "$?" == "0" ] && echo "$rs: Resource Manager stoped":::
下載資科平台套件 dtwget
dtwget 程式功能 :
下載 DT 套件檔至 ~/vmausdt/hdp33/opt 這目錄下載命令 :
$ dtwget 33命令結果 :
download DT packages ? (YES/NO) YES
hadoop-3.3.3.tar.gz ok
apache-hive-3.1.3-bin.tar.gz ok
pig-0.17.0.tar.gz ok
spark-3.2.1-bin-hadoop3.2.tgz ok
hbase-2.4.13-bin.tar.gz ok
apache-zookeeper-3.6.3-bin.tar.gz ok複製 資科平台 套件 dtcopy
程式功能 :
主要是複製 dta1 主機 /home/bigboss/vmusdt/hdp33/opt 這目錄至 dts1, dts2, dts3, dtm1, dtm2, dtw1, dtw2, dtw3, dtw4, dtw5, dtw6 這十一部主機的 /opt 目錄命令 :
$ ./bin/dtcopy 33:::spoiler 命令結果
dta1 /opt/ ok
dta1 /opt/bin ok
dta1 /etc/hosts ok
dts1 /opt/ ok
dts1 /opt/bin ok
dts1 /etc/hosts ok
dts2 /opt/ ok
dts2 /opt/bin ok
dts2 /etc/hosts ok
dts3 /opt/ ok
dts3 /opt/bin ok
dts3 /etc/hosts ok
dtm1 /opt/ ok
dtm1 /opt/bin ok
dtm1 /etc/hosts ok
dtm2 /opt/ ok
dtm2 /opt/bin ok
dtm2 /etc/hosts ok
dtw1 /opt/ ok
dtw1 /opt/bin ok
dtw1 /etc/hosts ok
dtw2 /opt/ ok
dtw2 /opt/bin ok
dtw2 /etc/hosts ok
dtw3 /opt/ ok
dtw3 /opt/bin ok
dtw3 /etc/hosts ok
dtw4 /opt/ ok
dtw4 /opt/bin ok
dtw4 /etc/hosts ok
dtw5 /opt/ ok
dtw5 /opt/bin ok
dtw5 /etc/hosts ok
dtw6 /opt/ ok
dtw6 /opt/bin ok
dtw6 /etc/hosts ok:::
複製 資科平台 設定檔 dtconf
命令 :
$ dtconf 33將每台電腦重新開機 ( a1 最後 )
$ ssh dts1 sudo reboot
$ ssh dts2 sudo reboot
$ ssh dts3 sudo reboot
$ ssh dtm1 sudo reboot
$ ssh dtm2 sudo reboot
$ ssh dtw1 sudo reboot
$ ssh dtw2 sudo reboot
$ ssh dtw3 sudo reboot
$ ssh dtw4 sudo reboot
$ ssh dtw5 sudo reboot
$ ssh dtw6 sudo reboot
$ ssh dta1 sudo reboot:::spoiler 小確幸程式
程式功能 :
- 將所有 dt VM 重新開機
- 將所有 dt VM 關機
- 確認 dt 內網狀況
#!/bin/bash
# var
an=$(cat /etc/hosts | tr -s ' ' | grep -E ' dta[0-9]' | cut -d " " -f 2)
sn=$(cat /etc/hosts | tr -s ' ' | grep -E ' dts[0-9]' | cut -d " " -f 2)
mn=$(cat /etc/hosts | tr -s ' ' | grep -E ' dtm[0-9]' | cut -d " " -f 2)
wn=$(cat /etc/hosts | tr -s ' ' | grep -E ' dtw[0-9]' | cut -d " " -f 2)
usage() {
cat<<EOF
Usage:
$(basename "${BASH_SOURCE[0]}") [options]
Available options:
net check ssh connection
reboot reboot Hadoop Cluster
stop poweroff Hadoop Cluster
EOF
exit
}
case $1 in
net)
for n in $an $sn $mn $wn
do
if ! nc -w 1 -z "$n" 22 &>/dev/null; then
echo "${n} ssh Error !" && contiue
else
echo "${n} ssh OK !"
fi
done
;;
reboot)
for r in $wn $mn $sn $an
do
ssh "$r" 'sudo reboot'
done
;;
stop)
for p in $wn $mn $sn $an
do
ssh "$p" 'sudo poweroff'
done
;;
*)
usage
;;
esac:::
檢測 資料科技 平台
dthdpchk 檢查
命令 :
$ dthdpchk:::spoiler 命令結果
[dta1]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dts1]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dts2]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dts3]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtm1]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtm2]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtw1]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtw2]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtw3]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtw4]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtw5]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.
[dtw6]
Hadoop 3.3.3
Native library checking:
hadoop: true /opt/hadoop-3.3.3/lib/native/libhadoop.so
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
bzip2: true /lib/x86_64-linux-gnu/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L: true /lib/x86_64-linux-gnu/libisal.so.2
PMDK: false The native code was built without PMDK support.:::
格式化 HDFS 分散檔案系統
命令 :
$ formathdfs執行結果 :
Are you sure ? (YES/NO) YES
formathdfs ok檢查 formathdfs
bigboss@dta1:~/vmusdt$ ssh dtm1 tree nn
nn
└── current
├── fsimage_0000000000000000000
├── fsimage_0000000000000000000.md5
├── seen_txid
└── VERSION
1 directory, 4 files
$ ssh dtm1 tree dn
dn [error opening dir]
0 directories, 0 files啟動 資科平台
啟動 HDFS 分散式檔案系統
命令 :
$ starthdfs命令結果 :
dtm1: Name Node Started
dtm1: Secondary Name Node started
dtw1: Data Node started
dtw2: Data Node started
dtw3: Data Node started
dtw4: Data Node started
dtw5: Data Node started
dtw6: Data Node started執行 hls 檢查 是否符合預期
$ hls
[dtm1]
1155 SecondaryNameNode
996 NameNode
[dtw1]
1191 DataNode
[dtw2]
1193 DataNode
[dtw3]
1192 DataNode
[dtw4]
1186 DataNode
[dtw5]
1194 DataNode
[dtw6]
1192 DataNode$ ssh dtw1 tree dn
dn
├── current
│ ├── BP-1285703481-192.168.66.114-1657012142491
│ │ ├── current
│ │ │ ├── dfsUsed
│ │ │ ├── finalized
│ │ │ ├── rbw
│ │ │ └── VERSION
│ │ ├── scanner.cursor
│ │ └── tmp
│ └── VERSION
└── in_use.lock
6 directories, 5 files啟動 YARN 分散式運算系統
命令 :
$ startyarn命令結果 :
dtm2: Resource Manager started
dtm2: Job History Server started
dtw1: Node Manager started
dtw2: Node Manager started
dtw3: Node Manager started
dtw4: Node Manager started
dtw5: Node Manager started
dtw6: Node Manager started執行 hls ,檢查 是否符合預期
$ hls
[dtm1]
1157 SecondaryNameNode
1004 NameNode
[dtm2]
1077 ResourceManager
1199 JobHistoryServer
[dtw1]
1461 NodeManager
1191 DataNode
[dtw2]
1194 DataNode
1404 NodeManager
[dtw3]
1191 DataNode
1402 NodeManager
[dtw4]
1195 DataNode
1405 NodeManager
[dtw5]
1194 DataNode
1406 NodeManager
[dtw6]
1193 DataNode
1404 NodeManager測試 資科平台
命令 :
$ dtest命令結果 :
[HDFS]
Live datanodes (6):
Name: 192.168.66.120:9866 (dtw1)
Name: 192.168.66.121:9866 (dtw2)
Name: 192.168.66.122:9866 (dtw3)
Name: 192.168.66.123:9866 (dtw4)
Name: 192.168.66.124:9866 (dtw5)
Name: 192.168.66.125:9866 (dtw6)
[YARN]
Total Nodes:6
Node-Id Node-State Node-Http-Address Number-of-Running-Containers
dtw6:42613 RUNNING dtw6:8042 0
dtw1:41169 RUNNING dtw1:8042 0
dtw3:36145 RUNNING dtw3:8042 0
dtw4:41433 RUNNING dtw4:8042 0
dtw5:40741 RUNNING dtw5:8042 0
dtw2:38177 RUNNING dtw2:8042 0
[MapReduce]
Estimated value of Pi is 3.14400000000000000000
[Spark]
Pi is roughly 3.140400
[HBase]