主頁 >  其他 > Shell腳本一次性安裝JDK&MySql&Hadoop&Hive&Zeepelin&Zookeeper&Hbase&Sqoop

Shell腳本一次性安裝JDK&MySql&Hadoop&Hive&Zeepelin&Zookeeper&Hbase&Sqoop

2020-12-04 11:14:44 其他

目錄

  • 前言
  • 一、安裝前的準備
  • 二、shell安裝MySQL
  • 三、shell安裝&配置
    • 1.洗掉重復檔案&配置
    • 2.解壓安裝包&重命名&授權
    • 3.配置環境變數
    • 4.Hadoop配置
    • 5.Hive配置
    • 6.Zeppelin配置
    • 7.Zookeeper配置
    • 8.Hbase配置
    • 9.Sqoop配置


前言

在使用計算機的時候,我們的程式越來越多,服務也越來越多,所以我們在拿到一臺新機器的時候總是習慣性的去安裝那些我們常用的程式&服務;使用虛擬機時也是一樣的,所以為了方便以后的操作,我們可以嘗試寫shell腳本來一次性完成我們需要的所有安裝&配置操作,

  • MySql服務用wget獲取MySql安裝包安裝的,這一部分時間較長,所以我單獨列出來安裝MySql的腳本,其他的服務通過本地安裝包解壓之后配置安裝的所以統一放在一起;
  • 由于hive初始化時后臺操作進入MySql并創建了資料庫,所以我推薦先安裝MySql之后再運行配置剩余全部的shell腳本;
  • 如果在MySql服務未安裝時先執行整體配置的腳本則會報hive初始化失敗的報錯;

代碼提取:百度云提取鏈接
提取碼:uwkp


一、安裝前的準備

  • 一臺網路通暢的虛擬機
  • 所有服務的安裝包(上傳至虛擬機)

這里列出本文安裝的所有服務的安裝包資訊

  • jdk-8u111-linux-x64.tar.gz
  • mysql-community-release-el7-5.noarch.rpm
  • hadoop-2.6.0-cdh5.14.2.tar.gz
  • mysql-connector-java-5.1.32.jar
  • hadoop-native-64-2.6.0.tar
  • hive-1.1.0-cdh5.14.2.tar.gz
  • hbase-1.2.0-cdh5.14.2.tar.gz
  • zeppelin-0.8.2-bin-all.tgz
  • zookeeper-3.4.5-cdh5.14.2.tar.gz
  • sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz
  • scala-2.12.10.tgz

二、shell安裝MySQL

這一部分在安裝前為檢測是否有上一次安裝過的MySQL服務的痕跡,后面將補上這一部分內容;

  • yum update =>更新yum
  • SEARCH WGET AND ISTALL WGET =>安裝wget
  • WGET MYSQL PACKAGE =>wget獲取MySQL安裝包
  • RMP INSTALL MySQL =>安裝MySQL
  • INSTALL MYSQL-SERVER I=>安裝MySQL服務
  • CHINESE GARBLED PROBLEM =>修改MySQL字符集,解決中文亂碼問題
