
Hadoop、Kafka、Flink、Spark、Hive五大组件运维高频操作命令,按"启动/停止、状态检查、核心管理、问题排查"分类整理,覆盖日常集群维护、任务调度、故障处理场景,命令基于主流稳定版本(Hadoop 3.x、Kafka 3.x、Flink 1.15+、Spark 3.x、Hive 3.x)。
一、Hadoop 运维命令(HDFS + YARN)
Hadoop核心运维围绕HDFS(分布式存储)和YARN(资源调度),重点关注集群状态、文件系统健康、资源使用。
1. 启动/停止集群
bash
# 启动HDFS(NameNode + DataNode + SecondaryNameNode)
$HADOOP_HOME/sbin/start-dfs.sh
# 停止HDFS
$HADOOP_HOME/sbin/stop-dfs.sh
# 启动YARN(ResourceManager + NodeManager)
$HADOOP_HOME/sbin/start-yarn.sh
# 停止YARN
$HADOOP_HOME/sbin/stop-yarn.sh
# 启动全集群(HDFS + YARN,含HistoryServer)
$HADOOP_HOME/sbin/start-all.sh
# 停止全集群
$HADOOP_HOME/sbin/stop-all.sh
# 单独启动HistoryServer(查看MapReduce历史任务)
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
# 停止HistoryServer
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh stop historyserver
2. 状态检查
bash
# 查看HDFS集群状态(NameNode活性、DataNode数量)
hdfs dfsadmin -report
# 查看YARN集群状态(ResourceManager、NodeManager节点)
yarn node -list
# 查看HDFS安全模式状态(是否只读,集群启动初期会自动进入)
hdfs dfsadmin -safemode get
# 示例输出:Safe mode is OFF
# 查看YARN资源使用情况(总内存、CPU,已分配/剩余)
yarn top
3. HDFS文件系统操作
bash
# 查看目录(类似Linux ls,支持-R递归)
hdfs dfs -ls /user/hive/warehouse
hdfs dfs -ls -R /data
# 创建目录
hdfs dfs -mkdir /user/test
# 递归创建多级目录
hdfs dfs -mkdir -p /user/test/input
# 上传本地文件到HDFS
hdfs dfs -put local_file.txt /user/test/
# 从HDFS下载文件到本地
hdfs dfs -get /user/test/hdfs_file.txt local_dir/
# 查看HDFS文件内容(大文件慎用)
hdfs dfs -cat /user/test/log.txt
# 查看前10行
hdfs dfs -head /user/test/log.txt
# 删除HDFS文件(-r递归删除目录)
hdfs dfs -rm /user/test/old_file.txt
hdfs dfs -rm -r /user/test/old_dir
# 复制HDFS文件/目录
hdfs dfs -cp /user/test/file1.txt /user/prod/
4. YARN任务管理
bash
# 查看YARN上运行的应用(状态、ID、资源)
yarn application -list
# 查看已完成的应用
yarn application -list -appStates FINISHED
# 杀死YARN上的应用(通过applicationId)
yarn application -kill application_1690000000000_0001
# 查看应用日志(applicationId + 容器ID,需指定NodeManager主机)
yarn logs -applicationId application_1690000000000_0001 -containerId container_1690000000000_0001_01_000001
# 查看YARN队列状态(资源分配、使用率)
yarn queue -status default
5. 问题排查
bash
# 检查HDFS文件块完整性(修复损坏块)
hdfs fsck /user/test/data.txt
# 检查整个HDFS并输出损坏文件
hdfs fsck / -list-corruptfileblocks
# 手动触发HDFS均衡(DataNode间数据分布不均时)
hdfs balancer -threshold 10 # 节点间使用率差不超过10%
# 查看NameNode日志(定位启动失败、元数据错误)
tail -f $HADOOP_HOME/logs/hadoop-$(whoami)-namenode-$(hostname).log
# 查看DataNode日志(定位存储、块复制错误)
tail -f $HADOOP_HOME/logs/hadoop-$(whoami)-datanode-$(hostname).log
二、Kafka 运维命令
Kafka运维聚焦主题管理、消息消费、集群状态,核心是确保broker存活、分区副本健康、消息不丢失。
1. 启动/停止集群
bash
# 启动单个broker(需提前配置server.properties)
$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
# 停止单个broker
$KAFKA_HOME/bin/kafka-server-stop.sh
# 启动ZooKeeper(Kafka依赖,单节点)
$KAFKA_HOME/bin/zookeeper-server-start.sh -daemon $KAFKA_HOME/config/zookeeper.properties
# 停止ZooKeeper
$KAFKA_HOME/bin/zookeeper-server-stop.sh
2. 主题(Topic)管理
bash
# 创建主题(指定分区数3、副本数2,bootstrap-server指向Kafka broker)
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--create --topic user_behavior --partitions 3 --replication-factor 2
# 查看所有主题
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
# 查看主题详情(分区分布、副本状态、ISR列表)
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--describe --topic user_behavior
# 修改主题分区数(只能增加,不能减少)
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--alter --topic user_behavior --partitions 5
# 删除主题(需server.properties中设置delete.topic.enable=true)
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 \
--delete --topic old_topic
3. 消息生产/消费测试
bash
# 启动生产者(往主题发消息,控制台输入)
$KAFKA_HOME/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 \
--topic user_behavior
# 启动消费者(从头消费主题消息)
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic user_behavior --from-beginning
# 按消费者组消费(指定group.id,用于测试组内消费逻辑)
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--topic user_behavior --group test_group
4. 消费者组(Consumer Group)管理
bash
# 查看所有消费者组
$KAFKA_HOME/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
# 查看指定消费者组详情(各分区偏移量、lag值:未消费消息数)
$KAFKA_HOME/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--describe --group test_group
# 重置消费者组偏移量(从头消费)
$KAFKA_HOME/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--reset-offsets --to-earliest --execute --group test_group --topic user_behavior
# 重置偏移量到指定时间(如2024-01-01 00:00:00)
$KAFKA_HOME/bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--reset-offsets --to-datetime 2024-01-01T00:00:00 --execute --group test_group --topic user_behavior
5. 集群状态检查
bash
# 查看broker节点状态(通过ZooKeeper,需ZooKeeper地址)
$KAFKA_HOME/bin/zookeeper-shell.sh localhost:2181 ls /brokers/ids
# 示例输出:[0, 1, 2](表示3个broker节点,ID为0、1、2)
# 查看分区副本健康状态(ISR列表是否完整)
# 结合topic describe命令,关注"Isr"列是否与"Replicas"一致(不一致表示副本同步延迟)
$KAFKA_HOME/bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe --topic user_behavior
三、Flink 运维命令
Flink运维围绕作业提交、状态监控、集群资源,重点确保流处理作业稳定运行、 checkpoint 正常。
1. 启动/停止集群
bash
# 启动Flink Standalone集群(JobManager + TaskManager)
$FLINK_HOME/bin/start-cluster.sh
# 停止集群
$FLINK_HOME/bin/stop-cluster.sh
# 单独启动JobManager
$FLINK_HOME/bin/jobmanager.sh start
# 单独启动TaskManager(指定JobManager地址)
$FLINK_HOME/bin/taskmanager.sh start -Djobmanager.rpc.address=localhost
# 启动Flink on YARN会话模式(共享集群资源)
yarn-session.sh -n 2 -s 2 -jm 1024 -tm 2048 -d
# -n:TaskManager数量;-s:每个TM的slot数;-jm:JM内存;-tm:TM内存;-d:后台运行
# 停止YARN上的Flink会话(通过YARN应用ID)
yarn application -kill application_1690000000000_0002
2. 作业提交与管理
bash
# 提交Flink作业(Standalone模式,指定主类和jar包)
$FLINK_HOME/bin/flink run -m localhost:8081 \
-c com.example.UserBehaviorJob $FLINK_HOME/jobs/user_behavior_job.jar
# 提交Flink on YARN(分离模式,作业独立运行,不依赖会话)
$FLINK_HOME/bin/flink run -t yarn-per-job -d \
-c com.example.UserBehaviorJob $FLINK_HOME/jobs/user_behavior_job.jar
# 查看运行中的作业
$FLINK_HOME/bin/flink list -m localhost:8081
# 查看所有作业(包括已完成)
$FLINK_HOME/bin/flink list -m localhost:8081 -a
# 取消作业(通过作业ID)
$FLINK_HOME/bin/flink cancel -m localhost:8081 643b7e9bf8e6a7c44a8e3a9f87a3c4a
# 取消作业并保留checkpoint(用于后续恢复)
$FLINK_HOME/bin/flink cancel -s -m localhost:8081 643b7e9bf8e6a7c44a8e3a9f87a3c4a
# 从checkpoint恢复作业
$FLINK_HOME/bin/flink run -m localhost:8081 -s hdfs:///flink/checkpoints/643b7e9b/ \
-c com.example.UserBehaviorJob $FLINK_HOME/jobs/user_behavior_job.jar
3. 状态监控与日志
bash
# 查看Flink集群仪表盘(JobManager UI,默认8081端口)
# 浏览器访问:http://localhost:8081
# 查看作业详情(通过作业ID,获取checkpoint、背压、指标)
$FLINK_HOME/bin/flink info -m localhost:8081 643b7e9bf8e6a7c44a8e3a9f87a3c4a
# 查看TaskManager日志(定位作业异常、资源不足)
tail -f $FLINK_HOME/log/flink-$(whoami)-taskmanager-$(hostname).log
# 查看作业具体任务日志(通过YARN应用ID,Flink on YARN模式)
yarn logs -applicationId application_1690000000000_0003 -containerId container_1690000000000_0003_01_000002
4. 问题排查
bash
# 检查背压(作业处理能力不足时,定位瓶颈算子)
# 1. 从Flink UI进入作业详情,点击"Back Pressure"
# 2. 结果为"HIGH"表示该算子是瓶颈,需优化逻辑或增加资源
# 查看checkpoint状态(是否成功,失败原因)
# 从Flink UI进入作业详情 → "Checkpoints" → 查看"Latest Completed"和"Latest Failed"
# 手动触发savepoint(用于作业升级、迁移)
$FLINK_HOME/bin/flink savepoint -m localhost:8081 643b7e9bf8e6a7c44a8e3a9f87a3c4a hdfs:///flink/savepoints/
四、Spark 运维命令
Spark运维覆盖集群管理、作业提交、历史任务查看,支持Standalone、YARN等多种部署模式。
1. 启动/停止集群(Standalone模式)
bash
# 启动Spark集群(Master + Worker)
$SPARK_HOME/sbin/start-all.sh
# 停止集群
$SPARK_HOME/sbin/stop-all.sh
# 单独启动Master
$SPARK_HOME/sbin/start-master.sh
# 单独启动Worker(指定Master地址)
$SPARK_HOME/sbin/start-worker.sh spark://localhost:7077
# 启动Spark历史服务器(查看已完成作业日志)
$SPARK_HOME/sbin/start-history-server.sh
# 停止历史服务器
$SPARK_HOME/sbin/stop-history-server.sh
2. 作业提交(Spark Submit)
bash
# 提交Spark批处理作业(Standalone模式,部署模式cluster)
$SPARK_HOME/bin/spark-submit \
--master spark://localhost:7077 \
--deploy-mode cluster \
--class com.example.SalesAnalysis \
--executor-memory 2g \
--total-executor-cores 4 \
$SPARK_HOME/jobs/sales_analysis.jar
# 提交Spark on YARN(客户端模式,日志在本地输出)
$SPARK_HOME/bin/spark-submit \
--master yarn \
--deploy-mode client \
--class com.example.UserBehaviorAnalysis \
--executor-memory 4g \
--num-executors 10 \
$SPARK_HOME/jobs/user_behavior.jar
# 提交Spark Streaming作业(指定checkpoint目录)
$SPARK_HOME/bin/spark-submit \
--master yarn \
--class com.example.RealTimeLogProcessing \
--conf spark.streaming.checkpointLocation=hdfs:///spark/checkpoint/ \
$SPARK_HOME/jobs/log_processing.jar
3. 集群与作业状态
bash
# 查看Spark Standalone集群状态(Master UI,默认8080端口)
# 浏览器访问:http://localhost:8080
# 查看YARN上的Spark作业(通过YARN命令)
yarn application -list | grep Spark
# 查看Spark历史作业(历史服务器UI,默认18080端口)
# 浏览器访问:http://localhost:18080
# 查看作业详情(通过YARN应用ID,获取Executor日志)
yarn logs -applicationId application_1690000000000_0004
4. 问题排查
bash
# 查看Driver日志(Standalone cluster模式,日志在Worker节点)
# 路径:$SPARK_HOME/work/应用ID/0/stdout
# 查看Executor日志(YARN模式,通过YARN UI定位容器日志)
# YARN UI:http://ResourceManager主机:8088 → 进入应用 → 点击"Logs"
# 检查Spark内存使用(避免OOM)
# 从Spark UI(作业运行时)查看"Executors" → 关注"Memory Used"是否接近配置上限
五、Hive 运维命令
Hive运维聚焦元数据管理、表操作、查询优化,核心确保metastore服务可用、数据与元数据一致性。
1. 启动/停止服务
bash
# 启动Hive Metastore(元数据服务,需提前配置mysql作为元数据库)
nohup $HIVE_HOME/bin/hive --service metastore > $HIVE_HOME/logs/metastore.log 2>&1 &
# 启动HiveServer2(允许JDBC/ODBC连接,如Beeline)
nohup $HIVE_HOME/bin/hive --service hiveserver2 > $HIVE_HOME/logs/hiveserver2.log 2>&1 &
# 停止服务(通过进程ID)
ps -ef | grep metastore | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep hiveserver2 | grep -v grep | awk '{print $2}' | xargs kill -9
2. 交互式操作(Hive CLI/Beeline)
bash
# 通过Hive CLI进入交互模式
$HIVE_HOME/bin/hive
# 通过Beeline连接HiveServer2(推荐,支持JDBC)
$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000 -n username -p password
# 执行HQL脚本(非交互模式)
$HIVE_HOME/bin/hive -f /path/to/script.hql
# 执行单条HQL命令
$HIVE_HOME/bin/hive -e "SELECT count(*) FROM user_behavior;"
3. 元数据与表管理
bash
# 查看所有数据库
hive> show databases;
# 切换数据库
hive> use default;
# 查看数据库详情
hive> describe database default;
# 查看表列表
hive> show tables;
# 查看表结构(包括分区、存储格式)
hive> describe formatted user_behavior;
# 修复分区(HDFS新增分区目录后,同步元数据)
hive> msck repair table user_behavior;
# 手动添加分区
hive> alter table user_behavior add partition (dt='20240101') location '/user/hive/warehouse/user_behavior/dt=20240101';
# 删除分区
hive> alter table user_behavior drop partition (dt='20240101');
4. 数据操作
bash
# 加载本地数据到Hive表(复制数据)
hive> load data local inpath '/local/path/data.txt' into table user_behavior partition (dt='20240101');
# 加载HDFS数据到Hive表(移动数据)
hive> load data inpath '/hdfs/path/data.txt' into table user_behavior partition (dt='20240101');
# 插入数据到表(动态分区,需开启参数)
hive> set hive.exec.dynamic.partition=true;
hive> set hive.exec.dynamic.partition.mode=nonstrict;
hive> insert into table user_behavior partition (dt)
select user_id, behavior_type, dt from user_behavior_raw;
# 清空表数据(保留表结构,仅支持内部表)
hive> truncate table user_behavior;
5. 问题排查
bash
# 查看Hive metastore日志(定位元数据连接失败、表创建错误)
tail -f $HIVE_HOME/logs/metastore.log
# 查看Hiveserver2日志(定位Beeline连接失败、权限问题)
tail -f $HIVE_HOME/logs/hiveserver2.log
# 检查Hive表数据与元数据一致性(元数据路径与实际HDFS路径是否一致)
hive> describe formatted user_behavior; # 查看元数据记录的location
hdfs dfs -ls /user/hive/warehouse/user_behavior # 查看实际HDFS路径
# 分析查询缓慢原因(开启执行计划)
hive> explain extended select * from user_behavior where dt='20240101';
总结:运维命令核心场景映射
| 组件 | 高频场景 | 核心命令索引 |
|---|---|---|
| Hadoop | HDFS文件管理、YARN任务杀除 | hdfs dfs、yarn application |
| Kafka | 主题创建、消费者组偏移量 | kafka-topics.sh、kafka-consumer-groups.sh |
| Flink | 作业提交、checkpoint恢复 | flink run、flink cancel -s |
| Spark | 集群启动、作业提交 | start-all.sh、spark-submit |
| Hive | 分区修复、元数据检查 | msck repair table、describe formatted |
实际运维中,需结合组件UI(如Flink 8081、Spark 8080、YARN 8088)可视化监控,命令操作多用于自动化脚本或紧急故障处理。