当 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 查询:

协调器解析查询并创建分片AST,并将每个分片分配给一组主机执行;

rpc 调用对每个片段的每个主机并行发出。

父片段将等到子片段完成。

4) 当所有片段都完成后,屏幕上会显示fetch() 后面的数据,这是客户端的 thrift 调用。

【讨论】:

以上是关于当 Impala 中的客户端触发查询时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

RAFT:当Leader在操作过程中发生变化时会发生啥

当我在严格的客户端集合上调用更新/插入时会发生啥?

当应用程序在 Cordova 中退出时会发生啥事件?

当 tcp/udp 服务器的发布速度快于客户端的消耗速度时会发生啥?

当调用winsock 中的recv 函数并且没有收到所有数据时会发生啥?

当未对齐的写入越过页面边界并触发错误时会发生啥?