【impala学习之一】impala
环境
虚拟机:VMware 10
Linux版本:CentOS-6.5-x86_64
客户端:Xshell4
FTP:Xftp4
jdk8
CM5.4
一、Impala
Impala是基于Hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中。并且impala兼容Hive的sql解析,实现了Hive的SQL语义的子集,功能还在不断的完善中。
基于内存运算,内存要求大;
二、Impala与Hive区别
相同点:
数据存储:使用相同的存储数据池都支持把数据存储于HDFS, HBase。
元数据:两者使用相同的元数据。
SQL解释处理:比较相似都是通过词法分析生成执行计划。
不同点:
执行计划:
Hive: 依赖于MapReduce执行框架,执行计划分成 map->shuffle->reduce->map->shuffle->reduce…的模型。如果一个Query会 被编译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。
Impala: 把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询,而不用像Hive那样把它组合成管道型的 map->reduce模式,以此保证Impala有更好的并发性和避免不必要的中间sort与shuffle。
数据流:
Hive: 采用推的方式,每一个计算节点计算完成后将数据主动推给后续节点。
Impala: 采用拉的方式,后续节点通过getNext主动向前面节点要数据,以此方式数据可以流式的返回给客户端,且只要有1条数据被处理完,就可以立即展现出来,而不用等到全部处理完成,更符合SQL交互式查询使用。
内存使用:
Hive: 在执行过程中如果内存放不下所有数据,则会使用外存,以保证Query能顺序执行完。每一轮MapReduce结束,中间结果也会写入HDFS中,同样由于MapReduce执行架构的特性,shuffle过程也会有写本地磁盘的操作。
Impala: 在遇到内存放不下数据时,当前版本1.0.1是直接返回错误,而不会利用外存,以后版本应该会进行改进。这使用得Impala目前处理Query会受到一 定的限制,最好还是与Hive配合使用。Impala在多个阶段之间利用网络传输数据,在执行过程不会有写磁盘的操作(insert除外)。
调度:
Hive: 任务调度依赖于Hadoop的调度策略。
Impala: 调度由自己完成,目前只有一种调度器simple-schedule,它会尽量满足数据的局部性,扫描数据的进程尽量靠近数据本身所在的物理机器。调度器 目前还比较简单,在SimpleScheduler::GetBackend中可以看到,现在还没有考虑负载,网络IO状况等因素进行调度。但目前 Impala已经有对执行过程的性能统计分析,应该以后版本会利用这些统计信息进行调度吧。
容错:
Hive: 依赖于Hadoop的容错能力。
Impala: 在查询过程中,没有容错逻辑,如果在执行过程中发生故障,则直接返回错误(这与Impala的设计有关,因为Impala定位于实时查询,一次查询失败, 再查一次就好了,再查一次的成本很低)。但从整体来看,Impala是能很好的容错,所有的Impalad是对等的结构,用户可以向任何一个 Impalad提交查询,如果一个Impalad失效,其上正在运行的所有Query都将失败,但用户可以重新提交查询由其它Impalad代替执行,不 会影响服务。对于State Store目前只有一个,但当State Store失效,也不会影响服务,每个Impalad都缓存了State Store的信息,只是不能再更新集群状态,有可能会把执行任务分配给已经失效的Impalad执行,导致本次Query失败。
适用面:
Hive: 复杂的长时间批处理查询任务,数据转换任务。
Impala:实时交互式SQL查询,因为不支持UDF,能处理的问题域有一定的限制。
Impala给数据分析人员提供了快速实验、验证想法的大数 据分析工具。可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。
三、架构
1.Impala Daemon
Impala的核心组件是运行在各个节点上面的impalad这个守护进程(Impala daemon),它负责读写数据文件,接收从impala-shell、Hue、JDBC、ODBC等接口发送的查询语句,并行化查询语句和分发工作任务到Impala集群的各个节点上,同时负责将本地计算好的查询结果发送给协调器节点(coordinator node)。
你可以向运行在任意节点的Impala daemon提交查询,这个节点将会作为这个查询的协调器(coordinator node),其他节点将会传输部分结果集给这个协调器节点。由这个协调器节点构建最终的结果集。在做实验或者测试的时候为了方便,我们往往连接到同一个Impala daemon来执行查询,但是在生产环境运行产品级的应用时,我们应该循环(按顺序)的在不同节点上面提交查询,这样才能使得集群的负载达到均衡。
Impala daemon不间断的跟statestore进行通信交流,从而确认哪个节点是健康的能接收新的工作任务。它同时接收catalogd daemon(从Impala 1.2之后支持)传来的广播消息来更新元数据信息,当集群中的任意节点create、alter、drop任意对象、或者执行INSERT、LOAD DATA的时候触发广播消息。
2.Impala Statestore
Impala Statestore检查集群各个节点上Impala daemon的健康状态,同时不间断地将结果反馈给各个Impala daemon。这个服务的物理进程名称是statestored,在整个集群中我们仅需要一个这样的进程即可。如果某个Impala节点由于硬件错误、软件错误或者其他原因导致离线,statestore就会通知其他的节点,避免其他节点再向这个离线的节点发送请求。
由于statestore是当集群节点有问题的时候起通知作用,所以它对Impala集群并不是有关键影响的。如果statestore没有运行或者运行失败,其他节点和分布式任务会照常运行,只是说当节点掉线的时候集群会变得没那么健壮。当statestore恢复正常运行时,它就又开始与其他节点通信并进行监控。
3.Impala Catalog
Imppalla catalog服务将SQL语句做出的元数据变化通知给集群的各个节点,catalog服务的物理进程名称是catalogd,在整个集群中仅需要一个这样的进程。由于它的请求会跟statestore daemon交互,所以最好让statestored和catalogd这两个进程在同一节点上。
catalog服务减少了REFRESH和INVALIDATE METADATA语句的使用。在之前的版本中,当在某个节点上执行了CREATE DATABASE、DROP DATABASE、CREATE TABLE、ALTER TABLE、或者DROP TABLE语句之后,需要在其它的各个节点上执行命令INVALIDATE METADATA来确保元数据信息的更新。同样的,当你在某个节点上执行了INSERT语句,在其它节点上执行查询时就得先执行REFRESH table_name这个操作,这样才能识别到新增的数据文件。
四、安装
使用CM安装
1、选择服务
2、选择依赖
3、角色分配
参考:
Impala与Hive的比较
Impala和Hive的关系
漫谈大数据查询引擎之Impala的架构设计
转载于:https://www.cnblogs.com/cac2020/p/10495569.html
【impala学习之一】impala相关推荐
- Impala学习笔记
目录 一.Impala 概述 1.1 什么是 Impala 2.2 Impala 的功能 2.3 Impala 的优缺点 2.4 关系数据库和impala 2.5 Hive,Hbase和Impala ...
- Impala介绍,Impala架构,Impala安装,impala Shell ,分区创建,refresh,load数据,获取数据的元数据
1 Impala Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBASE中的PB级大数据.已有的Hive系统虽然也提供了SQL语义, ...
- 记录python使用pymysql连接mysql数据库,使用impyla、ibis-framework[impala]连接hive\impala(kerberos)数据库(备以后查阅)
记录python使用pymysql连接mysql数据库,使用impyla.ibis-framework[impala]连接hive\impala(kerberos)数据库(备以后查阅) 连接mysql ...
- DeepMind推出分布式深度强化学习架构IMPALA,让一个Agent学会多种技能
维金 编译自 DeepMind Blog 量子位 出品 | 公众号 QbitAI 目前,深度增强学习(DeepRL)技术在多种任务中都大获成功,无论是机器人的持续控制问题,还是掌握围棋和雅达利的电子游 ...
- Java 调用 Impala - JDBC 调用Impala
java通过JDBC 调用Impala服务 Maven项目中 pom.xml引用 <dependency><groupId>org.apache.hadoop</grou ...
- Impala Shell 和 Impala SQL
1.Impala 外部 Shell Impala外部Shell 就是不进入Impala内部,直接执行的ImpalaShell 例如通过外部Shell查看Impala帮助可以使用: $ impala-s ...
- 深度学习(四十二)——深度强化学习(5)PPO, IMPALA, Hierarchical RL, OpenAI
PPO(Proximal Policy Optimization) PPO是2017年由OpenAI提出的一种基于随机策略的DRL算法,也是当前OpenAI的默认算法. PPO是一种Actor-Cri ...
- Impala入门学习与使用详解
目录 一.Impala的基本概念 1.1 什么是Impala 1.2 Impala的优缺点 1.2.1 优点 1.2.2 缺点 1.3 Impala的架构 二.Impala的安装 2.1 Impala ...
- 什么原因接触接触impala的
最近一个项目,关于大数据的改造项目,底层选择Impala还是sparkSQL呢? 最后选择Impala.这样就开启了我的Impala学习之旅.我大部分负责Imapa接口开发工作. 我是控制不住的想整个 ...
最新文章
- 哈工大计算机系女生的宿舍,哈工大的硕博士们,这次被学校折腾惨了!
- OpenGL 开发环境配置
- 顺序队列,循环队列,链队列
- fjblog佛教博客不错
- Python BeautifulSoup和Requests爬虫爬取中关村手机资料
- 刻不容缓!联合国加开会议讨论「如何限制杀人机器人」
- Android Studio使用JDBC远程连接mysql的注意事项(附示例)
- C#调用C++的DLL所有数据类型转换方式
- 最速下滑法c语言程序,最速下降法 C语言.doc
- 2020计算机408考试大纲,2020考研计算机:计算机408大纲考点变化解析指导
- 老铁的IT之路,从迷茫“愤青”到团队项目经理,他是如何一步步走出来的?!
- C++的 new 和 detele
- from __future__ imports must occur at the beginning of the file问题的解决
- 成都市2016年11月出租车订单od数据
- asixs 响应慢_大智慧技术指标快捷键一览!转的!|家居理财 - 鱼叉论坛 - powered by php......
- “站在巨人的肩膀上”
- windows驱动快速入门
- a 标签的 target 属性、描点链接
- Twincat学习笔记 一 电机控制
- 地狱飞龙 [simpson][积分
热门文章
- Mvvm Light Toolkit 入门
- python3.6 配置COCO API出错解决方案
- glide从入门到精通使用
- PyQt5学习笔记2-GUI编程基础-2
- 从“No space left on device”到删除海量文件
- Dynamic Entity Representation with Max-pooling Improves Machine
- Maven插件:versions-maven-plugin
- 用Aliyun E-MapReduce集群的sqoop工具和数据库同步数据如何配置网络
- php 去除div标签,JavaScript_清除div下面的所有标签的方法,复制代码 代码如下: div id=s - phpStudy...
- python 浮点数比较_Python中的浮点数