大数据运维常用命令
Linux
- 查找日志中的异常信息(大小写敏感),关键字:
ERROR、Exception
| grep -C 5 -E "ERROR|Exception" > ~/wangzhao/error.log
-C 5:把匹配行上下的周围 5 行也打印出来
- Exception数量分析:根据 Exception 类名统计异常出现次数
grep -E "ERROR|Exception" application.log | grep -o '[A-Za-z0-9_]*Exception' | sort | uniq -c | sort -nr
-E:正则匹配-o:只输出匹配到的内容,而不是把匹配到的整行输出
- 文件拷贝(包含拷贝进度)
rsync -a --progress /opt/hadoop/hdfs/namenode/current/fsimage_0000000011110000000 ./
grep查找文件中是否包含某个 关键字
grep -nr --color=always "关键字" *.conf | nl
-n:行号-r:递归查找子目录中的文件nl:编号
- 批量查找配置文件中的关键字 :
localhost(find``grep)
find /my-dir -name "*.properties" -type f -exec grep -nH "localhost" --color=auto
find ... -type f:递归查找,递归查找/my-dir及内部的所有子目录grep -nH:-n显示行号,-H显示文件名(--with-filename)
- 批量对多个文件内容进行查找替换(
findsed)
find /mydir -name "*.properties" -exec sed -i.bak 's|old|new|g' {} \;
find:搜索文件,返回文件名列表-name:过滤指定关键字的文件-exec:每个文件名作为入参执行一个命令sed:替换命令-i:就地替换.bak:替换前自动备份,替换前创建一个.bak的文件来保存旧内容's|old|new|g':{}:占位符,将find命令的返回结果循环传入到-exec后的命令中作为输入参数\:每次替换一个,可以改成+表示攒批次替换,加快替换速度
- 字符串分割
awk
cat a.txt | awk -F',' '{print $1}'
-F:分隔符(--field-separator=<分隔符>)print:控制台输出$0:切割前原始字符$1:分割后第一个元素$NF:分割后最后一个元素(Number Of Field)$(NF-1):倒数第二个元素
示例:
cat *.res | awk -F'/' '{print $1}' | sort | uniq | wc -l
- 获取当前执行脚本文件名
script_name=$(basename "$0")
echo "$script_name"
$0:脚本执行的文件名称,命令执行时填入的名称,示例:sh /my-dir/dev/demo.sh=>/my-dir/dev/demo.shellsh ./demo.sh=>./demo.shsh ~/demo.sh=>~/demo.sh
basename:只保留当前文件名,不包含父路径,例如:/my-dir/dev/demo.sh=>demo.sh
- 查看机器资源使用情况
# 磁盘使用
df -h
# 内存
free -h
# CPU使用情况
du查看日志文件总大小
du -ch *.log
-c:展示 total-h:人类可读格式(K、M、G)
Kafka
1. 抽样消费几条数据kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic user_events \
--from-beginning \
--max-messages 5
- 抽样消费几条数据,匹配成功后自动停止
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic t_shouyue_ops --from-beginning | grep -m 5 "the keyword"
-m:grep 的最大匹配数(Max),满足最大匹配数后终止
- 查看某个Topic的最新Offset
kafka-run-class.sh kafka.tools.GetOffsetShell \
--broker-list localhost:9092 \
--topic user_events \
--time -1
--time -1:最新--time -2:最早
MySQL
1. 创建用户并赋予某个库的权限CREATE USER 'tom'@'localhost' IDENTIFIED BY 'tom';
GRANT ALL PRIVILEGES ON tom_database.* TO 'tom'@'localhost';
Hive
1. 查看表分区数据量和存储量-- Hive中运行找到hdfs路径
desc formatted ods.ods_myk_personal_card;
-- 从hdfs中看各个分区的大小,注意分区数量较多需要过滤一下
hdfs dfs -du -h hdfs://localhost:8020/apps/hive/warehouse/my.db/dwd_ord_pay_ord_di/dt=2025-10*
- 查看 Hive Server2 连接数
netstat -ntpla | grep 10000 | grep -i ESTABLISHED | wc -l
这是 netstat 命令的常用选项组合,含义如下:
-n:以数字形式显示地址和端口号(不解析主机名、服务名等)。-t:仅显示 TCP 连接。-p:显示每个连接对应的进程 ID(PID)和程序名称(需要 root 权限才能看到其他用户的进程)。-l:显示监听(LISTEN)状态的套接字(sockets)。-a:显示所有连接和监听端口(包括 LISTEN、ESTABLISHED、TIME_WAIT 等各种状态)。
tcp 0 0 192.168.1.10:10000 203.0.113.5:54321 ESTABLISHED 1234/myapp
表示:
- 协议 TCP
- 第一个 0:接收队列(Recv-Q)中的字节数
- 第二个 0:发送队列(Send-Q)中的字节数
- 本机 IP
192.168.1.10的 10000 端口 - 与远程 IP
203.0.113.5的 54321 端口建立了连接 - 连接状态是 ESTABLISHED
- 对应的进程 PID 是 1234,程序名为
myapp

浙公网安备 33010602011771号