在Linux环境下停止Hive服务,需根据Hive的部署方式和运行组件进行针对性操作。Hive本身并非单一的守护进程,而是包含HiveServer2、Hive Metastore、Hive CLI等不同服务,同时可能依赖Apache Hadoop的YARN资源调度。以下从常见场景详细说明停止方法。

1. 停止HiveServer2服务:HiveServer2是Hive提供JDBC/ODBC连接的后台服务。若通过前台命令行启动(如hive --service hiveserver2),可直接按Ctrl+C终止;若在后台运行(如通过nohup或start-hive.sh脚本),需先查询进程PID。
使用ps -ef | grep HiveServer2或jps -l查找进程。找到PID后,建议先执行kill -15 进程PID发送SIGTERM信号,等待进程自行清理资源;若无法正常关闭,再使用kill -9 进程PID强制终止。
2. 停止Hive Metastore服务:Metastore用于存储表结构等元数据。停止方式与HiveServer2类似,先找到进程(通常包含关键词HiveMetaStore),然后执行kill -15 进程PID或kill -9 进程PID。注意,若为嵌入式Metastore(与HiveServer2同进程),则只需终止主进程即可。
3. 停止Hive作业(YARN Applications):如果Hive查询通过MapReduce/Tez/Spark引擎在YARN上运行,这些作业并非独立服务,而是持续执行的任务。需通过YARN资源管理器终止,使用命令yarn application -list查看作业ID,再执行yarn application -kill 应用ID强制取消。
4. 使用系统服务或脚本管理:若Hive通过systemd管理(如systemctl stop hiveserver2或systemctl stop hive-metastore),或通过集群管理工具(如Ambari、Cloudera Manager)部署,应使用对应的服务管理命令,避免直接kill导致状态不一致。
5. 停止Hive CLI等交互式客户端:对于直接启动的hive命令行客户端,输入exit;或按下Ctrl+D即可正常退出,此操作不会影响其他服务。
6. 验证服务是否停止:执行ps -ef | grep -i hive检查相关进程是否消失,同时可使用netstat -tlnp | grep 10000(HiveServer2默认端口)和netstat -tlnp | grep 9083(Metastore默认端口)确认端口已释放。
7. 注意事项:避免直接使用kill -9,因为这可能导致元数据不一致或未提交的事务丢失。若Hive与HDFS、HBase、ZooKeeper等组件协作,需确保相关依赖服务已正确关闭。在停掉Hive服务前,最好先停止提交新任务,并等待正在运行的作业完成或强制取消。
综上所述,Linux环境下停掉Hive的关键在于区分“服务进程”与“作业任务”,采用kill或yarn application -kill方式,并优先使用优雅停止操作。熟练掌握进程查询和信号发送命令,即可安全高效的完成Hive停机操作。

查看详情

查看详情