Apache Drill源码分析和编译

Flink:start-cluster.sh启动单节点的时候taskmanager未启动 flink单节点配置的时候,通过start-cluster.sh启动集群,需要在conf文件夹下的slaves中添加localhost,默认是有这个配置的。有一次配置standalong 多节点集群后,重新清除配置,忘记添加了,导致单节点启动一直启动不起来tashmanager,这个问题还排查了好久。。。。。 记录下。。。。 ... 阅读详情

此前了解过Apache Drill的设计原理,借鉴与Google的Dremel的一个开源实现;而cloudera貌似在此基础上构造了impala.

最近从apache官网上看到Drill源码可以下载了,分析一下。

http://www.apache.org/dyn/closer.cgi/incubator/drill/drill-1.0.0-m1-incubating/

代码结构:

包括:src,sqlparser,exec,distribution,contrib,common,sample-data.

查看INSTALL.cd要求如下:

Java 7+

protoc 2.5.x compiler 【google的Protobuffer compiler 2.5.x】

Maven 3.0+

源码可以直接下载;然后通过mvn clean install来进行安装。


将drill-1.0.0xxx.tar.gz解压缩到/drill/目录下

直接运行./sqlline,开始下载所需的包

最后开始报错

[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
cat: .classpath: 没有那个文件或目录
Exception in thread "main" java.lang.NoClassDefFoundError: sqlline/SqlLine
Caused by: java.lang.ClassNotFoundException: sqlline.SqlLine

 看来还算需要根据规定一步步来处理。

运行命令

mvn install [开始下载依赖的版本]

检测Java版本不行,升级或者安装Java 7

[root@pg2 jdk1.7]# pwd
/drill/jdk1.7
修改/etc/profile

[root@pg2 jdk1.7]# vi /etc/profile
[root@pg2 jdk1.7]# source /etc/profile
[root@pg2 jdk1.7]# 

然后运行mvn install

发现错误缺少profobuf的complier

根据Drill的Install.md中依赖内容为protoc 2.5.x complier


接下来准备:

安装protobuf,下载http://code.google.com/p/protobuf/

http://code.google.com/p/protobuf/downloads/detail?name=protobuf-2.5.0.tar.gz

对应的protobuf-2.5.0.tar.gz

tar zxvf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure
make
make check
make install
安装结束。
验证:
查看是否安装成功:protoc --version

[root@pg2 protobuf-2.5.0]# protoc --version
libprotoc 2.5.0
[root@pg2 protobuf-2.5.0]# 

接下来继续:

mvn install

最后存在错误如下:


[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project common: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command was/bin/sh -c cd /drill/drill/common && /drill/jdk1.7/jre/bin/java -XX:MaxDirectMemorySize=4096M org.apache.maven.surefire.booter.ForkedBooter /drill/drill/common/target/surefire/surefire5854881226327277986tmp /drill/drill/common/target/surefire/surefire_02131510559628541214tmp
[ERROR] -> [Help 1]

测试通过

 git clone https://github.com/apache/incubator-drill.git
下载源码

[root@pg2 incubator-drill]# pwd
/drill/incubator-drill
[root@pg2 incubator-drill]# ls
common   distribution  header      KEYS     NOTICE   protocol   sample-data  sqlline    src     tools
contrib  exec          INSTALL.md  LICENSE  pom.xml  README.md  sandbox      sqlparser  target
[root@pg2 incubator-drill]# 
运行测试:

    cd incubator-drill
    mvn clean install

编译失败存在错误:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Invalid maximum direct memory size: -XX:MaxDirectMemorySize=4096M
The specified size exceeds the maximum representable size.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

分析pom.xml文件中

<plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.15</version>
          <configuration>
            <argLine>-XX:MaxDirectMemorySize=4096M </argLine>
          </configuration>
        </plugin>

分配给CentOS6.3的内存只有1128M

尝试修改-XX:MaxDirectMemorySize=896M

重新进行mvn install,原来的错误已经不存从

执行到后面错误包括:

[INFO] exec/Java Execution Engine ........................ FAILURE [10:23.114s]
[INFO] SQL Parser ........................................ SKIPPED
[INFO] contrib/sqlline ................................... SKIPPED
[INFO] Packaging and Distribution Assembly ............... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13:31.608s
[INFO] Finished at: Sat Nov 30 23:58:45 CST 2013
[INFO] Final Memory: 41M/146M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.15:test (default-test) on project java-exec: There are test failures.
[ERROR] 
[ERROR] Please refer to /drill/drill/exec/java-exec/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :java-exec
[root@pg2 drill]# 

存在test failures

Tests in error: 
  TestSimpleFunctions.testSubstring:122 » OutOfMemory Direct buffer memory
  TestSimpleFunctions.testIsNull:68 » OutOfMemory Direct buffer memory
  TestComparisonFunctions.testIntNullable:126->runTest:66 » OutOfMemory Direct b...
  TestComparisonFunctions.testInt:82->runTest:66 » OutOfMemory Direct buffer mem...
  TestComparisonFunctions.testBigIntNullable:136->runTest:66 » OutOfMemory Direc...
  TestComparisonFunctions.testBigInt:93->runTest:66 » OutOfMemory Direct buffer ...
  TestComparisonFunctions.testFloat4:104->runTest:66 » OutOfMemory Direct buffer...
  TestComparisonFunctions.testFloat8:115->runTest:66 » OutOfMemory Direct buffer...
  TestAgg.twoKeyAgg:92->doTest:63 » OutOfMemory Direct buffer memory
  TestAgg.oneKeyAgg:69->doTest:63 » OutOfMemory Direct buffer memory
  TestDistributedFragmentRun.oneBitOneExchangeOneEntryRun:50 »  test timed out a...
  TestDistributedFragmentRun.twoBitOneExchangeTwoEntryRun:106 »  test timed out ...
  TestDistributedFragmentRun.oneBitOneExchangeTwoEntryRun:69 »  test timed out a...
  TestDistributedFragmentRun.oneBitOneExchangeTwoEntryRunLogical:87 »  test time...
  TestMergeJoin.orderedEqualityLeftJoin:124 » NullPointer
  TestMergeJoin.orderedEqualityInnerJoin:180 » OutOfMemory Direct buffer memory
  TestMergeJoin.orderedEqualityMultiBatchJoin:232 » OutOfMemory Direct buffer me...
  TestMergeJoin.simpleEqualityJoin:72 » OutOfMemory Direct buffer memory
  TestEndianess.testLittleEndian:33 » OutOfMemory Direct buffer memory

相关实例:

testLittleEndian(org.apache.drill.exec.memory.TestEndianess)  Time elapsed: 0.735 sec  <<< ERROR!
java.lang.OutOfMemoryError: Direct buffer memory
    at java.nio.Bits.reserveMemory(Bits.java:658)
    at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
    at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
    at io.netty.buffer.PoolArenaL$DirectArena.newChunk(PoolArenaL.java:381)
    at io.netty.buffer.PoolArenaL.allocateNormal(PoolArenaL.java:144)
    at io.netty.buffer.PoolArenaL.allocate(PoolArenaL.java:133)
    at io.netty.buffer.PoolArenaL.allocate(PoolArenaL.java:95)
    at io.netty.buffer.PooledByteBufAllocatorL.newDirectBuffer(PooledByteBufAllocatorL.java:236)
    at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:132)
    at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:123)
    at org.apache.drill.exec.memory.DirectBufferAllocator.buffer(DirectBufferAllocator.java:35)
    at org.apache.drill.exec.memory.TestEndianess.testLittleEndian(TestEndianess.java:33)

