知识目录
- 一、写在前面✨
- 二、一键安装HA🍭
- 三、Hadoop一键启动🔥
- 四、一键启动可视化工具🍭
- 五、结语🔥
一、写在前面✨
大家好!我是初心,希望我们一路走来能坚守初心!
🏠 个人主页:初心%个人主页
今天跟大家分享的文章是 在Hadoop使用过程中,可以提升我们学习效率的脚本分享。
,希望能帮助到大家!本篇文章收录于 初心 的 Hadoop 专栏。
💕 不努力就只能听到别人的好消息。』—— 佚名「网易云音乐热评」
二、一键安装HA🍭
- <1>脚本功能描述
一键安装HA脚本主要用于安装HA高可用集群环境,避免复杂的搭建过程。
- <2>脚本注意事项
1.四个结点均配置好了免密登录,并且关闭了防火墙!!!
2.可以使用 xsync 脚本进行从 hadoop102 分发到各结点的操作。
3.我的软件是:jdk-8u301-linux-x64.tar.gz,apache-zookeeper-3.5.7-bin.tar.gz,hadoop-3.1.3.tar.gz,软件版本要一致。
4.如果你之前安装失败了,将所有涉及到的文件和目录删除,然后重启所有虚拟机,重新开始。
5.将8个配置文件修改好上传到虚拟机。需要修改主机名,ssh路径,用户名
core-site.xml,hdfs-site.xml,hadoop-env.sh,workers,yarn-site.xml,mapred-site.xml(都在hadoop/etc/hadoop目录下)zoo.cfg(zookeeper/conf/目录下),my_env.sh(/etc/profile.d/)
- <3>脚本内容
#!/usr/bin/env bash
# 获取用户主机名
function testRead(){
read -p "请输入你的四台主机名:(用空格隔开 如果敲错了 按下ctrl+backspace可以删除 注意一定要有四个)" one two three four
if [ ! -n $four ]
then
echo "Args Number Input Error..."
exit;
fi
}
# 获取用户的8个配置文件存放路径和将要安装的目录
function getFilesAndTargetDir(){
read -p "请输入你的软件包路径(绝对路径)" softwareDir
read -p "请输入你的8个配置文件存放路径(配置文件已修改好 绝对路径)" filesDir
read -p "你想要将HA安装在哪个目录下(空目录 绝对路径)" targetDir
}
function getUserPathFileName(){
read -p "你的环境变量配置文件名:(在/etc/profile.d/下 例如my_path.sh 只要文件名)" pathFileName
}
# 1
function unpackSoftwarePackage(){
echo "----------一、解压软件包----------"
sleep 2
echo "----------1.创建hadoop HA高可用目录:$targetDir/----------"
if [ ! -d "$targetDir/" ];then
mkdir $targetDir/
fi
echo "----------2.解压JDK----------"
tar -xzvf $softwareDir/jdk-8u202-linux-x64.tar.gz -C $targetDir/
echo "----------3.解压hadoop----------"
tar -xzvf $softwareDir/hadoop-3.1.3.tar.gz -C $targetDir/
echo "----------4.解压zookeeper----------"
tar -xzvf $softwareDir/apache-zookeeper-3.5.7-bin.tar.gz -C $targetDir/
echo "----------第一步已完成----------"
return 0
}
# 2
function changeName(){
echo "----------二、改名----------"
sleep 2
echo "----------1.重命名Zookeeper----------"
mv $targetDir/apache-zookeeper-3.5.7-bin/ $targetDir/zookeeper
echo "----------2.重命名JDK----------"
mv $targetDir/jdk1.8.0_202/ $targetDir/jdk1.8
echo "----------第二步已完成----------"
return 0
}
# 3
function copyConfigurationFiles(){
echo "----------三、修改八个配置文件----------"
sleep 2
echo "----------1.修改hadoop下的6个文件----------"
cat $filesDir/core-site.xml > $targetDir/hadoop-3.1.3/etc/hadoop/core-site.xml
cat $filesDir/hdfs-site.xml > $targetDir/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
cat $filesDir/mapred-site.xml > $targetDir/hadoop-3.1.3/etc/hadoop/mapred-site.xml
cat $filesDir/yarn-site.xml > $targetDir/hadoop-3.1.3/etc/hadoop/yarn-site.xml
cat $filesDir/workers > $targetDir/hadoop-3.1.3/etc/hadoop/workers
cat $filesDir/hadoop-env.sh > $targetDir/hadoop-3.1.3/etc/hadoop/hadoop-env.sh
echo "----------2.修改zookeeper下的1个文件----------"
mv $targetDir/zookeeper/conf/zoo_sample.cfg $targetDir/zookeeper/conf/zoo.cfg
cat $filesDir/zoo.cfg > $targetDir/zookeeper/conf/zoo.cfg
echo "----------3.修改环境变量----------"
cat $filesDir/$pathFileName > /etc/profile.d/$pathFileName
source /etc/profile.d/$pathFileName
echo "----------4.安装psmisc插件----------"
sudo yum install -y psmisc
ssh $two "sudo yum install -y psmisc"
echo "----------第三步已完成----------"
return 0
}
# 4.
function createDir(){
echo "----------四、创建目录----------"
sleep 2
echo "----------1.创建zkData高可用目录----------"
mkdir $targetDir/zookeeper/zkData
touch $targetDir/zookeeper/zkData/myid
echo "----------2.创建Hadoop数据临时目录----------"
mkdir $targetDir/tmp
echo "----------3.创建JournalNode日志目录----------"
mkdir $targetDir/logs
echo "----------第四步已完成----------"
return 0
}
# 5.
function xsyncHA(){
echo "----------五、分发HA目录----------"
sleep 2
xsync $targetDir/
echo "----------1.分发环境变量配置文件----------"
for i in $two $three $four
do
sudo scp /etc/profile.d/$pathFileName $i:/etc/profile.d/
done
echo "----------2.刷新环境变量----------"
for i in $two $three $four
do
ssh $i "source /etc/profile.d/$pathFileName"
done
echo "----------第五步已完成----------"
return 0
}
# 6.
function changeMyIdOfZK(){
echo "----------六、修改zookeeper的myid 使用ssh方式----------"
sleep 2
echo "---------- 修改two的myid文件------------"
ssh $two "echo '1' >> $targetDir/zookeeper/zkData/myid"
echo "---------- 修改three的myid文件------------"
ssh $three "echo '2' >> $targetDir/zookeeper/zkData/myid"
echo "---------- 修改four的myid文件------------"
ssh $four "echo '3' >> $targetDir/zookeeper/zkData/myid"
echo "----------第六步已完成----------"
}
# 7.
function startZKOnThreeNode(){
echo "----------七、启动ZK----------"
sleep 2
echo "----------启动zookeeper----------"
for i in $two $three $four
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "$targetDir/zookeeper/bin/zkServer.sh start"
done
echo "----------第七步已完成----------"
}
# 8.
function startHadoop(){
echo "----------八、启动hadoop----------"
sleep 2
echo "----------1.启动JournalNode----------"
for i in $one $two $three
do
echo ---------- hadoop $i JournalNode启动 ------------
ssh $i "hdfs --daemon start journalnode"
done
echo "----------2.初始化NameNode----------"
hdfs namenode -format
echo "----------3.初始化Zookeeper----------"
ssh $two "hdfs zkfc -formatZK"
echo "----------4.启动两个NameNode----------"
hdfs --daemon start namenode
ssh $two "hdfs namenode -bootstrapStandby"
echo "----------5.启动集群----------"
start-dfs.sh
echo "----------第八步已完成----------"
echo "----------Hadoop HA高可用搭建已完成----------"
}
# 调用上述函数完成安装HA
testRead
getFilesAndTargetDir
getUserPathFileName
unpackSoftwarePackage
changeName
copyConfigurationFiles
createDir
xsyncHA
changeMyIdOfZK
startZKOnThreeNode
startHadoop
三、Hadoop一键启动🔥
- <1>脚本功能描述
这个脚本的功能就是执行 myHA start/stop(启动/停止)之后,可以一键启动或者停止,Zookeeper,Hadoop高可用,Yarn,HistoryServer。
- <2>脚本内容
#! /bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit;
fi
# 一键启动和关闭 hdfs,zookeeper,yarn,historyserver
case $1 in
"start"){
echo "----------启动zookeeper----------"
for i in hadoop103 hadoop104 hadoop105
do
echo ---------- zookeeper $i 启动 ------------
ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh start"
done
echo "---------- 启动hdfs------------"
ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/start-dfs.sh"
echo "----------启动yarn----------"
ssh hadoop103 "/opt/module/HA/hadoop-3.1.3/sbin/start-yarn.sh"
echo "----------启动historyserver----------"
ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/bin/mapred --daemon start historyserver"
echo "---------- hadoop HA启动成功------------"
};;
"stop"){
echo "----------关闭historyserver----------"
ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
echo "----------关闭yarn----------"
ssh hadoop103 "/opt/module/HA/hadoop-3.1.3/sbin/stop-yarn.sh"
echo "----------关闭hdfs----------"
ssh hadoop102 "/opt/module/HA/hadoop-3.1.3/sbin/stop-dfs.sh"
echo "----------关闭zookeeper----------"
for i in hadoop103 hadoop104 hadoop105
do
echo ---------- zookeeper $i 停止 ------------
ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh stop"
done
echo "---------- hadoop HA停止成功------------"
};;
"status"){
for i in hadoop103 hadoop104 hadoop105
do
echo ---------- zookeeper $i 状态 ------------
ssh $i "/opt/module/HA/zookeeper/bin/zkServer.sh status"
done
};;
*)
echo "Input Args Error"
;;
esac
四、一键启动可视化工具🍭
- <1>脚本功能描述
supersetAndMysql 脚本,执行 supersetAndMysql start/stop 可以一键启动或关闭 Docker ,MySQL,Superset。
- <2>脚本注意事项
MySQL的版本必须是:mysql:5.7.42,Superset的版本必须是:amancevice/superset:0.37.2,否则需要自行到脚本中去修改版本号。
- <3>脚本内容
#! /bin/bash
# 具有一定局限性 msyql和superset 版本固定
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit;
fi
case $1 in
"start"){
echo "----------打开docker----------"
sudo systemctl start docker
echo "----------启动mysql----------"
sudo docker start $mysql
echo "----------启动superset----------"
sudo docker start $superset
};;
"stop"){
echo "----------关闭superset----------"
sudo docker stop $superset
echo "----------关闭mysql----------"
sudo docker stop $mysql
echo "----------关闭docker----------"
sudo systemctl stop docker
};;
esac
五、结语🔥
本次跟大家分享了Hadoop中一些好用的脚本,有不清楚的步骤欢迎给我留言!
✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