Hadoop | 好用的脚本分享

news2024/12/29 10:39:04


知识目录

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630497.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023版一线大厂Java面试八股文(最新版)1000+ 面试题附答案详解,最全面详细

Java 面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。现如今&#xff0c;Java 面试的本质就是八股文&#xff0c;把八股文面试题背好&#xff0c;面试才有可能表现好。…

Python爬虫之Scrapy框架系列(21)——重写媒体管道类实现保存图片名字自定义及多页爬取

目录&#xff1a; 重写框架自带媒体管道类部分方法实现保存图片名字的自定义&#xff1a;1.爬虫文件&#xff1a;2.items.py文件中设置特殊的字段名&#xff1a;3.settings.py文件中开启自建管道并设置文件存储路径&#xff1a;4.编写pipelines.py5.观察可发现完美实现&#xf…

JetBrains 激活方式的区别

文章目录 简介激活方式 简介 JetBrains 是一家全球知名的软件开发工具公司。 JetBrains 成立于 2000 年&#xff0c;总部位于捷克共和国的布拉格。该公司致力于为开发者提供高效、智能和创新的软件开发工具&#xff0c;以提升开发人员的生产力和开发体验。 JetBrains 的主要…

Redis的主从复制、哨兵机制、集群

一、主从复制 1、定义 主&#xff1a;master以写为主当master数据变化的时候从&#xff1a;slave以读为主自动将新的数据异步同步到其他slave数据库 2、作用 读写分离、容灾恢复、数据备份、水平扩容支撑高并发。 3、使用方式——配从不配主 权限配置&#xff1a;master如…

【图书推荐 | 13】后端系列

【赠书活动第十二期 】 图书推荐 本期书籍&#xff1a;后端系列 图书列表 本期图书列表&#xff1a; Spring Cloud 微服务快速上手项目驱动零起点学JavaNode.js 从基础到项目实战Diango Web 开发实例精解Flask Web 全栈开发实战精通Hadoopsmysql 数据库基础与实战应用Neo4j 图谱…

指针--用指针变量作函数参数的实例(按值调用与模拟按引用调用)、函数指针及其应用

一、用指针变量作函数参数的实例 思考题&#xff1a; 例题&#xff1a;从键盘输入某班学生某门课成绩&#xff08;每班人数最多不超过40人&#xff0c;具体人数由键盘输入&#xff09;&#xff0c;是分析下列程序是否能实现计算并输出最高分以及相应学号。 #include <stdi…

群晖 NAS 外网访问设置 - 腾讯 DNSPod

目录 ​编辑 一、使用DNSPod&#xff0c;实现DDNS&#xff08;动态域名&#xff09; 二、公共概念厘清 三、腾讯DNSPod上详细设置步骤 1. 打开DNSPod.cn网站并登录 2. 登录成功后&#xff0c;选择【我的域名】-> 【添加域名】 3. 添加群晖NAS需要二级域名&#xff08…

Visual Studio封装静态链接库至新静态库,供程序调用

熟悉Windows开发的人都肯定了解静态链接库和动态链接库。 最近遇到一个问题&#xff1a; A静态库是使用VS编译&#xff0c;因为C版本的问题&#xff0c;并不能直接在Qt中被调用&#xff0c;因为会报头文件某处错误。 因为A库很大&#xff0c;同时又不想修改太多A库源文件&#…

开源社章程(2023版)

第 1 条 开源社是由志愿贡献于开源事业的个人志愿者&#xff0c;依 “贡献、共识、共治” 原则所组成的开源社区。第 2 条 开源社的英文名称为“KAIYUANSHE”&#xff0c;官方网站地址为 https://kaiyuanshe.cn/第 3 条 开源社的愿景为&#xff1a;立足中国、贡献全球&#xff…

English Learning - L3 作业打卡 Lesson5 Day36 2023.6.9 周五

English Learning - L3 作业打卡 Lesson5 Day36 2023.6.9 周五 引言&#x1f349;句1: So next time you are on a train, look around and see what other people are reading, but dont jump to any conclusions.成分划分弱读连读爆破语调 &#x1f349;句2: You will probab…