-------------------

在Cloudera的CDH4.3的虚拟机下,安装jdk1.7.0_45和protoc-2.5.0

然后尝试多次

mvn e install最终完成安装编译

测试运行;

./sqlline -u jdbc:drill:schema=parquet-local -n admin -p admin

首先扫描是否有更新,如果没有更新,启动命令行

测试命令

SELECT 
      _MAP['R_REGIONKEY'] AS region_key, 
      _MAP['R_NAME'] AS name, _MAP['R_COMMENT'] AS comment
    FROM "sample-data/region.parquet";


Druid源码(apache-druid-0.21.1-src.tar.gz) 立即下载

相关推荐

2.实体机安装TrueNAS 方法

访问不了可以使用以下连接:提取码:0927。

Unofficial_user的博客 7436

RocketMQ 高性能存储

转载:http://blog.youkuaiyun.com/fcbayernmunchen/article/details/8635427Java类库中的NIO包相对于IO 包来说有一个新功能是内存映射文件,日常编程中并不是经常用到,但是在处理大文件时是比较理想的提高效率的手段。本文我主要想结合操作系统中(OS)相关方面的知识介绍一下原理。在传统的文件IO操作中,我们都是调用操作系统提供的底层标准IO系统调用函

煎蛋的梦 2092

嵌入式开发中SAR与ΔΣ ADC选型指南:从原理到实战应用

模数转换器是嵌入式系统连接模拟世界与数字世界的核心接口,其选型直接决定了数据采集的精度与可靠性。SAR ADC采用逐次逼近原理,如同天平称重,通过二进制搜索快速完成转换,具备高速、多通道轮询的优势,适合电机控制、通信等动态场景。ΔΣ ADC则基于过采样与噪声整形技术,以速度换取精度,通过数字滤波输出高分辨率结果,在传感器测量、音频采集等静态高精度领域表现卓越。理解这两种架构的工作原理差异,是进行嵌入式ADC选型的基础。在实际工程中,需结合信号带宽、多通道切换需求、功耗约束及PCB布局能力进行综合权衡。例如,

