Impala 基于hive的交互式实时分析工具(二) 概念及原理介绍

impala和hive的区别

  • 概括:
    hive是【基于hadoop】的适合【离线批处理复杂sql分析的数仓工具】,
    impala是【基于hive】的适合【实时交互简单sql的数仓工具】

  • 执行计划
    1.hive: hive是底层将sql转化为mapreduce代码提交yarn执行,java底层
    2.impala: impala是底层将sql生成执行计划树,由c++执行集去执行

  • 数据流
    1.hive采用的是推的模式,即前一个节点计算完成之后,才统一把数据推给后一个节点
    2.impala采用的是拉的模式,即前一个节点处理完一点数据,后一点立马实时拉取结果

  • 内存的使用
    1.hive使用内存加外存并存模式
    2.impala只使用内存,若内存不足,会报错
    <解释>: mr程序中,若内存不足,可以使用虚拟内存(机器内存或硬盘),而impala只能使用物理内存

  • 调度
    1.hive使用yarn的调度机制
    2.impala使用自己的simple suchdule

  • 容错
    1.hive依赖hadoop的容错机制,例如task重试,推测执行机制
    2.imapala没有容错,sql执行瞬时,试错成本低

  • 适用面
    1.hive支持复杂场景的sql查询,支持自定义udf,udtf,udaf
    2.impala只支持简单场景的sql查询,不支持udtf函数

  • 架构
    1.hive是一个普通的类客户端程序
    2.impala是一个分布式计算引擎

  • 发行方
    1.hive是由facebook公司研发的
    2.impala是由cloudera公司研发的

SQL执行流程

  1. impala-server去impala-statestore上注册和订阅
  2. client提交查询到impala-server上,该节点负责调度,职责变为coordinator
  3. coordinator去catalog上获取元数据,获取数据hdfs地址,datanode信息
  4. coordinator的frontend-server根据元数据解析sql,并生成执行计划,然后分发给impala-server执行
  5. coordinator汇聚查询结果并返回给client

聚集函数执行流程

和topn类似,先对本地数据进行分组聚合以降低数据量,然后汇总之前的聚集结果再计算来得出最终结果

Join方式

  1. 表广播方式(broadcast join): 保持一个表的数据不动,将另一个表广播到所有相关节点.类似于map join
  2. hash重分布方式(partitioned join): 根据join字段hash值重新分布两张hash表数据.类似于smb join

注意函数使用

impala支持C++与Java的UDF和UDAF,不支持UDTF
impala中要用java开发UDF与Hive的开发是一致的
可以直接将Hive中写的 UDF在Impala中创建函数

元数据

  • 内容:
    impala和hive共用一套元数据,通过catalog来连接metastore服务
    hiveclient需要连接hiveserver2.然后连接metastore服务获取元数据
    impala不需要连接hiveserver2
  • 补充:
    1.每一台impalaserver都缓存了catalog中的元数据信息
    2.每一台impalaserver会缓存所有机器状态
    3.impalaserver与statestore保持心跳连接,statestore将所有节点的存活状态随着心跳的返回一起发送给impalaserver
  • 补充: impalaserver缓存catalog元数据信息及statestore节点可用列表,数据位置信息的优点
    1.减轻catalog和statestore的压力,不用频繁请求
    2.如果catalog和statestore节点不可用,集群还可用一段时间,因此statestore不需要HA,故障重启就ok
  • 流程:
    impalaserver提交修改操作,本次修改操作提交到catalog,然后提交给hive的metastore去修改数仓的元数据,metastore修改成功后返回本次被修改的元数据信息给catalog,catalog然后再同步此次修改元数据给对应的impalaserver,impalaserver接收到此次修改元数据信息后,在下一次心跳时,将此次修改元数据信息同步给statestore服务,statestore然后再将此次被修改的元数据信息同步给所有的impalaserver节点

短路读取

  • 概念:
    short-circuit local read短路读取,本地优先计算,将计算资源本地化,避免大数据量的网络传输
    若对应机器上没有数据或impala服务,那么就会使用机架感知,进行资源就近读取,
    若资源位置距离相同,则进行随机轮询读取

  • 例如:
    1.datanode与nodemanager同节点部署
    2.impalad与datanode同节点部署
    3.hregionserver与datanode同节点部署

查询性能实现

  1. 采取性能优化措施有向量的执行计划树
  2. 一次处理一个getnext一批记录
  3. 多个操作符可以做pipeline
  4. LLVM编译执行
  5. cpu密集型查询
  6. io本地化
  7. 支持本地优先计算,短路读取功能
  8. 支持列式存储格式,文件parquet列存

性能优化

  1. 短路机制:强制开启
  2. 保证Impalad与DN放在一台机器:优先本地计算
  3. 选择合适的列式文件存储和压缩
  4. 最推荐使用parquet类型存储
  5. 选择合适的分区粒度:一般来说impala中每个分区的数据不建议超过10G
  6. catalog与metastore放在一台机器上
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容

  • 夜莺2517阅读 127,720评论 1 9
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,536评论 28 53
  • 兔子虽然是枚小硕 但学校的硕士四人寝不够 就被分到了博士楼里 两人一间 在学校的最西边 靠山 兔子的室友身体不好 ...
    待业的兔子阅读 2,604评论 2 9
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,190评论 4 8