MIT 6.S081 Lab One

MIT 6.S081 Lab One 引言sleep(难度&#xff1a;Easy)解析Lab代码实现 pingpong&#xff08;难度&#xff1a;Easy&#xff09;Lab代码实习 小结 引言 本文为 MIT 6.S081 2020 操作系统 实验一解析。 MIT 6.S081课程前置基础参考: 基于RISC-V搭建操作系统系列 sleep(难度&…

English Learning - L3 作业打卡 Lesson5 Day34 2023.6.7 周三

English Learning - L3 作业打卡 Lesson5 Day34 2023.6.7 周三 引言&#x1f349;句1: The woman reading the romantic novel could be a lawyer.成分划分弱读连读爆破语调 &#x1f349;句2: She just wants a light read to take her mind off work.成分划分弱读连读爆破语调…

STM32读取MQ2烟雾浓度数据判断烟雾是否超标

【1】MQ2传感器是什么&#xff1f; MQ2传感器是一种可探测多种气体的传感器&#xff0c;常用于监测烟雾、液化气、丙酮、乙醇、甲醛、天然气等有害气体。MQ2传感器基于半导体敏感元件&#xff0c;通过检测气体中有害物质的浓度变化来实现气体检测。 MQ2传感器具有以下特点&a…

Python的self作用,以及__init__,__new__

本章来探讨一下Python类的self作用&#xff0c;以及__init__,__new__。 为什么是探讨&#xff0c;不是学习&#xff0c;因为菜&#x1f40e;&#xff1b; 先看个例子&#xff1a; class Example:def animal(self):self.dog "大黄"def Dog(self):print(self.dog)if _…

【前端 - CSS】第 10 课 - CSS 引入方式

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、CSS 引入方式 2.1、内部样式表 2.2、外部样式表 2.3、行内样式 3、总结 1、缘起 要想在 HTML 代码中写入 CSS 代…

English Learning - L3 作业打卡 Lesson5 Day33 2023.6.6 周二

English Learning - L3 作业打卡 Lesson5 Day33 2023.6.6 周二 引言&#x1f349;句1: And theres a student reading an English textbook.成分划分弱读连读语调 &#x1f349;句2: What do their choices say about them?成分划分连读爆破语调 &#x1f349;句3: Do you jud…

nodejs+vue+Express论坛网站34t91

本论坛网站有管理员&#xff0c;用户&#xff0c;普通管理员。管理员功能有个人中心&#xff0c;用户管理&#xff0c;普通管理员管理&#xff0c;论坛类别管理&#xff0c;交流论坛管理&#xff0c;系统管理等。用户功能有个人中心&#xff0c;交流论坛管理&#xff0c;我的收…

华为OD机试真题 JavaScript 实现【水仙花数】【2022Q4 100分】

一、题目描述 所谓水仙花数&#xff0c;是指一个n位的正整数&#xff0c;其各位数字的n次方和等于该数本身。 例如153是水仙花数&#xff0c;153是一个3位数&#xff0c;并且153 1^3 5^3 3^3。 二、输入描述 第一行输入一个整数n&#xff0c;表示一个n位的正整数。n在3到…

单容水箱建模(自衡单容水箱+无自衡单容水箱)

自衡单容水箱Simulink建模和PLC源代码请参看下面文章链接: 单容双容水箱建模(simulink仿真+PLC代码)_RXXW_Dor的博客-CSDN博客PLC通过伯努利方程近似计算水箱流量详细内容请参看下面的文章博客PLC通过伯努利方程近似计算水箱流量(FC)_怎么用伯努利方程求某水位流量_RXXW_Dor的…

基础汇编语言编程

目录 什么是汇编语言&#xff1f; 工程搭建 新建工程 环境设置 测试是否成功 正式学习汇编语言 数据处理指令 填充&#xff0c;加&#xff0c;减&#xff0c;乘 思考&#xff1a;我们可以看到R0寄存器可以存放8位十六进制数&#xff0c;那么0x12345678能不能用mov存入&am…