3. Impala读写流程
Impala是37手游用来做自助式数据提取的计算引擎,下面简单介绍一下Impala的原理和读写流程。Impala主要包含三个组件:Catalog,StateStore,和ImpalaDaemon;Catalog把元数据分发到各个ImpalaDaemon;StateStore收集各个ImpalaDaemon的信息,如进程信息,各个节点的健康信息等,同时StateStore还负责请求调度;ImpalaDaemon对本地数据进行运算后,协同其他的一些ImpalaDaemon进行运算,最终把结果返回给客户端。
上图是Impala的读写流程,首先客户端提交一个请求后,会对应产生一个Impala请求进程,该Impala请求进程会向StateStore提交一个注册信息,StateStore就会同时产生一个StateStore存储进程来创建多个线程来处理Impala请求进程的注册信息;接下来根据用户输入的SQL语句,经过Impala服务的三个模块:Query Planner、Query Coordinator和Query Executor的词法、语法解析后,拆成各个子任务,然后分发到各个ImpalaDaemon中去执行;各个ImpalaDaemon运算后的结果返回给协调器,协调器进行汇总,最后将结果返回给客户端。
以上就是Impala的一个简单读写流程。
4. Impala在自助取数平台的应用
介绍一下Impala在37手游的自助取数平台的应用。
业务团队经常会有各种各样的取数需求,取数需求会占用数据开发人员的不少精力。从收到业务团队的取数需求,到开发人员编写SQL到跑代码获取数据返回给业务需求方,经常会遭受业务团队的吐槽和催促:为啥取个数据要这么久。
为了提高日常业务团队取数类需求的交互效率,37手游构建了自助取数平台。
用户首先在自助取数平台上筛选维度、选择指标和统计口径。自助取数平台根据用户选择的这些条件进行解析,生成代码和任务,自助取数平台调度执行任务,其中SQL代码发送到Impala集群执行。任务执行成功后生成文件供用户下载。对于业务团队来讲,只需在自助平台上做一些选择,等待取数任务调度执行,之后下载获取数据,非常方便和快捷;对于数据开发团队来讲,减少了80%以上的取数需求,可以从SQL Boy的低效工作中解放出来,极大解放了生产力,从而释放出精力做更高价值的事情。
5. Impala的优点
自助取数分析平台的技术底座就是基于Impala的。为什么会选择Impala?首先Impala是MPP架构的,能够处理比较大的数据操作,而且是无状态的,节点挂掉后只需重启;其次是Impala兼容Hive存储,能复用Hadoop体系的存储能力,能避免像GP一样自成一套技术体系和资源体系;第三个点是Impala的高效查询性能,支持CBO、并行计算等,Impala的data location的IO协调机制是计算和数据尽可能在一个节点,减少网络开销,尤其在大数据场景下,非常节省网络资源;Impala的算子下推的特性能够保证非常高效的查询性能;最后一个点是Impala社区活跃度高,因为比较冷门的组件社区活跃度不高,在技术选型上会来带来一些不可控的风险。
6. Impala的不足