集群中常用脚本,持续更新

1.查看启动状态脚本myjps

注:jdk安装路径

#!/bin/bash
for((host=102;host<=104;host++))
do
        echo "====================hadoop$host======================="
        ssh hadoop$host /opt/module/jdk1.8.0_144/bin/jps
done

2.hadoop批量启动脚本hadoop.sh

注:hadoop安装路径

#!/bin/bash

case $1 in
"start"){

	echo "============启动HDFS============="
		/opt/module/hadoop-2.7.2/sbin/start-dfs.sh
	echo "============启动Yarn============="
        ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/start-yarn.sh"
	echo "============启动历史服务器============="
        /opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh start historyserver

};;
"stop"){

	 	echo "============关闭历史服务器============="
        /opt/module/hadoop-2.7.2/sbin/mr-jobhistory-daemon.sh stop historyserver	
		echo "============关闭Yarn============="
        ssh hadoop103 "/opt/module/hadoop-2.7.2/sbin/stop-yarn.sh"
        echo "============关闭HDFS============="
        /opt/module/hadoop-2.7.2/sbin/stop-dfs.sh

};;
esac

3.集群分发脚本xsync

注:每个节点都需要yum -y install rsync

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -eq 0 ]; then
echo no args;
exit;
fi

#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname

#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir

#4 获取当前用户名称
user=`whoami`

#5 循环,节点数量通过下面调节
for((host=102;host<105;host++)); do
        echo ------------------- hadoop$host --------------
        rsync -av $pdir/$fname $user@hadoop$host:$pdir
done
### Hive 集群巡检常用 SQL 命令 在维护和监控 Hive 集群的过程中,定期执行一些 SQL 巡检命令可以帮助发现潜在问题并确保集群的正常运行。以下是几个常用的 Hive 集群巡检 SQL 命令: #### 1. 检查表元数据状态 通过查询 `SYSTEM` 表或者 `INFORMATION_SCHEMA` 中的相关信息来确认表的状态是否正常。 ```sql SHOW TABLES; DESCRIBE FORMATTED table_name; -- 查看指定表的详细信息[^1] ``` #### 2. 统计分区数量 对于分区表来说,过多或过少的分区可能会影响性能。可以通过以下命令统计某个表中的分区总数: ```sql SHOW PARTITIONS table_name; SELECT COUNT(*) FROM (SHOW PARTITIONS table_name) t; -- 计算总分区数[^3] ``` #### 3. 查询未压缩的小文件情况 小文件问题是影响 HDFS 和 Hive 性能的重要因素之一。可以利用如下脚本来检测是否存在大量小文件: ```sql -- 替换 database_name 和 file_size_limit 参数以适应实际需求 SET hive.support.concurrency = false; WITH RECURSIVE cte AS ( SELECT db_name, tbl_name, concat_ws('/', location_root, dir_path) as full_path, CASE WHEN length(dir_path)=0 THEN location_root ELSE concat_ws('/',location_root,dir_path) END as abs_path, size_in_bytes FROM DBS JOIN TBLS USING(db_id) LEFT OUTER JOIN SDS ON(TBLS.sd_id=SDS.sd_id) CROSS JOIN SPLIT_PART(REVERSE(SUBSTRING_INDEX(REPLACE(location,'/',' '), ' ', LENGTH(location)-LENGTH(REPLACE(location,'/',' ')))), '/', -1) AS dirs(dir_path), LATERAL VIEW explode(split(reverse(substring_index(replace(location,'/',' '), ' ',length(location)-length(replace(location,'/',' ')))),'/')) exploded_table AS path_part WHERE dbs.db_name='database_name' UNION ALL SELECT db_name,tbl_name,concat(abs_path,'/',path_part),abs_path,size_in_bytes FROM cte JOIN SPLIT_PART(REVERSE(cte.full_path),'/',-1) AS parts(path_part) WHERE trim(parts.path_part)<>'') SELECT * FROM cte WHERE size_in_bytes < file_size_limit ORDER BY size_in_bytes ASC LIMIT 100; ``` 此复杂查询能够帮助识别存储中小于设定阈值的所有对象。 #### 4. 获取最近修改时间较久远的数据 长时间未更新的数据可能是冷数据或者是不再使用的废弃数据。下面这条语句可用于找出最后更改日期距离当前超过一定天数的所有记录: ```sql SELECT name, input_format, output_format, serde_lib, last_access_time FROM tables WHERE TBL_TYPE !='VIRTUAL_VIEW' AND DATEDIFF(CURRENT_DATE,last_access_time)>specified_days; ``` #### 5. 展示锁等待状况 如果某些操作因为其他事务持有锁定而被阻塞,则可能会降低整体效率。因此有必要监视这些情形的发生频率及其持续时长。 ```sql LOCK TABLE table_name EXCLUSIVE FOR read; SHOW LOCKS table_name EXTENDED; ``` 以上就是针对Hive集群的一些基本但重要的SQL巡检指令集合[^2]。它们有助于管理员更好地理解系统的健康程度以及及时采取措施解决可能出现的各种异常现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值