AWS EMR无MySQL连接代码却报错无法连接本地MySQL服务器
AWS EMR 无自定义MySQL代码触发本地连接报错处理
具体报错信息:
error: 'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'
提示需要检查mysqld是否正在运行,且套接字文件/var/lib/mysql/mysql.sock是否存在。
核心触发原因
- EMR内置组件默认依赖:集群预装的Hive、Sqoop、Oozie、Hue等官方组件默认使用MySQL存储元数据,只要触发这类组件运行,无需自定义代码就会自动发起MySQL连接请求。
- 元数据库配置被篡改:如果集群启动时使用的Bootstrap脚本、自定义镜像误修改了元数据库配置,原本指向外置元数据库的规则被改为本地MySQL,就会触发本地连接逻辑。
- 作业隐式调用依赖组件:提交的Spark、Flink等作业如果开启了Hive Catalog关联,运行时会自动调用Hive元数据服务,间接触发MySQL连接请求。
排查修复方案
- 检查本地MySQL服务状态:登录EMR主节点执行
systemctl status mysqld查看服务运行状态,如果服务未启动,执行systemctl start mysqld启动服务即可解决连接问题。 - 校验元数据库配置:查看Hive配置文件
/etc/hive/conf/hive-site.xml中的javax.jdo.option.ConnectionURL参数,如果配置为本地MySQL地址,可根据实际需求替换为外置元数据库地址,或者确认本地MySQL的用户授权、套接字文件路径正常。 - 排查作业隐式依赖:检查提交作业的启动参数,比如Spark作业如果开启了
--enable-hive参数,可根据业务需要关闭该参数,避免作业自动调用Hive元数据服务触发MySQL连接。
内容的提问来源于stack exchange,提问作者Deepak Poojari
相关产品推荐
相关产品推荐

