Hadoop - 实时查询Drill

简介:

1.概述

  在现实业务当中,存在这样的业务场景,需要实时去查询HDFS上的相关存储数据,普通的查询(如:Hive查询),时延较高。那么,是否存在时 延较小的查询组件。在业界目前较为成熟的有Cloudera的Impala,Apache的Drill,Hortonworks的Stinger。本篇博 客主要为大家介绍Drill,其他两种方式大家可以自行下去补充。

2.Drill Architecture

2.1 Cilent

  使用Drill,可以通过以下方式进入到Drill当中,内容如下所示:

  • Drill shell:使用客户端命令去操作
  • Drill Web Console:Web UI界面去操作相关内容
  • ODBC/JDBC:使用驱动接口操作
  • C++ API:C++的API接口

2.2 Drill Query Execution

  执行流程如下图所示:

2.3 Core Modules

  核心模块图,如下所示:

  至于详细的文字描述,这里就不多做赘述了。大家看图若是有疑惑的地方,可以去官方网站,查看详细的文档描述。[官方文档

3.Drill使用

  介绍完Drill的架构流程,下面我们可以去使用Drill去做相关查询操作。安装Drill的过程比较简单,这里就不多做详细的赘述了。首 先,去Apache的官网下载Drill的安装包,这里笔者所使用的本版是drill-1.2.0。可独立部署在物理机上,不必与Hadoop集群部署在 一起。这里需要注意的是,物理机的内存至少留有4G空闲给Drill去使用。不然,在执行查询操作的时候会内容溢出,查询Drill的官方文档,官方给出 的解释是,操作的内容都在内容中完成,不会写磁盘,除非你强制指明去写磁盘,但是,一般考虑到响应速度因素,都会在内容中完成。笔者曾试图降低其内存配置 小于4G,然并卵。所以,在使用Drill做查询时,需要保证物理机空闲内存大于等于4G。

  目前,Drill迭代版本比较快速。大家在下载Drill版本的时候,可以多多留意下版本内容变化。

  在解压Drill的压缩包后,在其conf文件夹下有一个drill-override.conf文件,这里我们在里面添加Web UI的访问地址,添加的内容我们可以在drill-override-example.conf模版文件中查找对应的内容。添加内容如下所示:

drill.exec: {
  cluster-id: "drillbits1",
  zk.connect: "dn1:2181,dn2:2181,dn2:2181",
  http: {
    enabled: true,
    ssl_enabled: false,
    port: 8047
  }
}
  这里需要注意的是,Drill需要用ZK,这里笔者就直接使用Hadoop集群的ZooKeeper集群连接信息地址。在添加完内容后,可以使用以下命令启动。


./drillbit.sh start

  启动之后,Web UI界面如下所示:

  目前条件有限,只有单台物理机,所以只部署了单台Drill。若是,大家条件允许,可以查看官网文档去部署Cluster。Drill插件默认是没有HDFS的,需要我们主动去创建,默认只有以下插件,如下图所示:

  这里,笔者已经配置过HDFS的插件,故上图出现HDFS插件信息,其配置信息如下所示:

{
  "type": "file",
  "enabled": true,
  "connection": "hdfs://hadoop.company.com:9000/",
  "workspaces": {
    "root": {
      "location": "/opt/drill",
      "writable": true,
      "defaultInputFormat": null
    }
  },
  "formats": {
    "csv": {
      "type": "text",
      "extensions": [
        "csv"
      ],
      "delimiter": ","
    },
    "tsv": {
      "type": "text",
      "extensions": [
        "tsv"
      ],
      "delimiter": "\t"
    },
    "parquet": {
      "type": "parquet"
    }
  }
}

  PS:这里要保证HDFS的地址信息正确。另外,Drill支持的存储介质较多,大家参考官方文档去添加对应的存储介质。

  在添加HDFS插件之后,我们可以通过Web UI界面的查询界面进行文件查询,也可以使用Drill Shell命令在终端去查询。查询方式如下所示:

  • Web UI查询命令:

  • Web UI结果如下:

  另外,其查询记录详情可以在Profiles模块下查看。如下图所示:

  • Drill Shell查询:
./sqlline -u jdbc:drill:zk=dn1,dn2,dn3:2181
  • Drill Shell 查询结果:

4.总结

  这里,笔者做过一个性能测试比较,数量级分别为10W,100W,1000W的不重复数据,其响应时间依次递增。结果如下图所示:

  通过测试结果可以看出,若是数量级在100W时,响应时间平均在秒级别,可以尝试用Drill去中OLTP业务。若是在1000W以上级别,显然这个延时做OLTP是难以接受的,这个可以去做OLAP业务。

5.结束语

  这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!


目录
相关文章
|
Web App开发 存储 分布式计算
|
SQL 数据库连接 分布式数据库
|
SQL 数据库连接 分布式数据库
|
存储 SQL 大数据
建立HBase的集群和HDInsight在Hadoop中使用Hive来查询它们
建立HBase的集群和HDInsight在Hadoop中使用Hive来查询它们 在本教程中,您将学习如何创建和查询HDInsight使用HiveHadoop的HBase的表。
1454 0
|
7天前
|
存储 分布式计算 Hadoop
大数据处理架构Hadoop
【4月更文挑战第10天】Hadoop是开源的分布式计算框架,核心包括MapReduce和HDFS,用于海量数据的存储和计算。具备高可靠性、高扩展性、高效率和低成本优势,但存在低延迟访问、小文件存储和多用户写入等问题。运行模式有单机、伪分布式和分布式。NameNode管理文件系统,DataNode存储数据并处理请求。Hadoop为大数据处理提供高效可靠的解决方案。
30 2
|
7天前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
9天前
|
SQL 分布式计算 Hadoop
利用Hive与Hadoop构建大数据仓库:从零到一
【4月更文挑战第7天】本文介绍了如何使用Apache Hive与Hadoop构建大数据仓库。Hadoop的HDFS和YARN提供分布式存储和资源管理,而Hive作为基于Hadoop的数据仓库系统,通过HiveQL简化大数据查询。构建过程包括设置Hadoop集群、安装配置Hive、数据导入与管理、查询分析以及ETL与调度。大数据仓库的应用场景包括海量数据存储、离线分析、数据服务化和数据湖构建,为企业决策和创新提供支持。
40 1
|
26天前
|
消息中间件 SQL 分布式计算
大数据Hadoop生态圈体系视频课程
熟悉大数据概念,明确大数据职位都有哪些;熟悉Hadoop生态系统都有哪些组件;学习Hadoop生态环境架构,了解分布式集群优势;动手操作Hbase的例子,成功部署伪分布式集群;动手Hadoop安装和配置部署;动手实操Hive例子实现;动手实现GPS项目的操作;动手实现Kafka消息队列例子等
20 1
大数据Hadoop生态圈体系视频课程
|
4月前
|
分布式计算 资源调度 搜索推荐
《PySpark大数据分析实战》-02.了解Hadoop
大家好!今天为大家分享的是《PySpark大数据分析实战》第1章第2节的内容:了解Hadoop。
44 0
《PySpark大数据分析实战》-02.了解Hadoop