• impala


     参考:

    架构原理:

    https://www.cnblogs.com/Rainbow-G/articles/4282444.html

    使用:

    https://www.w3cschool.cn/impala/impala_architecture.html

    官网:

    https://impala.apache.org/

    http://impala.apache.org/docs/build/html/topics/   GG

       Impala是Cloudera在受到Google的Dremel启发下开发的实时交互SQL大数据查询工具(实时SQL查询引擎Impala),Impala没有再使用缓慢的Hive+MapReduce批处理,而是通过使用与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。

    Impala通过使用标准组件(如HDFS,HBase,Metastore,YARN和Sentry)将传统分析数据库的SQL支持和多用户性能与Apache Hadoop的可扩展性和灵活性相结合。
    1/ 使用Impala,与其他SQL引擎(如Hive)相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信。
    2/ Impala可以读取Hadoop使用的几乎所有文件格式,如Parquet,Avro,RCFile。

      通过把存储(hdfs,kudu..)的文件读要内存里运行. 所以具有实时计算的特点: 1/ 实时,快. 2/ 大批量支持并没那么好.  

    Impala主要由Impalad, State Store和CLI组成。

    Impalad: 与DataNode运行在同一节点上,由Impalad进程表示,它接收客户端的查询请求(接收查询请求的Impalad为Coordinator,Coordinator通过JNI调用java前端解释SQL查询语句,生成查询计划树,再通过调度器把执行计划分发给具有相应数据的其它Impalad进行执行),读写数据,并行执行查询,并把结果通过网络流式的传送回给Coordinator,由Coordinator返回给客户端。同时Impalad也与State Store保持连接,用于确定哪个Impalad是健康和可以接受新的工作。

    在Impalad中启动三个ThriftServer: beeswax_server(连接客户端),hs2_server(借用Hive元数据), be_server(Impalad内部使用)和一个ImpalaServer服务。

    Impala State Store: 跟踪集群中的Impalad的健康状态及位置信息,由statestored进程表示,它通过创建多个线程来处理Impalad的注册订阅和与各Impalad保持心跳连接,各Impalad都会缓存一份State Store中的信息,当State Store离线后(Impalad发现State Store处于离线时,会进入recovery模式,反复注册,当State Store重新加入集群后,自动恢复正常,更新缓存数据)因为Impalad有State Store的缓存仍然可以工作,但会因为有些Impalad失效了,而已缓存数据无法更新,导致把执行计划分配给了失效的Impalad,导致查询失败。

    与Hive的关系

       Impala与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的共同之处,如数据表元数据、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储资源池等。Impala与Hive在Hadoop中的关系如图 2所示。Hive适合于长时间的批处理查询分析,而Impala适合于实时交互式SQL查询,Impala给数据分析人员提供了快速实验、验证想法的大数据分析工具。可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。

    impala的使用:

    Impala shell(命令提示符)
    Hue (用户界面)
    ODBC和JDBC(第三方库)

    1、 impala-shell:

    [root@emr-header-1 ~]# impala-shell
    Starting Impala Shell without Kerberos authentication
    Connected to emr-header-1.cluster-635:21000
    Server version: impalad version 2.12.0-cdh5.16.1 RELEASE (build 4a3775ef6781301af81b23bca45a9faeca5e761d)
    ***********************************************************************************
    Welcome to the Impala shell.
    (Impala Shell v2.12.0-cdh5.16.1 (4a3775e) built on Tue Dec 4 08:37:43 CST 2018)

    To see live updates on a query's progress, run 'set LIVE_SUMMARY=1;'.
    ***********************************************************************************
    [emr-header-1.cluster-635:21000] > help;

    测试脚本:

    select 
        id,
        concat(name,'[',CAST(id as string),']') as city_label
    from oride_db.data_city_conf 
    where dt >= from_unixtime(unix_timestamp(days_sub(current_timestamp(),1)), 'yyyy-MM-dd') and 
        id < 999000
    order by id 
    union select 0 as id, 'All[0]' as city_label

    2、通过jdbc

    https://www.cnblogs.com/xinfang520/p/9354466.html

     默认是21050,emr做了个负载均衡,连header的21050就可以了,它会分发给其它两个节点的21050

      

  • 相关阅读:
    字节流
    A、B
    rollup
    使用nodejs提供动态javascript文件
    nodejs服务器部署
    A js 中加载Bjs

    01月05日22:14:32 学习进度笔记
    01月07日19:10:50 学习进度笔记
    01月07日18:53:49 学习进度笔记
  • 原文地址:https://www.cnblogs.com/hongfeng2019/p/11263701.html
Copyright © 2020-2023  润新知