实时查询引擎
来源:互联网 发布:宿豫12345网络问政 编辑:程序博客网 时间:2024/04/29 17:00
摘要: 1. Drill是什么 Apache drill是什么,脱去华丽的外衣,Apache Drill是一个能够对大数据进行实时的分布式查询引擎,目前它...
1. Drill是什么
Apache drill是什么,脱去华丽的外衣,Apache Drill是一个能够对大数据进行实时的分布式查询引擎,目前它已经成为Apache的顶级项目。Drill是开源版本的Google Dremel。它以兼容ANSI SQL(国际标准SQL语言)语法作为接口,支持对本地文件,HDFS,HIVE, HBASE,MongeDB作为存储的数据查询,文件格式支持Parquet,CSV, TSV,以及JSON这种无模式无关(schema-free)的数据。所有这些数据都可以像使用传统数据库的针对表查询一样进行快速实时的查询。
2. Drill结构
Apache Drill是一个无主节点的分布式查询工具,每一个部署节点(Drillbit)都包含有以下核心模块:
- RPC Endpoint: 基于RPC协议的客户端通信接口
- Optimizer:优化器
- Execution:执行
- SQL Parser: SQL解析工具,输出Logical plan, 它使用了开源工具:Calcite
- Storage Engine interface(存储引擎接口): 面对多种数据源的统一读写抽象接口,它提供几种功能: 1.提供Metadata。 2.数据读写接口。3.数据定位和优化规则帮助提高查询效率。
Drill提供以下几种类型的使用接口:
- Drill Shell
- Drill WEB控制台
- ODBC/JDBC
- C++ API
3. Drill安装
Drill支持单机或分布式模块的Linux, Mac OS X, Windows系统的部署。本文的测试环境为基于CDH 5.5的Hadoop集群环境的安装和测试。ApacheDrill 版本: 1.8. Drill 的安装依赖于以下几个组件:
- (必须)JDK 7
- (必须)ZooKeeper quorum
- (建议)Hadoop Cluster
- (建议)使用DNS
即然是基于已安装好的CDH 5.5环境,那么以上要求自然是完全满足的。(CDH5.5安装参考: 理清CDH Hadoop集群安装流程,剩下的就是安装Drill了:
1. 解压Apache Drill(软件包的下载可以在Apache drill官网下到)
- 1
2. 更改配置文件
更改目录 apache-drill-1.8.0/conf/drill-override.conf配置文件,如:
- 1
- 2
- 3
- 4
3. 配置Drill
Drill默认使用4G Heap memory, 8G Direct Memory的配置,(自Drill 1.5后,Drill使用Driect Memory来分配查询内存,提高查询效率)。可以在apache-drill-1.8.0/conf/drill-env.sh文件中更改内存配置,如:
- 1
- 2
4. 启动Drill
将配置完成后的 apache-drill-1.8.0 目录拷贝到每一个集群节点上,执行bin目录下的以下脚本启动Apache Drill:
- 1
5. 连接到Drill
Drill可以使用以下几方式进行命令行连接操作:
- 1
- 2
- 3
- 4
或访问如下URL进行WEB界面访问和操作,包括进行Storage plugin的配置等,也都要通过该界面:
- 1
4. 使用Drill查询文件
1. 配置Drill 的HDFS Storage
在上面的WEB页面中的Storage Tab页中,更新hdfs storage,如:
- 1
- 2
- 3
- 4
- 5
- 6
然后Update并Enable.
2. 直接查询HDFS中的JSON文件
JSON是一个无模式化,结构随意的文件,使用Drill不仅可以像表一个查询JSON,而且可以分析JSON深层的数据,如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3. 直接查询HDFS中的CSV文件
跟查询JSON文件一样:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
这儿看到的列头只有一个columns,因为CSV文件中不包含列头,但我们可以通过columns[n]来进行拆分,如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
4. 直接查询HDFS中的Parquet文件
Parquet是一种自描述的数据源,本身已包含了对数据结构的描述,且压缩率高,按列存储,使用广泛:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- Parquet中含有Decimal数据类型时会产生异常:
Error: SYSTEM ERROR: IndexOutOfBoundsException: index: 256, length: 1 (expected: range(0, 256))
对于Parquet中的Timestamp, VARCHAR数据类型在查询时需要使用CONVERT_FROM函数进行一次转换,如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
5. 使用Drill查询HIVE表数据
1. 配置Drill的HIVE Storage
还是一样的配置页面,还是一样的配置方式,还是一样的需要Update并Enable:
- 1
- 2
- 3
- 4
2. 查询HIVE表数据
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
查询HIVE的Parquet表时,可以设置参数: store.hive.optimize_scan_with_native_readers来优化Drill的Parquet读取性能,如:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 在设置了该参数为true后在读取Decimal参数时会产生异常:
Error: SYSTEM ERROR: IndexOutOfBoundsException: index: 256, length: 1 (expected: range(0, 256))
6. 问题
1. Hive里的Decimal数据类型,在当前版本还属于Bate数据类型,默认不启用,需要设置planner.enable_decimal_data_type
参数来启用,在Drill中执行如下语句,可以永久启用Decimal数据类型:
- 1
2. 自1.5版本之后,Drill使用Direct Memory来执行Sort操作,之前版本可以执行成功的SQL,在这后的版本,可能会因内存不足而执行失败并返回错误信息。但会对内存的使用计算更精准。
7. 最后
Apache Drill发展时间虽然短,但它是非常灵活和适用很广的一个实时查询工具。可以看到它适用于多种文件格式和多种数据库。但需要注意目前的版本在使用和兼容上还是需要等完善的。
- 实时查询引擎
- presto实时查询引擎搭建
- 实时查询引擎 - 介绍总结
- 实时查询引擎 - Apache Drill 介绍与应用
- 实时查询引擎 - Facebook Presto 介绍与应用
- 实时查询引擎 - 构建于HDFS之上的Greenplum: HAWQ
- 实时查询引擎 - Cloudera Impala 介绍与应用
- Hawq学习笔记 --- 构建于HDFS之上的Greenplum(实时查询引擎)
- Spark写入Parquet,暴露JDBC引擎,实现准实时SQL查询
- Spark写入Parquet,暴露JDBC引擎,实现准实时SQL查询
- 查询引擎
- 火车票实时查询网站
- Hadoop - 实时查询Drill
- Solr实时查询模型
- 快递100 实时查询
- nc5查询引擎练习
- 引擎、隔离级别查询
- 数据查询引擎
- chrome新标签页 无法访问此网站 连接已重置
- Java 中使用内存映射文件需要考虑的 10 个问题
- 购物车小案例【简单版】
- JVM内存管理及垃圾回收
- PAT A1051. Pop Sequence (25)
- 实时查询引擎
- 共享内存在Java中实现和应用
- TCP/IP协议
- 前端解决跨域问题的8种方案(最新最全)
- Java的内存回收机制
- 经常用到得caffe学习网址。
- Error launching Android Studio
- 动态生成HTML元素并为元素追加属性
- 三、 随时随地退出程序-activity管理