Impala 客户端访问


应用程序开发人员有许多选项可以与Impala交互。Impala的核心开发语言是SQL,您还可以使用Java或其他语言通过许多商业智能工具使用的标准JDBC和ODBC接口与Impala进行交互。对于特殊类型的分析,您可以通过用C++或Java编写用户定义的函数来补充Impala内置函数。

您可以通过以下方式连接并向Impala提交请求:

  • impala-shell交互式命令解释器
  • Hue基于Web的用户界面
  • JDBC
  • ODBC

Impala客户端可以impalad通过HTTP或TCP二进制文件通过HiveServer2连接到CoordinatorImpalaDaemon()。HTTP和二进制都支持使用KerberosSPNEGO和LDAP对Impala进行身份验证。请参阅下面的默认端口和Impala标志以更改端口。

协议

默认端口

用于指定备用端口的标志

HTTP

28000

‑‑hs2_http_port

二进制TCP

21050

‑‑hs2_port

每个impalad守护进程在集群中的不同节点上运行,侦听传入请求的多个端口:

  • 来自impala-shellHue和Hue的请求impalad通过同一端口路由到守护进程。
  • impalad守护进程监听JDBC和ODBC请求单独的端口。

客户端连接的Impala启动选项

在启动Impala守护进程协调器时使用以下标志来控制客户端与Impala的连接。

–accepted_client_cnxn_timeout

控制Impala在用完由配置的线程数时如何处理新的连接请求--fe_service_threads

如果--accepted_client_cnxn_timeout>0,如果Impala无法在指定的(以秒为单位)超时内获得服务器线程,则拒绝新的连接请求。

如果--accepted_client_cnxn_timeout=0,即没有超时,客户端将无限期地等待打开新会话,直到有更多线程可用。

默认超时为5分钟。

超时仅适用于面向客户端的thrift服务器,即HS2和Beeswax服务器。

–disconnected_session_timeout

当HiveServer2会话没有打开连接的时间超过此值时,会话将被关闭,并且任何关联的查询都将被取消注册。

以小时为单位指定值。

默认值为1小时。

此标志不适用于Beeswax客户端。当Beeswax客户端连接关闭时,Impala关闭与该连接关联的会话。

–fe_service_threads

指定允许的最大并发客户端连接数。默认值为64,可以同时运行64个查询。如果尝试连接到Impala的客户端多于此设置的值,则较晚到达的客户端必须等待由指定的持续时间--accepted_client_cnxn_timeout。您可以增加此值以允许更多客户端连接。但是,较大的值意味着即使大多数连接空闲也需要维护更多线程,并且可能会对查询延迟产生负面影响。客户端应用程序应使用连接池以避免需要大量会话。

–hs2_http_port

指定客户端通过HTTP连接到Impala服务器的端口。

默认端口为28000。

您可以通过将标志设置为来禁用客户端的HTTP端点0

为HiveServer2HTTP端点启用TLS/SSL使用--ssl_server_certificate--ssl_private_key

–idle_client_poll_time_s

此设置的值指定Impala轮询以检查客户端连接是否空闲并在连接空闲时关闭它的频率。如果与客户端连接关联的所有会话都空闲,则客户端连接是空闲的。

默认情况下,--idle_client_poll_time_s设置为30秒。

如果--idle_client_poll_time_s设置为0,空闲客户端连接将保持打开状态,直到被客户端明确关闭。

只有当所有关联的会话都空闲或关闭时,连接才会关闭。除非标志--idle_session_timeoutIDLE_SESSION_TIMEOUT查询选项设置为大于0,否则会话不能空闲。如果未配置空闲会话超时,则会话不能根据定义变为空闲,因此其连接保持打开状态,直到客户端明确关闭它。

–max_cookie_lifetime_s

从Impala3.4.0开始,当客户端通过HiveServer2通过HTTP连接时,Impala使用cookie进行身份验证。使用--max_cookie_lifetime_s启动标志来控制生成的cookie的有效期。

  • 以秒为单位指定值。
  • 默认值为1天。
  • 将该标志设置为0禁用cookie支持。

成功验证未过期的cookie后,将在连接上设置cookie中包含的用户名。

每个都impalad使用自己的密钥来生成签名,因此重新连接到不同的客户端impalad必须重新进行身份验证。

在单个上impalad,cookie在会话和连接之间有效。