应用程序开发人员有许多选项可以与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-shell
Hue和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_timeout
或IDLE_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在会话和连接之间有效。