当 Impala 中的客户端触发查询时会发生啥?
Posted
技术标签:
【中文标题】当 Impala 中的客户端触发查询时会发生啥?【英文标题】:What happens when a query is fired by client in Impala?当 Impala 中的客户端触发查询时会发生什么? 【发布时间】:2013-07-01 11:18:14 【问题描述】:当查询被触发时,客户端如何联系 impalad 守护进程? 当客户端触发必须由 impala 执行的查询时,后台究竟会发生什么?
【问题讨论】:
【参考方案1】:以impala-shell 为例,它是一个ImpalaShell Python 类扩展cmd.Cmd。用户将:
1) connect ip:port
在 shell 中,它将调用 do_connect(..)
并通过 Thrift 连接到 Impala 后端。一个节俭客户端被创建为self.imp_service = ImpalaService.Client(protocol)
2) select xxx from table...
在 shell 中,它将调用 do_select(...)
和 self.imp_service.query(query)
将被调用,这是一个 thrfit rpc。
3) 然后在 Impalad 端由void ImpalaServer::query(QueryHandle&, const Query&)
执行 rpc 查询:
rpc 调用对每个片段的每个主机并行发出。
父片段将等到子片段完成。
4) 当所有片段都完成后,屏幕上会显示fetch()
后面的数据,这是客户端的 thrift 调用。
【讨论】:
以上是关于当 Impala 中的客户端触发查询时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章
当 tcp/udp 服务器的发布速度快于客户端的消耗速度时会发生啥?