如何在AWS EMR上搭建Spark Thrift Server并配置JDBC/ODBC连接及账号?
我来帮你梳理一下AWS EMR上Spark Thrift Server的重启步骤和用户名密码配置方法,这些都是我在实际运维EMR集群时踩过坑后总结的实用操作:
一、AWS EMR上重启Spark Thrift Server的正确步骤
Spark Thrift Server在EMR集群里通常单独运行在主节点上,和Hive Server2是相互独立的服务,所以不需要重启Hive相关服务,只需要针对Spark Thrift Server本身操作即可,不同EMR版本的管理命令略有差异:
对于EMR 5.x及部分早期6.x版本:使用Spark自带的
spark-daemon.sh脚本管理- 停止服务:
sudo /usr/lib/spark/sbin/spark-daemon.sh stop thrift-server 1 - 启动服务:
(这里的sudo /usr/lib/spark/sbin/spark-daemon.sh start thrift-server 11是实例编号,主节点上一般只会运行一个Thrift Server实例,所以用1即可)
- 停止服务:
对于EMR 6.x后期及7.x版本:已经改用systemd服务管理
- 停止服务:
sudo systemctl stop spark-thrift-server - 启动服务:
sudo systemctl start spark-thrift-server - 查看服务状态(验证是否正常运行):
sudo systemctl status spark-thrift-server
- 停止服务:
二、配置Spark Thrift Server的用户名和密码认证
默认情况下,Spark Thrift Server是无认证的(NOSASL模式),如果需要开启用户名密码验证,可以通过兼容Hive Server2的配置来实现,以下是两种常见的配置方式:
1. 测试环境:简单文件密码认证(不推荐生产环境)
这种方式适合快速测试,不需要依赖外部认证服务:
- 第一步:创建密码文件,比如
/etc/hive/conf/passwd,格式为用户名:密码,示例内容:admin:MySecurePass_123 analyst:AnalystPass_456 - 第二步:设置文件权限,确保只有hive用户能访问:
sudo chmod 600 /etc/hive/conf/passwd sudo chown hive:hive /etc/hive/conf/passwd - 第三步:修改
/etc/hive/conf/hive-site.xml,添加认证配置:<property> <name>hive.server2.authentication</name> <value>PASSWORD</value> </property> <property> <name>hive.server2.authentication.password.file</name> <value>/etc/hive/conf/passwd</value> </property> - 第四步:修改
/usr/lib/spark/conf/spark-defaults.conf,让Spark Thrift Server加载该认证配置:spark.sql.hive.thriftServer.singleSession true spark.hadoop.hive.server2.authentication PASSWORD
2. 生产环境:LDAP认证(推荐)
如果是生产集群,建议用LDAP来管理用户和密码,配置步骤如下:
- 修改
/etc/hive/conf/hive-site.xml,添加LDAP相关配置(根据你的LDAP服务调整参数):<property> <name>hive.server2.authentication</name> <value>LDAP</value> </property> <property> <name>hive.server2.authentication.ldap.url</name> <value>ldap://你的LDAP服务器地址:389</value> </property> <property> <name>hive.server2.authentication.ldap.baseDN</name> <value>dc=yourdomain,dc=com</value> </property> <property> <name>hive.server2.authentication.ldap.bindDN</name> <value>cn=admin,dc=yourdomain,dc=com</value> </property> <property> <name>hive.server2.authentication.ldap.bindPassword</name> <value>LDAP管理员密码</value> </property> - 同样修改
/usr/lib/spark/conf/spark-defaults.conf添加Spark侧的配置:spark.sql.hive.thriftServer.singleSession true spark.hadoop.hive.server2.authentication LDAP
最后一步:重启Spark Thrift Server
完成配置后,用前面的重启命令重启服务,之后用beeline连接时就需要输入用户名和密码了:
beeline> !connect jdbc:hive2://10.253.3.5:10015 Enter username for jdbc:hive2://10.253.3.5:10015: admin Enter password for jdbc:hive2://10.253.3.5:10015: MySecurePass_123
内容的提问来源于stack exchange,提问作者Saurav Bhowmick
相关产品推荐
相关产品推荐

