2017-10-21 187 views
2

在CDH的NameNode中,当我通过odbc脚本(php/perl或python)运行查询时,我可以获取所有结果(9.2M)在一个变量中大约30秒,但是当我用相同的脚本/查询试图另一个远程2级的服务器上时,执行时间是在第一服务器28分钟和在第二17分钟Impala ODBC/JDBC性能不佳 - 与NN相比,远程服务器的行提取速度很慢

要排除的假设,这是一个网络速度问题,我获取结果上的一个文件,然后我跟scp命令复制到第一个远程服务器,并完成了〜40秒

我在查询信息观察什么在CM中存在的线程之间有很大的不同:网络发送等待时间值在3个查询:
在NN查询 :9.40s
在第一个远程服务器:16.7米
在第二个远程服务器:26.8米

而且我也尝试用黑斑羚JDBC的Java脚本,但在NN的结果已经不能刺激继续。

但到目前为止,我无法找到问题出在哪里,我该如何解决它。
NB:我正在使用CDH 5.12.0/Impala 2.9.0,我安装了Impala ODBC 2.5.37.1014。

回答

1

没有提及使用的JDBC连接器版本。

集群中可能有多台运行Impala守护程序的服务器,请在您的JDBC连接URL中分别更改 并验证这些服务器上的性能。

万一你错过参阅文件(https://www.cloudera.com/documentation/enterprise/5-12-x/topics/impala_jdbc.html),要注意这种提取物:

最新的JDBC驱动程序,相应的蜂巢0.13,提供了黑斑羚查询 显着的性能改进,返回 大的结果集。 Impala 2.0及更高版本与Hive 0.13驱动程序兼容。如果已安装旧版JDBC驱动程序并运行Impala 2.0或更高版本,请考虑升级到最新的 Hive JDBC驱动程序,以获得JDBC应用程序的最佳性能。

由于您使用的是远程计算机访问黑斑羚,请参阅本信息也:

如果您在CDH 集群外部主机使用支持JDBC的应用程序,您不能使用CDH在非CDH 主机上安装过程。在至少一个CDH主机上安装JDBC驱动程序....然后, 将JAR文件下载到将使用JDBC的每个客户端计算机,并使用 Impala ...

如果不提前完成,请更新JDBC连接器,并确保所有impalad实例正在运行。 然后比较ODBC和JDBC的性能结果。

这个环节也值得一闯民宅: https://www.cloudera.com/documentation/enterprise/5-12-x/topics/impala_troubleshooting.html

更新1:

参考#1:https://community.cloudera.com/t5/Interactive-Short-cycle-SQL/Impala-JDBC-10x-Slower-Vs-Shell/m-p/51779

作为参考建议,尝试添加下面的参数到JDBC连接字符串并检查日志:

; LogLevel = 6,LOGPATH = /路径/到/目录

参考#2:https://issues.apache.org/jira/browse/IMPALA-2651你可以考虑以下设置:

SET disable_codegen = TRUE;

更新2:我想你已经有这些下文提到的罐子中的至少一个黑斑羚服务器群集中。

commons-logging-X.X.X.jar 
hadoop-common.jar 
hive-common-X.XX.X-cdhX.X.X.jar 
hive-jdbc-X.XX.X-cdhX.X.X.jar 
hive-metastore-X.XX.X-cdhX.X.X.jar 
hive-service-X.XX.X-cdhX.X.X.jar 
httpclient-X.X.X.jar 
httpcore-X.X.X.jar 
libfb303-X.X.X.jar 
libthrift-X.X.X.jar 
log4j-X.X.XX.jar 
slf4j-api-X.X.X.jar 
slf4j-logXjXX-X.X.X.jar 

请将这些jar复制到您尝试通过JDBC代码访问Impala的机器。确保这些罐子在您的类路径中并执行JDBC代码。

+0

我会测试这个。 –

+0

我无法在我的centos 6.9中安装hive-jdbc。 它给:没有包hive-jdbc可用。 Rmq:我不认为我对参考文献#1和#2感到担忧,因为我的查询没有错误地被执行。问题在于,在外部群集服务器上,所有行在速度上都很慢。 –

+1

更新了答案。调查是关于延迟,日志可能会显示需要花费的时间。 – Marco99

相关问题