好用hadoop脚本[持续更新]

1. 快速启停Hadoop集群

#!/bin/bash
if [ $# -lt 1 ]
then
	echo "没有输入参数,当前参数个数为0!"
	exit ;
fi

# 设置HDFS和YRAN的主机名称
hdfs_host=node-1
yarn_host=node-2

# 获取HADOOP_HOME
H_M=`echo $HADOOP_HOME`
if [ -z $H_M ]
then
	echo "HADOOP_HOME未设置,程序停止!"
	exit ;
fi

function my_Start()
{
	echo " =================== 启动 hadoop 集群 ==================="
	echo " --------------- 启动 hdfs ---------------"
	ssh $hdfs_host "$H_M/sbin/start-dfs.sh"
	echo " --------------- 启动 yarn ---------------"
	ssh $yarn_host "$H_M/sbin/start-yarn.sh"
	echo " --------------- 启动 historyserver ---------------"
	ssh $hdfs_host "$H_M/bin/mapred --daemon start historyserver"
}

function my_Stop()
{
	echo " =================== 关闭 hadoop 集群 ==================="
	echo " --------------- 关闭 historyserver ---------------"
	ssh $hdfs_host "$H_M/bin/mapred --daemon stop historyserver"
	echo " --------------- 关闭 yarn ---------------"
	ssh $yarn_host "$H_M/sbin/stop-yarn.sh"
	echo " --------------- 关闭 hdfs ---------------"
	ssh $hdfs_host "$H_M/sbin/stop-dfs.sh"
}

case $1 in
"start")
	my_Start
;;
"stop")
	my_Stop
;;
"restart")
	my_Stop
	my_Start
;;
*)
	 echo "输入的参数不合法,目前仅支持启动 | 停止 | 重启!"
;;
esac

2. 快速同步文件[增量同步]

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
	echo "目前参数为0,没有传参!"
	exit;
fi

# 获取当前主机名
c_host=`hostname`

#2. 遍历集群所有机器, 这里替换成你的集群主机名
for host in node-1 node-2 node-3
do
	echo "检测节点: $host"
	if [ $c_host = $host ]
	then
		echo ">>>>>>>>>>>>>>跳过当前主机:$c_host !<<<<<<<<<<<<<<<<"
		continue
	fi

	echo ====================发送到: $host ====================
	#3. 遍历所有目录,挨个发送
	for file in $@
	do
		#4. 判断文件是否存在
		if [ -e $file ]
		then
			#5. 获取父目录
			pdir=$(cd -P $(dirname $file); pwd)
			#6. 获取当前文件的名称
			fname=$(basename $file)
			ssh $host "mkdir -p $pdir"
			rsync -av $pdir/$fname $host:$pdir
			else
			echo $file "文件不存在!"
		fi
	done
done

3. 查看所有节点上的 jps 进程

#!/bin/bash
# 遍历集群所有机器, 这里替换成你的集群主机名
for host in node-1 node-2 node-3
do
 echo =============== $host ===============
 ssh $host jps 
done

4. 快速启动hive3.x版本

#!/bin/bash
# metastore.out 和 hiveserver2.out 这两个文件需要自己提前创建,否则会报文件找不到的错误
if [ $1 = start ];
then
	nohup $HIVE_HOME/bin/hive --service metastore 2>&1>> $HOME/logs/hive-3.1.2/metastore.out &
	nohup $HIVE_HOME/bin/hive --service hiveserver2 2>&1>> $HOME/logs/hive-3.1.2/hiveserver2.out &
else
	hive_id=`ps -ef | grep RunJar | grep -v grep | awk '{print $2}'`
	for id in $hive_id
	do
		kill -9 $id
		echo "killed $id"
	done
fi
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真香IT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值