weixin_30140399的博客 245

Druid源码分析_09_PoolPreparedStatements

池化PreparedStatements对象就是我好想说了句废话~但事实就是这样.只对oracle有效。

皮球 2488

jetson orin nano 使用cuPCL

jetson开发板上使用pcl时,正常使用的是cpu,拖慢了整体的效率。cuPCL有一些库用于使用CUDA处理点云。

weixin_42256401的博客 1020

VCS和UVM常用编译选项

VCS编译选项 -full64 在64bit模式下编译、仿真,用于64位操作系统 -j8 指定编译器可以并行编译的进程数为8 -timescale=1ns/1ps 指定仿真时间和精度 +libext+.v+.V+.sv+.svh 识别.v、.sv、.svh等多种格式文件 -sverilog 支持system verilog 编译 -f xxx.lisf 指定包含所有设计文件列表的文件名 -top test 设置顶层模块为test。(指包含.

qq_40571921的博客 9934

linux启动mycat遇到各种报错,踩坑艰难爬出

1、linux到mycat下的bin文件,执行客户端启动命令:./mycat console,却发现没有权限,于是chmod 777 具体文件,给各个文件都加上操作权限。 2、继续执行./mycat console,报错: wrapper | Launching a JVM... wrapper | JVM exited while loading the application. jvm 5 | Java HotSpot(TM) Server VM warning: ignoring optio

take it easy 4818

别再为Power BI瀑布图发愁了!用这个DAX公式+堆积柱状图,5分钟搞定现金流量表可视化

本文介绍了一种使用DAX公式和堆积柱状图快速实现Power BI现金流量表可视化的高效方法。通过详细的步骤和代码示例,帮助财务分析人员5分钟内完成专业级报表制作,解决传统瀑布图配置复杂、灵活性差的问题,显著提升工作效率。

weixin_28677005的博客 247

Apache Drill源码分析(5)--Debug LogicalPlan

layout: post Drill源码阅读(5) : 逻辑计划是如何产生的 在前面说过, Calcite的SQL节点转换为Drill的DrillRel节点,在DefaultSqlHandler.convertToDrel会包装上一个Screen: DrillScreenRel protected DrillRel conve...

weixin_33796177的博客 347

基于matlab的心电信号预处理

这是前段时间做的一个课程设计,做的比较简单,没有考虑到太细,只是初步地达到了想要的效果。这次设计主要是对心电信号进行预处理,将其信号中包含的一些干扰滤除或者抑制掉。 一、心电信号 (1)心电信号的特性   人体心电信号是非常微弱的生理低频电信号,通常最大的幅值不超过5mV,信号频率在0.05~100Hz之间。心电信号是通过安装在人体皮肤表面的电极来拾取的。由于电极和皮肤组织之间会发生极化现象

i_weimoli的博客 6万+

数据分享|2000-2021年全国各城市风速数据(逐日、逐月、逐年)

而后,将每日的csv文件进行展点,再投影,采用反距离权重法对每日的数据进行插值。:美国国家海洋和大气管理局(NOAA)下设的国家环境信息中心(NCEI),网址为:https://www.ncei.noaa.gov/data/global-summary-of-the-day/archive/该数据是通过风速平均值插值得来,由于插值的方式与各种处理参数的不同,会导致该数据与其它风速数据不同,数据仅供个人学习使用哦。如果在论文中使用该数据,数据来源请写上面的原始数据来源,处理方法请写上面的处理方式!

J_Giser的博客 1781

深入理解java虚拟机笔记第一、二章

第一章、第二章1.java技术体系优点(1)摆脱了硬件平台束缚,“一次编译,到处运行”;(2)提供了相对安全的内存管理和访问机制;避免了绝大部分的内存泄漏和指针越界问题(3)实现了热点代码检测和运行时编译及优化,是java应用能随着运行时间的增加而获得更高的性能(4)第三方类库的支持2.java技术体系内容(1)java程序设计语言(2)各种平台的java虚拟机(3)class文件格式(4)jav...

谢谢谢谢呵的博客 313

<IBM DB2>《DB2 官方监控脚本 2022版本》

DB2 监控脚本

Else 的博客 674

二:关于直接内存的溢出问题

DirectMemory容量可通过-XX:MaxDirectMemorySize指定,如果不指定,则默认与Java 堆最大值(-Xmx指定)一样 由DirectMemory导致的内存溢出,一个明显的特征是在Heap Dump文件中不会看见明显的异常,如果读者发现OOM之后Dump文件很小,而程序中又直接或间接使用了NIO,那就可以考虑检查一下是不是这方面的原因。 ...

向代码提问 331

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Win10安装配置RocketMQ

#安装前的准备 RocketMQ需要64位的JDK,请确保是64位系统并安装的是的64位JDK。本地配置好了Maven环境(非必需)。 下载文件: 下载地址:http://rocketmq.apache.org/dowloading/releases/,选择Binary文件下载: 选择推荐的镜像地址下载: 等下载完成,解压到自己想安装的目录 #安装过程 ##设置环境变量 变量名:ROCKETM...

凉茶微凉 9120

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

基于Calcite自定义SQL解析器

最近项目组要求写个SQL脚本相关的解析工具能自定义校验规则,开始一直研究基于C#的Irony框架学习;由于本人基础薄弱,网上这个框架的资源不是很多。最终放弃改使用Apache Calcite框架。借用了网上的一些资源和博客,终于把自定义规则的demo弄好了。现把学习过程和其中出现的问题整理如下,希望能帮到也想学习Calcite新伙伴。 1>下载IDE并配置maven环境 我的demo基于eclipse开发的,其它IDE环境可自行钻研学习 1.1、maven下载 http://maven.apach

weixin_38381496的博客 1970

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

top---报错terminal is not big enough

解决方法: 按下Alt +Enter最大化终端窗口就可以看到了。 还可以 mpstat -P ALL 本文转自aaa超超aaa 51CTO博客,原文链接:http://blog.51cto.com/10983441/1789944 ...

weixin_34007291的博客 331

JVM -XX:MaxDirectMemorySize

-XX:MaxDirectMemorySize

Tom的专栏 1万+

Invalid maximum direct memory size: -XX:MaxDirectMemorySize=8388607T

环境:java version "1.8.0_181"Scala 2.11.12flink-1.3.3-bin-hadoop26-scala_2.11.tgz 折腾了Flink一天了,昨天进行Flink集群搭建时,发现怎么都启动不了子节点中TaskManager,日志中输出的为: 大致的意思就是无效的最大直接内存的大小,大概就是8388607T是无效的。 在GitHub、Flin...

yefeng0810的博客 1700

链接orientdb的图形数据库_OrientDB远程代码执行漏洞利用与分析

OrientDB数据库是一个支持分布式的NoSQL数据库,主要针对文档以及图形等进行检索,通过研究发现其默认配置admin、reader和writer三个角色,在处理where”或“fetchplan”或“order by”函数时,由于在OrientDB中有一个执行groovy函数,groovy包装类没有沙箱,暴露了系统函数,因此我们可以运行我们想要的任何命令。该漏洞在国外被命名为CVE-2017...

weixin_42660494的博客 500

azkaban-2.5.0 启动报错Invalid maximum heap size: -Xmx4G 解决

启动azkaban后报错信息为: Invalid maximum heap size: -Xmx4096m The specified size exceeds the maximum representable size. Could not create the Java virtual machine. 解决方法: 请修改文件azkaban\azkaban-web-2.5.

sinat_35403904的博客 6936

Java Max Direct Memory Size设置

注意Max Direct Memory Szie的默认设置。

cloud的技术积累 1万+

聊聊JVM常用参数设置

整体考虑堆大小-Xms3550m, 初始化堆大小。通常情况和-Xmx大小设置一样,避免虚拟机频繁自动计算后调整堆大小。 -Xmx3550m,最大堆大小。考虑分代设置堆大小首先通过jstat等工具查看应用程序正常情况下需要堆大小,再根据实际情况设置。新生代-xmn2g,新生代大小。Sun官方推荐配置为整个堆的3/8。 -XX:SurvivorRatio=8。Eden和Survivor的比值。老年代

Ydoing的专栏 6870

OpenJDK源码分析之DirectMemory大小(二)

OpenJDK源码包结构介绍 上文我们从JDK里面的java代码实现跟踪到了Runtime.getRuntime().maxMemory();这个Native方法,那么要理解这个方法如何实现,就需要下载OpenJDK的源码进行学习了。下面我们先介绍一下OpenJDK源码包的结构,避免我们在代码追踪时迷路: OpenJDK  —— corba:不流行的多语言、分布式通讯接口  —— hotspo...

不忘初心 785

Java_JVM参数-XX:MaxDirectMemorySize 与 两种 ByteBuffer: heap,direct ByteBuffer

http://blog.youkuaiyun.com/u010003835/article/details/52957904

ArivnXu的博客 760

JVM启动时报错,提示 Invalid maximum heap size

在做项目的时候,把服务器上的项目考到本地后,启服务时一直报如下错误,看提示应该是虚拟机的堆栈设置的无效, 增加或者减少jvm内存后还是报如下错误; 最后从这篇文章中 https://blog.youkuaiyun.com/uu00soldier/article/details/77880625 http://blog.youkuaiyun.com/fuchaosz/article/details/51546...

m0_37488170的博客 1万+
上一篇: Impala1.1.1 安装使用
下一篇: drill安装与部署
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值