Hadoop | 好用的脚本分享

Hadoop | 好用的脚本分享_第1张图片


知识目录

  • 一、写在前面✨
  • 二、一键安装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中一些好用的脚本,有不清楚的步骤欢迎给我留言!

这就是今天要分享给大家的全部内容了,我们下期再见!

你可能感兴趣的:(#,Hadoop,hadoop,大数据,分布式)