您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > apachedrill
1、Drill安装Windows安装,直接解压tar.gz安装包,启动bin下的sqline.bat命令行:sqlline.bat-ujdbc:drill:zk=local使用自带的文件系统查询:查询一个json文件:SELECT*FROMcp.`employee.json`LIMIT3;QueryingaParquetFile:SELECT*FROMdfs.`F:/Hadoop/drill/apache-drill-1.0.0/apache-drill-1.0.0/sample-data/region.parquet`;2、ApacheDrillSandbox3、集群安装条件:JDK7Zookeeper集群Hadoop集群DNS步骤:1)安装Drill2)配置Drill和Zookeeper编辑drill-override.conf位于/conf目录提供了一个独特的集群ID和Zookeeper的主机名和端口号zk.connect。如果在多个节点上安装Drill,分配相同的集群ID如果每个节点都安装了Drill节点共享相同的ID,Zookeeper默认端口是2181。配置后即可使用Drill:bin/drillbit.shrestartbin/drill-localhostbin/drill-confjdbc:drill:zk=zk1host:portselect*fromsys.drillbits;sqlline–ujdbc:drill:[schema=storageplugin;]zk=zkname[:port][,zkname2[:port]...]bin/sqlline–ujdbc:drill:schema=dfs;zk=centos26bin/sqlline–ujdbc:drill:zk=cento23,zk=centos24,zk=centos26:51813)连接数据源80474、配置Drill1)Drill内存配置默认是8G,修改DrillBit内存:再drill-env.sh中,XX:MaxDirectMemorySizeDRILL_MAX_DIRECT_MEMORY=8GDRILL_MAX_HEAP=4G2)配置一个多用户集群介绍yarn_nodemanager_heapsizeyarn_resourcemanager_heapsize3)为共享DrillBit配置资源并行化配置:planner.width.max.per.nodeplanner.width.max.per.query4)配置用户模拟默认情况下是关闭,可以在/conf/drill-override.conf中配置5)配置用户认证6)配置选项系统选项:启动选项:drill-override.conf查看启动选项:SELECT*FROMsys.boot;7)Drill中的端口使用8)配置DrillShell的使用5、连接数据源1)存储插件的注册WebUI:)存储插件配置3)FS存储插件ConnectingDrilltoaFileSystem:HDFSconnection:hdfs://IPAddress:Port/4)工作空间5)Hbase存储插件6)Hive存储插件1、概述ApacheDrill是一个低延迟的分布式海量数据(涵盖结构化、半结构化以及嵌套数据)交互式查询引擎,使用ANSISQL兼容语法,支持本地文件、HDFS、Hive、HBase、MongoDB等后端存储,支持Parquet、JSON、CSV、TSV、PSV等数据格式。受Google的Dremel启发,Drill满足上千节点的PB级别数据的交互式商业智能分析场景。本质上,ApacheDrill是GoogleDremel的开源实现,本质是一个分布式的mpp查询层,支持SQL及一些用于NoSQL和Hadoop数据存储系统上的语言,将有助于Hadoop用户实现更快查询海量数据集的目的。Drill的目的在于支持更广泛的数据源、数据格式及查询语言,可以通过对PB字节数据的快速扫描(大约几秒内)完成相关分析,将是一个专为互动分析大型数据集的分布式系统。Impala:、特点能快速上手低延迟的SQL查询灵活的数据模型没有集中的元数据自描述文件数据的动态查询(如JSON,Parquet,text),MAPR-DB/HBase表,不需要元数据定义的Hive元数据。ANSISQL嵌套的数据支持与ApacheHive一体化(Hive表和视图的查询,支持所有Hive文件格式和HiveUDFs)BI/SQL工具集成使用标准的JDBC驱动程序3、原理当提交一个Drill查询时,客户端或应用程序以SQL语句的方式发送查询给Drill集群中的DrillBit。DrillBit是处理运行在每个活动节点上的坐标、查询计划和执行查询,以及跨集群分发查询任务以实现数据本地性的最大化。下图表示客户端、应用程序和DrillBit之间的通信:DrillBit接收来自客户端和应用程序的查询的Drill变成查询和驱动整个查询的Foreman。Foreman解析器解析SQL,将自定义规则应用到特定的SQL操作符转换成特定的Drill理解的逻辑操作语法。集合的逻辑运算符形成逻辑的计划。逻辑计划描述了作业所需要生成的查询结果和定义了数据源和应用操作。Foreman发送逻辑计划到一个基于优化在一个语句和逻辑读计划的SQL操作的顺序的优化器。优化器使用与各种类型规则的重新整理以及函数的最优化方案。优化器将逻辑计划转换成一个描述如何执行查询的物理计划。Foreman的并行化转换为物理计划分为多个阶段,包括主要和次要的Fragment。这些Fragment创建并且执行多层次执行重写查询树根据配置的数据源,将结果返回给客户端和应用程序。MinorFragments:每个MajorFragment是由每个minorFragment并行构成的。一个MinorFragment是运行内部线程的逻辑作业单元。在Drill中,一个逻辑作业单元也被称为碎片(slice)。Drill产生的执行计划由MinorFragment组成。Drill为每个MinorFragment分配一个MinorFragmentID.Foreman的并行器在执行期间从MajorFragment创建一个或多个MinorFragment,打破的MajorFragment与多个MinorFragment一样能同时运行在集群上。Drill尽快的根据上游的数据需求来执行每个MinorFragment。Drill使用节点的本地化调度MinorFragment,然后Drill采用轮训的方式调度存在的,可用的DrillBit。MinorFragment包含一个或多个关系运算符,一种运算符执行一个关系运算,例如,scan、filter、join、group等。每种运算符都有特定的运算符类型和一个运算符ID。每个运算符ID定义了它所在的MinorFragment的关系。例如,当执行两个文件的散列聚集时,Drill拆分第一阶段致力于扫描进两个MinorFragment。每个MinorFragment包含扫描文件的扫描操作符。Drill拆分第二阶段为了聚集进四个MinorFragment。四个MinorFragment都包括散列聚集操作符。ExecutionofMinorFragments:MinorFragment可以作为root、intermediate、leafFragment运行。一个执行树只包括一个rootFragment。执行树的坐标编号是从root开始的,root是0。数据流是从下游的leafFragment到rootFragment。运行在Foreman的rootFragment接收传入的查询、从表读元数据,重新查询并且路由到下一层级服务树。其他的Fragment包括Intermediate和leafFragment.当数据可用或者从其他的Fragment提供时,IntermediateFragment启动作业。他们执行执行数据操作并且发送数据到下游处理。通过聚合结果数据给RootFragment,进一步聚合并提供查询结果给客户端或应用程序。LeafFragment并行扫描表并且与存储层数据通信或者访问本地磁盘数据。LeafFragment的部分结果传递给IntermediateFragment,然后对Intermediate结果执行合并操作。CoreModule:ThefollowingimagerepresentscomponentswithineachDrillbit:下面的列表描述了DrillBit的关键部件:RPCendpoint:Drill是一个低开销的基于protobuf的RPC通信协议。此外,C++和JavaAPI层也用于客户端应用程序与Drill进行交互。在提交查询之前,客户端可以直接和特定的DrillBit通信或者通过Zookeeper来发现可用的DrillBit。推荐做法是客户端通过Zookeeper来维护客户端从集群管理的复杂性,如添加和删除节点。SQLparser:Drill使用Optiq开源框架来解析传入的查询。该解析器的组件是语言无关的。Storageplugininterfaces:Drill服务作为多个数据源之上的查询层,Drill的存储插件表示的是与数据源交互的抽象。存储插件为Drill提供了下面信息:元数据来源的可用Drill读取接口和写入数据源数据的位置和一组优化规则有助于Drill查询效率和更快的执行在一个特定的数据源。4、架构ApacheDrill的核心是DrillBit服务,主要负责接收客户端请求,处理查询,并将结构返回给客户端。DrillBit能够被安装和运行在hadoop集群中所需要的节点上。当DrillBit安装在集群的每个节点上时,能够最大限度的实现数据的本地化执行。Drill那个Zookeeper来维护和管理集群节点和节点的健康状况。尽管Drill运行在hadoop集群中,但是它不依赖hadoop集群,可以运行在任何的分布式集群中。DrillClient:DrillshellDrillWebUIODBC/JDBCC++APIDynamicschemadiscovery:动态模式探索Drill在数据启动查询处理过程中不需模式和类型说明,Drill在执行批处理数据的过程中动态探索模式。在Drill利用动态查询时,自描述数据格式如Parquet,JSON,avro,nosql数据库为他们部分数据指定了模式说明。因为在Drill的查询过程中模式是可以改变的,当模式改变的时候,Drill的所有操作被从新配置他们的模式。Flexibledatamodel:灵活的数据模型Drill允许访问嵌套数据属性,就像SQL列,并提供直观的容易扩展的操作。从架构的角度来看,Drill提供了一个灵活的分层柱状数据模型,可以表示复杂,高度动态和发展的数据模型。在设计和执行阶段,Drill允许高效的处理这些模型而不需要flatten或materialize他们。Drill的关系数据是当被作一个特殊的或简化复杂/多结构数据。De-centralizedmetadata:分散型元数据Drill没有集中的元数据的需求。我们不需要在一个元数据库中创建和管理表和视图,或依赖于一个数据库管理员group这样的一个函数。Drill数据来源于存储插件对应的数据源。存储插件提供的元数据从完整的元数据(Hive),部分元数据(HBase),或没有集中的元数据(文件)。分散型元数据意味着Drill不是绑定到一个单一的Hive库中。我们能够一次查询多个Hive库,然后从HBase表或一个分布式系统中的文件合并数据。还可以使用SQLDDL的D
本文标题:apachedrill
链接地址:https://www.777doc.com/doc-2897880 .html