Spark ThriftServer作为Apache Spark社区基于HiveServer2实现的一个Thrift服务,旨在无缝兼容HiveServer2,通过JDBC接口将Spark SQL的能力以纯SQL的方式提供给终端用户。然而,它也存在一些限制,主要包括以下几个方面:
性能限制
- 单点问题:Spark ThriftServer本质上是一个Spark应用在多线程场景下的应用,如果服务挂了,对用户来说就是整个集群不可用。
- 吞吐量限制:ThriftServer的单点吞吐量有限,没有提供横向扩展的能力。
- 高级业务场景限制:如权限控制、多租户、资源隔离等高级业务场景无法满足。
配置限制
- 配置项限制:例如,Thrift Server最大工作线程数、backlog_num、客户端超时时间、消息大小上限等都有默认值,可能需要根据实际需求进行调整。
兼容性和安全性限制
- 兼容性问题:客户端兼容性问题可能导致作业依赖和Spark或Hadoop依赖冲突。
- 安全问题:数据安全性无法保证,用户通过代码的方式访问元数据和数据,"删库跑路"轻而易举。
扩展性和高可用性限制
- 扩展性限制:ThriftServer没有内置的扩展性机制,如自动扩展或负载均衡。
- 高可用性限制:缺乏高可用性机制,如主备切换,可能导致服务中断。
综上所述,虽然Spark ThriftServer提供了便利的SQL访问接口,但在实际使用中需要注意其性能、配置、兼容性和安全性等方面的限制,并采取相应的措施来优化和增强其功能和可靠性。