更新时间:2019年07月29日 15时42分46秒 来源:黑马程序员论坛
1、impala的介绍 impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具。 ![]() impala是基于hive的大数据分析查询引擎,直接使用hive的元数据库metadata,意味着impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务,也就是说hive活着,impala才能存在,否则随着消失。 ![]() 1、Client(shell,jdbc,odbc)发送请求到impalad 进程上,发送节点可以是随机的,impalad 之间,也有相互通信 2、Statestore 和catelog 划到同一节点,目的就是这两个进程在协调工作时候,避免因网络问题造成失败 3、Hive metastore 是比较重要的,此时statestore 和catelog 通信,将数据同步到其他节点 4、Impalad 最好与hdfsDataNode 在同一节点,这样能更快速的查询计算,然后返回结果即可(理想状态的就是数据本地化) Impalad 里面包含三个组件 Query planner(查询解析器) 将我们的字符串sql 语句解释成为执行计划, Query coordinator(中心协调节点) 由这个组件来指定来查询的主节点(头),指定好之后通知其他节点我的主节点作用,待你们查询完成之后的结果,返回给头节点 Query executor(查询执行器) 而做查询工作的是就是executor 4、impala核心组件 对于impala 来讲,是没有主节点的,而要理解主节点,impala statestore 和catalog server两个角色,就具备集群调节的功能,根据以上的特点,对impala 进行配置优化配置impala 内存,每一个deamon 都需要配置内存,因为真正做查询工作的就是deamon 所在的节点,所以impala 的总内存,就是所有deamon 节点的内存之和;如果要在哪台机器上面汇总,就需要在那一台机器上的内存调大一些;我们了解到的,真正提供查询的是deamon,那么我们连接哪一台呢?Impala,你可以连接其中deamon 任何一个都行,可以根据自己的需求来 (1)当你查询的量相对大的时候,你就连接内存大的机器, (2)当每台机器都适合查询的情况下也可以随机找一台机器,自己写一个轮询或者权重算法;解决高并发问题 Impalad:主要接收查询请求,接收client、hue、jdbc 或者odbc 请求、query 执行并返回给中心协调节点(对应的服务实例是impalad)子节点上的守护进程,负责向statestore 保持通信,汇报工作。 Imapala-Catalog:把impala表的metadata分发到各个impalad 中,说他是基于hive的,所以就需要metadata数据分到impalad中,以前没有此进程,就是手动来进行同步的。虽然之后加入了,但是也没有那么智能,并不是保证所有的数据都能同步,比如你插入一些数据,他可以把数据发到其他节点,但是比如创建表ddl 语句,建议去手动做一下。接收来自statestore 的所有请求,当impala deamon节点插入或者查询数据时候(数据改变的时候),他把自己的操作结果汇报给state deamon,然后state store 请求catelog deamon,告知重新更新元数据信息给impalad 中,所以catalog deamon 与statedeamon 放到一台机器上,而且不建议在此机器上再去安装impala deamon 进程,避免造成提供查询造成集群管理出问题 Impala State Store:负责收集分布在集群中各个impalad 进程的资源信息,各节点健康状况、同步节点信息。负责query 的调度.(并非绝对,倘若他存在,那就帮忙,若不存在,那就不用他)对于一个正常运转的集群,并不是一个关键进程。 CLI:提供给用户查询使用的命令行工具(Impala Shell使用python实现),同时Impala还提供了Hue,JDBC, ODBC使用接口。 5、Impala的查询处理过程 ![]() 1、Impalad分为Java前端与C++处理后端,接受客户端连接的Impalad即作为这次查询的Coordinator,Coordinator通过JNI调用Java前端对用户的查询SQL进行分析生成执行计划树,不同的操作对应不用的PlanNode, 如:SelectNode, ScanNode, SortNode, AggregationNode, HashJoinNode等等。 2、执行计划树的每个原子操作由一个PlanFragment表示,通常一条查询语句由多个Plan Fragment组成, Plan Fragment 0表示执行树的根,汇聚结果返回给用户,执行树的叶子结点一般是Scan操作,分布式并行执行。 3、Java前端产生的执行计划树以Thrift数据格式返回给Impala C++后端(Coordinator)(执行计划分为多个阶段,每一个阶段叫做一个PlanFragment,每一个PlanFragment在执行时可以由多个Impalad实例并行执行(有些PlanFragment只能由一个Impalad实例执行,如聚合操作),整个执行计划为一执行计划树),由Coordinator根据执行计划,数据存储信息(Impala通过libhdfs与HDFS进行交互。通过hdfsGetHosts方法获得文件数据块所在节点的位置信息),通过调度器(现在只有simple-scheduler, 使用round-robin算法)Coordinator::Exec对生成的执行计划树分配给相应的后端执行器Impalad执行(查询会使用LLVM进行代码生成,编译,执行。对于使用LLVM如何提高性能这里有说明),通过调用GetNext()方法获取计算结果,如果是insert语句,则将计算结果通过libhdfs写回HDFS当所有输入数据被消耗光,执行结束,之后注销此次查询服务。 参考来自:https://www.cnblogs.com/Rainbow-G/articles/4282444.html参考来自:https://blog.csdn.net/wyz0516071128/article/details/81194712 |
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
区块链培训 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 软件测试培训 | Linux运维 |
大数据培训 | 智能机器人软件开发 |
传智播客是一家致力于培养高素质软件开发人才的科技公司,“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。
传智播客从未停止思考
传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”
中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。
何为中高级程序员课程?
传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展。“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。
黑马程序员热门视频教程
Python入门教程完整版(懂中文就能学会) | 零起点打开Java世界的大门 |
C++| 匠心之作 从0到1入门学编程 | PHP|零基础入门开发者编程核心技术 |
Web前端入门教程_Web前端html+css+JavaScript | 软件测试入门到精通 |