#!/bin/bash
echo "start to update yum ..."
VAR= "yum -y update>/root/test.log 2>&1"
`eval $VAR`
#-------------SEARCH WGET AND ISTALL WGET-------------------
VAR=`yum search wget|grep wget.|awk -F' ' '{print $1}'`
VAR=${VAR##*=}
echo " yum search wget find:$VAR"
echo "start to install $VAR"
VAR="yum -y install $VAR>/root/test.log 2>&1"
`eval $VAR`
#驗證wget是否安裝成功
VAR=`awk -F '!'  'END{print $1}' /root/test.log`
if [[ $VAR =~ ^Complete ]]
then
    echo "install wget success"
else
    echo "install wget failed,please reinstall..."
	exit 1
fi
#------------------WGET MYSQL PACKAGE-----------------------
echo
echo "start to download package"
VAR=http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
OPER=`eval "wget $VAR>/root/test.log 2>&1"`
#驗證wget獲取MySQL package結果 
ls>test.log
VAR=`cat test.log`
VAR=($VAR)
COUNT=0
for var in ${VAR[@]}
do
    if [[ $var =~ ^mysql ]]
    then
        echo "download package success!"
        COUNT=0
        break
    else
        ((COUNT++))
    fi
done

if [ $COUNT -ne 0 ]
then
    echo "download package failed .... please redownload package!"
    exit 1
fi
echo

#----------------RMP INSTALL-----------------------
echo "start to install mysql"
VAR=`ls ./|grep mysql*`
OPER=`eval "rpm -ivh $VAR>/root/test.log 2>&1"`
#驗證MySQL安裝是否成功
VAR=`awk -F' ' 'END{print $1}' /root/test.log`
if [[ $VAR =~ ^mysql ]]
then
    echo "install mysql successfully"
else
    echo "install mysql failed,please reinstall..."
	exit 1
fi
echo

#---------------MYSQL-SERVER INSTALL-----------------
echo "start to install mysql server..."
VAR="yum -y install mysql-server>/root/test.log 2>&1"
`eval $VAR`
#驗證MySQL服務是否安裝成功
VAR=`rpm -qa|grep -i mysql`
VAR=($VAR)
if [[ ${#VAR[*]} -ge 4 ]]
then
    echo "mysql server install success"
else
    echo "mysql server install fail"
	exit 1
fi


#------------------CHINESE GARBLED PROBLEM------------------------
echo "start to modify mysql-my.cnf"
`echo "#mysql-setup">/etc/my.cnf`
sen="[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
[mysql]
default-character-set=utf8
"
lines=`echo $sen`
for line in $lines
do
    VAR=`eval "sed -i '/#mysql-setup/i\$line' /etc/my.cnf"`
done
#驗證修改是否完成
VAR=`awk -F' ' 'END{print $1}' /etc/my.cnf`
if [[ $VAR =~ ^#mysql ]]
then
	echo "modify my.cnf success"
else	
	echo "modify my.cnf failed,please check shell..."
	exit 1
fi
echo "restart mysql"
VAR=`eval "systemctl restart mysql"`
echo "install mysql finished !"

三、shell安裝&配置

先將整體的安裝包解壓到/opt/download檔案夾下(若無此檔案夾,需要手動創建),圖中我解壓到hadoop檔案夾內;接下來就可以啟用shell腳本了;

在這里插入圖片描述


1.洗掉重復檔案&配置

  • 洗掉服務所在的目錄檔案
    本文默認所有服務安裝在/opt/software目錄下,所以只要遞回洗掉目錄software即可;

  • 剔除配置的環境變數
    修改環境變數在/etc/profile下,因為本文插入的環境變數都在done 這一行和unset i這一行之間,所以將這兩行中間的內容洗掉即可;

#!/bin/bash
#------------------REMOVE ALL RELATIVE RESOURCES---------------------
echo "##### start to remove relative resources,included env-vars and software-installation ..."
#獲取配置環境變數的開始行和結束行
BEGIN=`cat -n /etc/profile|grep done|awk '{print $1}'`
END=`cat -n /etc/profile|grep "unset i"|awk '{print $1}'`
RST=$(((--END)-(++BEGIN)))
if [ $RST -gt 0 ]
then
	RST="'"$BEGIN,$END" d'"
	RST="sed -i $RST /etc/profile"
	RST=`eval $RST`
	echo "... /etc/profile cleared"
else
	echo "... /etc/profile empty"
fi
#洗掉服務所在目錄下的所有檔案
if [ -e /opt/software ]
then
	rm -rf /opt/software
	echo "... /etc/profile delete"
else
	echo "... /etc/profile not existed"
fi
echo

2.解壓安裝包&重命名&授權

  • 驗證安裝包是否缺失
    這里防止安裝一半時缺失安裝包的情況,先驗證安裝包是否完整;

  • 安裝目錄是否存在
    統一解壓到/opt/software目錄下,若沒有此目錄則新建此目錄;

  • 解壓&重命名&授權
    存在.tar和.gz的檔案,所以解壓方式也不同;解壓完之后根據安裝包的前半部分和重命名集合里的是否一致,一致則替換名稱,最后將權限修改;

#------------------NAME LIST FOR INSTALLATION------------------------
echo "----------------------------------------------"
echo
echo "#### start to unpack all resources ..."
INSTALL_LIST="jdk-8u111-linux-x64.tar.gz scala-2.12.10.tgz hadoop-2.6.0-cdh5.14.2.tar.gz hive-1.1.0-cdh5.14.2.tar.gz zeppelin-0.8.2-bin-all.tgz zookeeper-3.4.5-cdh5.14.2.tar.gz hbase-1.2.0-cdh5.14.2.tar.gz sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz"

#---------------------SOURCE PACKAGE VAILIDATION---------------------
echo "start to check whether all the resource needed exists?"
LIST=`ls /opt/download/hadoop`


for item in $INSTALL_LIST
do
	if [[ $LIST =~ $item ]]
	then
		continue
	else
		echo "ERROR and will exit for the lack of $item"
		exit 1
	fi
done
echo "unpack all finish."
echo "start to installing..."
echo "first,we'll unpack all the items ..."

#---------------------ENSURE THE UNPACK DESTINATION DIR-----------------------
echo -n "start to check destination directory ..."
DEST_DIR="/opt/software/"

if [ ! -e $DEST_DIR ]
then
	RST=`mkdir $DEST_DIR`
	echo "not exist and has been created"
else
	echo "ok"
fi

cd /opt/software
echo "                                  ---------------"
echo "current dir has been changed into |/opt/software|"
echo "                                  ---------------"

#--------------------UNPACK AND RENAME AND CHOWN---------------------------------------
RENAME_LIST="java180 scala21210 hadoop260 hive110 zeppelin082 zookeeper345 hbase120 sqoop146"
RENAME_LIST=($RENAME_LIST)
IX=0

for item in $INSTALL_LIST
do
	if [[ $item =~ tar|gz$ ]]
	then
		echo "start to unpack $item ..."
		OPT=${item##*.tar}
		OPT="-"$([ $OPT ] && echo "z" || echo "" )"xf"
		RST=`eval "tar $OPT /opt/download/hadoop/$item"`
		RST=`eval "mv ${item%%-*}* ${RENAME_LIST[$IX]}"`
		echo "unpack $item and rename ${RENAME_LIST[$IX]} ok!"
		`chown -R root:root ${RENAME_LIST[$IX]}`
	fi
	((IX++))
done
echo

3.配置環境變數

  • 目錄名轉大寫并判斷配置path時是否包含sbin
  • 插入時以unset i 這一行為基準,一直往這一行上方插入即可
  • CLASSPATH和LOGDIR單獨插入
#---------------------ENV_VAR : ALL_XXX_HOME--------------------------------
echo "----------------------------------------------"
echo
echo "#### start to config environment variables ..."
RENAME_ITEMS="java180_bin scala21210_bin hadoop260_bin_sbin hive110_bin zeppelin082_bin zookeeper345_sbin hbase120_bin sqoop146_bin"
ROAD="export PATH="
for item in $RENAME_ITEMS
do
	HOME=${item%%[0-9]*}
	#拼出export對應的字串
	HOME=${HOME^^}"_HOME"
	#名稱轉大寫
	T="${item//_/ }"
	FIRST=1
	for var in $T
	do
		if [ $FIRST -eq 1 ]
		then
			FIRST=0
		else
			#插入path前拼出字串
			ROAD+="$"$HOME"/"$var":"
		fi
	done
	echo " .... $HOME finished"
	HOME="export $HOME=$DEST_DIR${item%%_*}"
	#往unset i 上方插入
	RST=`eval "sed -i '/unset i/i\$HOME' /etc/profile"`
done
ROAD+="$""PATH"
RST=`eval "sed -i '/unset i/i\$ROAD' /etc/profile"`
echo " .... PATH finished"
#--------------------------CLASS_PATH---------------------
ROAD="export CLASSPATH=.:$""JAVA_HOME/lib/tools.jar:$""JAVA_HOME/lib/dt.jar"
RST=`eval "sed -i '/unset i/i\$ROAD' /etc/profile"`
echo " .... JAVA_CLASSPATH finished"
#---------------------ZOOKEEPER LOGS---------------------
ROAD="export LOGDIR=$""SQOOP_HOME/mylog/"
RST=`eval "sed -i '/unset i/i\$ROAD' /etc/profile"`
echo " .... ZOOLEEPER LOGDIR finished"

#---------------------ACTIVATE ENV_VAR-------------------
#激活環境變數
source /etc/profile
echo "environment variables have been written into /etc/profile and activated"
echo
#獲取虛擬機ip地址
HOST_IP=`ip addr|awk -v FS='/' '/noprefixroute ens33/{print $1}'|awk -F' ' '{print $2}'`
echo
echo "----------------------------------------------"
echo "$HOSTNAME IP is $HOST_IP"
echo "----------------------------------------------"

4.Hadoop配置

  • hadoop-native-64-2.6.0.tar解壓至hadoop根目錄的lib目錄下的native檔案夾
  • 修改hadoop-env.sh;
  • core-site.xml hdfs-site.xml mapred-site.xml.template yarn-site.xml在同一目錄下,使用回圈修改;
  • 格式化Namenode并驗證
#---------------------hadoop-----------------------------
echo
echo "Starting to modify hadoop..."
cd /opt/download/hadoop
VAR=`ls -F | grep "^hadoop-native"`
TMP=`eval "tar -xvf $VAR -C ${HADOOP_HOME}/lib/native"` 
DEST_DIR=$HADOOP_HOME"/etc/hadoop/"
REP="export JAVA_HOME=${JAVA_HOME}"
`sed -i "/^export JAVA_HOME=/c$REP" ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh`
CONFS="core-site.xml hdfs-site.xml mapred-site.xml.template yarn-site.xml"

readonly CONFI1="
<property>
<name>hadoop.tmp.dir</name>
<value>$HADOOP_HOME</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://${HOST_IP}:9000</value>
</property>
"

RST=`mkdir $HADOOP_HOME"/tmp"`
RST=`mkdir $HADOOP_HOME"/tmp/name" $HADOOP_HOME"/tmp/data"`

readonly CONFI2="
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>$HADOOP_HOME/tmp/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>$HADOOP_HOME/tmp/data</value>
</property>
"

readonly CONFI3="
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
"

readonly CINFI4="
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
"

IX=1
for file in $CONFS
do
	if [[ $file =~ .template ]]
	then
		CMD="mv $DEST_DIR$file $DEST_DIR${file%.*}"
		RST=`eval $CMD`
		file=${file%.*}
	fi
	CMD="sed -i '/<\/configuration>/i\REPL\' $DEST_DIR$file"
	V="CONFI"$IX
	LINES=`eval echo "$"$V`
	echo -n " ---- config $file ..."
	for line in $LINES
	do
		RST=${CMD/REPL/$line}
		RST=`eval $RST`	
	done
	echo " ok"
	((IX++)) 
done

#hadoop namenode format
echo -n " .... start to format namenode ..."
RST=`eval "cd $HADOOP_HOME/tmp/name"`
hdfs namenode -format>/root/nnfmt.log 2>&1
RST=`cat /root/nnfmt.log|grep util.ExitUtil`
RST=${RST##* }
echo $([ $RST -eq 0 ] && echo "ok" || "error")
if [ $RST -ne 0 ]
then
	exit 1
fi
echo
echo "Hadoop modify finish."
echo

5.Hive配置

  • 創建目錄warehouse
  • 創建并修改hive-site.xml
  • 拷貝mysql的jar包
  • 初始化hive
#-------------------------hive-----------------------
echo "----------------------------------------------"
echo
echo "Let's modify hive..."
#-------------create warehouse----------------------
cd $HIVE_HOME
#驗證路徑是否正確
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ hive110$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
#創建目錄warehouse
echo "first,we need to create directory:warehouse..."
mkdir warehouse/
echo "Directory warehouse create finish!"
echo

#-------------hive-site.xml-------------------------
echo "second,we'll modify hive-site.xml...."
cd ./conf
#驗證路徑是否正確
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ conf$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
TEXT="<?xml#version=\"1.0\"#encoding=\"UTF-8\"#standalone=\"no\"?>
<?xml-stylesheet#type=\"text/xsl\"#href=\"configuration.xsl\"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>$HIVE_HOME/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://${HOST_IP}:3306/hive110?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
</configuration>
"
#hive-site.xml不存在,創建并插入;考慮到sed無法插入空檔案,先echo一行進入再sed插入,最后將那一行洗掉
touch hive-site.xml
`echo "#setup">./hive-site.xml`
lines=`echo $TEXT`
for line in $lines
do
    VAR=`eval "sed -i '/#setup/i\${line//#/ }' hive-site.xml"`
done
VAR=`awk -F'#' 'END{print $2}' hive-site.xml`
if [[ $VAR =~ ^setup ]]
then
    echo "modify hive-site.xml success"
else
    echo "modify hive-site.xml failed,please check shell..."
    exit 1
fi
sed -i '$d' hive-site.xml
echo
#---------------------------copy mysql-connection---------------
echo "Third,we should copy drive to hive..."
cd ../lib
#驗證路徑是否正確
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ lib$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
#拷貝jar包
cp /opt/download/hadoop/mysql*.jar ./
echo "copy  drive ok!"
echo

#-----------------------Initialize the environment---------------------------
echo "last,we must initialize the environment...."
cd ../bin
#驗證路徑是否正確
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ bin$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
echo "start to initialize..."
#初始化hive
VAR="./schematool -dbType mysql -initSchema>/root/test.log 2>&1"
`eval $VAR`
#驗證初始化結果
VAR=`awk -F' ' 'END{print $2}' /root/test.log`
if [[ $VAR =~ ^completed ]]
then
    echo "initialize successfully"
else
    echo "initalize failed,please reinitalize..."
    exit 1
fi
echo
echo "hive Configurate finish!"
echo

6.Zeppelin配置

  • 配置zeppelin-site.xml
  • 配置zeppelin-env.xml
  • 拷貝hive-site.xml&jar包
#---------------------zeppelin---------------------------
#--------------------authorize---------------------
echo "----------------------------------------------"
echo
echo "Next,we start to deploy zeppelin..."
#授權和上面重復,但不影響程式,可以刪掉這一部分
echo "First,we need to authorize directory with its files...."
cd $ZEPPELIN_HOME
cd ../
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ software$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
VAR=`ls|grep zeppe*`
`chown -R root:root $VAR`
echo "authorized success!"
echo
#-----------modify zeppelin-site.xml---------
echo "Second,we need to modify zeppelin-site.xml..."
cd $ZEPPELIN_HOME
cd ./conf
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ conf$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
VAR=`ls|grep zeppelin-site*`
echo "We need to copy $VAR one more to modify"
cp $VAR ${VAR%.*}
echo "Copy success,next to modify zeppelin-site.xml..."
VAR="sed -i '24s/127.0.0.1/$HOST_IP/' zeppelin-site.xml"
`eval $VAR`
VAR="sed -i '30s/8080/8000/' zeppelin-site.xml"
`eval $VAR`
VAR=`awk 'NR==30{print $0}' zeppelin-site.xml`
VAR=`echo $VAR | tr -cd "[0-9]"`
if [[ $VAR =~ 8000 ]]
then
    echo "modify zeppelin-site.xml success!"
else
    echo  "modify zeppelin-site.xml failed,please check out..."
    exit 1
fi
echo

#-----------modify zeppelin-env.xml---------
echo "Then,let's modify zeppelin-env.sh..."
VAR=`ls|grep zeppelin-env.sh*`
echo "We need to copy $VAR one more to modify"
cp $VAR ${VAR%.*}
echo "Copy success,next to modify zeppelin-env.sh..."
#TEMP=`grep -n "# export JAVA_HOME=" zeppelin-env.sh`
#TEMP=`echo $a | tr -cd "[0-9]"`
#VAR="sed -i '${TEMP}s/#/ /' zeppelin-env.sh"
#`eval $VAR`
#VAR="sed -i '${TEMP}s/$""/${JAVA_HOME//\//\\/}' zeppelin-env.sh"
#`eval $VAR`
REP="export JAVA_HOME=${JAVA_HOME}"
`sed -i "/^# export JAVA_HOME=/c$REP" zeppelin-env.sh`
#TEMP=`grep -n "# export HADOOP_CONF_DIR.*" zeppelin-env.sh`
#TEMP=`echo $a | tr -cd "[0-9]"`
#VAR="sed -i '${TEMP}s/#/ /' zeppelin-env.sh"
#`eval $VAR`
#VAR="sed -i '${TEMP}s/"="/'='${HADOOP_HOME//\//\\/}' zeppelin-env.sh"
#`eval $VAR`
REP="export HADOOP_CONF_DIR=${HADOOP_HOME}"
`sed -i "/^# export HADOOP_CONF_DIR/c$REP" zeppelin-env.sh`
echo "modify zeppelin-env.sh success!"
echo
#--------------cp jar-----------------------
echo "Next,we need to copy .jar and .xml file..."
#拷貝xml和jar包
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ conf$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
`cp ${HIVE_HOME}/conf/hive-site.xml ./`
echo "copy hive-site.xml to current path success!"
`cp ${HADOOP_HOME}/share/hadoop/common/hadoop-common-2.6.0-cdh5.14.2.jar ./`
echo "echo hadoop.jar to current path success!"
`cp ${HIVE_HOME}/lib/hive-jdbc-1.1.0-cdh5.14.2-standalone.jar ./`
echo "copy hive.jar to current path success!"
echo
#-----------------start to switch on service-------------
echo "Finally,we'll start to switch on service..."
cd ../bin
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ bin$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
#啟動服務
./zeppelin-daemon.sh start
echo
echo "Zeppelin modify finish."
echo

7.Zookeeper配置

  • 創建directory mydata&myid
  • 修改 zoo.cfg檔案
#---------------------zookeeper--------------------------
echo "----------------------------------------------"
echo
echo "After,we start to modify zookeeper..."
echo "First,we need to create directory mydata and myid..."
cd $ZOOKEEPER_HOME
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
echo "currentpath: $VAR"
`mkdir mydata myid`
`echo "1">./myid`
echo "create directory finish!"
echo

echo "Second,we'll modify zoo.cfg..."
cd ./conf
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ conf$ ]]
then
    echo -n ""
else
    echo "path error,please check curren path!"
    exit 1
fi
echo "currentpath: $VAR"
VAR=`ls|grep zoo.sample*`
echo "We need to copy $VAR one more to modify"
cp $VAR zoo.cfg
VAR="zoo.cfg"
echo "Copy success,next to modify $VAR..."
REP="dataDir=${ZOOKEEPER_HOME}/mydata"
`sed -i "/^dataDir=/c$REP" $VAR`
TEMP=`grep -n "dataDir=" zoo.cfg`
TEMP=`echo $a | tr -cd "[0-9]"`
SEN="sed -i 'N;${TEMP}aserver.1=master:2888:3888' $VAR"
`eval $SEN`
echo "Modify zoo.cfg success"
echo
echo "Zookeeper modify finish!"
echo

8.Hbase配置

  • 修改hbase.env.sh
  • 修改hbase-site.xml
#---------------------hbase------------------------------
echo "----------------------------------------------"
echo
echo "Afterwards,we start to deploy hbase"
echo "First,we'll modify hbase.env.sh..."
cd ${HBASE_HOME}/conf
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ conf$ ]]
then
    echo -n ""
else
    echo "path error,please check current path!"
    exit 1
fi
echo "currentpath: $VAR"
REP="export JAVA_HOME=${JAVA_HOME}"
`sed -i "/^# export JAVA_HOME=/c$REP" hbase-env.sh`
REP="export HBASE_MANAGES_ZK=false"
`sed -i "/^# export HBASE_MANAGES_ZK/c$REP" hbase-env.sh`
echo "hbase-env.sh has been modified."
echo
echo "Second,we should modify hbase-site.xml..."
TEXT="<property>
<name>hbase.rootdir</name>
<value>hdfs://${HOST_IP}:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.clientport</name>
<value>2181</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>${ZOOKEEPER_HOME}/mydata</value>
</property>
"
lines=`echo $TEXT`
for line in $lines
do
    VAR=`eval "sed -i '/<\/configuration>/i\$line' hbase-site.xml"`
done
echo "hbase-site.xml has been modified."
echo
echo "Hbase  deploy finish!"

9.Sqoop配置

  • 拷貝jar包
  • *配置sqoop-env.sh
#----------------------sqoop-------------------------
echo
echo "----------------------------------------"
echo "Let's start to deploy sqoop..."
echo "First,we need to copy more .jar to path of lib..."
cd ${SQOOP_HOME}/lib
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ lib$ ]]
then
    echo -n ""
else
    echo "path error,please check current path!"
    exit 1
fi
echo "currentpath: $VAR"
`cp /opt/download/hadoop/mysql-connector-java-5.1.32.jar ./`
echo "copy mysql-connector-java-5.1.32.jar to current path success!"
`cp ${HADOOP_HOME}/share/hadoop/common/hadoop-common-2.6.0-cdh5.14.2.jar ./`
echo "copy hadoop-common-2.6.0-cdh5.14.2.jar to current path success!"
`cp ${HADOOP_HOME}/share/hadoop/hdfs/hadoop-hdfs-2.6.0-cdh5.14.2.jar ./`
echo "copy hadoop-hdfs-2.6.0-cdh5.14.2.jar to current path success!"
`cp ${HADOOP_HOME}/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0-cdh5.14.2.jar ./`
echo "copy hadoop-mapreduce-client-core-2.6.0-cdh5.14.2.jar to current path success!"
echo
echo "Second ,we start to modify sqoop.env.sh..."
cd ../conf
`eval "pwd>/root/test.log"`
VAR=`cat /root/test.log`
if [[ $VAR =~ conf$ ]]
then
    echo -n ""
else
    echo "path error,please check current path!"
    exit 1
fi
echo "currentpath: $VAR"
VAR=`ls|grep sqoop-env-template.sh`
echo "We need to copy $VAR one more to modify"
`cp $VAR sqoop-env.sh`
echo "Copy success,next to modify sqoop-env.sh..."
REP="export HADOOP_COMMON_HOME=$HADOOP_HOME"
`sed -i "/^#export HADOOP_COMMON_HOME=/c$REP" sqoop-env.sh`
REP="export HADOOP_MAPRED_HOME=${HADOOP_HOME}/share/common/mapreuce"
`sed -i "/^#export HADOOP_MAPRED_HOME=/c$REP" sqoop-env.sh`
REP="export HBASE_HOME=$HBASE_HOME"
`sed -i "/^#export HBASE_HOME=/c$REP" sqoop-env.sh`
REP="export HIVE_HOME=$HIVE_HOME"
`sed -i "/^#export HIVE_HOME=/c$REP" sqoop-env.sh`
REP="export ZOOCFGDIR=$ZOOKEEPER_HOME"
`sed -i "/^#export ZOOCFGDIR=/c$REP" sqoop-env.sh`
echo "sqoop-env.sh has been modified."
echo
echo "sqoop deploy finish!"
echo
echo "----------------------------------------------"

PS:作者是一枚剛入編程的小白,如果有寫錯或者寫的不好的地方,歡迎各位大佬在評論區留下寶貴的意見或者建議,敬上!如果這篇博客對您有幫助,希望您可以順手幫我點個贊!不勝感謝!


原創作者:wsjslient

作者主頁:https://blog.csdn.net/wsjslient


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/229817.html

標籤:其他

上一篇:代碼貢獻受 Linux 之父親自點名贊賞,酷派獎勵員工 10 萬股期權!

下一篇:centos6 yum 源失效 404

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more