编译impala2.0.0
使用redhat5.8没编译成功,改用redhat6.4最终编译成功。
参考官方的文档https://github.com/cloudera/Impala/tree/v1.2.2
不知道官方的readme.md在新的版本为什么删掉了。。。囧
准备条件
安装必须要的包,jdk,llvm,maven
注意它要求用oracle的jdk,redhat默认是openjdk,可以参考这里安装 http://unix.stackexchange.com/questions/63587/how-to-install-g-4-7-2-c11-on-centos-5-x
安装boost
CentOS 6.4上预装的是boost 1.41,但是impala需要更高版本的boost库(Note: Impala requires Boost 1.4.2 or later),所以先卸载掉boost 1.41
rpm -e `rpm -qa|grep boost` |
cd boost_1_46_1 |
编译impala
把代码下载下来,由于不是直接从git下载来的,所以用git init初始化一次。另外注意里面有clean的选项,使用git来clean会导致一些代码被删掉。
sh ./buildall.sh -noclean -skiptests |
bulitall.sh实际会用到bin下面的脚本,可以都看一下
报错处理
Linking CXX executable ../../build/debug/common/atomic-test |
我们用的是mt(多线程)的库,所以要改一下
修改了be/CMakeLists.txt的216行,将原有的:
-lrt -lboost_date_time
改为
-lrt -lboost_date_time-mt
如果要静态编译,要把-lboost_date_time去掉(这里我需要静态编译,所以把它去掉了)
修改./CMakeLists.txt,加入date_time-mt
find_package(Boost REQUIRED COMPONENTS thread regex-mt system-mt filesystem-mt date_time-mt) |
修改./CMakeLists.txt找到 Boost_DEBUG 这一行,加上着一些
set(Boost_DEBUG FALSE) |
编译后的文件在 be/bulid里面,编译出来的东西有200MB+,和官方的比20MB吓尿了好吧。
执行strip –strip-debug impalad 会变成30MB+
报错Could NOT find JNI (missing: JNI_INCLUDE_DIRS)
修改cmake_modules/FindJNI.cmake文件
找到JAVA_AWT_LIBRARY_DIRECTORIES,增加路径(和你jdk位置相关) |
cdh4.5 hive的bug
impala2.0.0通过yum方法安装中,会使用cdh4.5的lib
cdh4.5中,org.apache.hadoop.hive.metastore.HiveMetaStoreClient有个bug,在每次连接metastore的时候都会等3秒钟,可以从catalog的日志看到,如果用background-load的方法会很慢。
照着 cdh4.6的代码改就可以了。一个低级的错误http://www.grepcode.com/file/repository.cloudera.com/content/repositories/releases/org.apache.hive/hive-metastore/0.10.0-cdh4.6.0/org/apache/hadoop/hive/metastore/HiveMetaStoreClient.java#314
把编译好的包替换掉,目录在/usr/lib/impala里
参考
https://github.com/cloudera/Impala/tree/v1.2.2
http://blog.csdn.net/vah101/article/details/32343471
http://blog.chinaunix.net/uid-21519621-id-3952587.html
编译release版本 http://johnjianfang.blogspot.com/2013/06/build-impala-release.html
最新文章
- 了解java注解
- Git分布式版本控制系统学习笔记
- 在 Azure HDInsight 中安装和使用 Spark
- border
- 第一节 HTML网页和CSS样式
- PartialViewResult不鸟_ViewStart.cshtml
- Yii 验证输入框是否输入的是数字
- 用VMware9 安装 mac 10.8和10.9搜集的资料
- 基础!winForm客户端最常用的几个基本属性
- Kinetic使用注意点--blob
- [转]Delphi导出Excel的设置操作
- mysql INNODB_TRX 事务表
- HDU 5139数据离线处理
- xcode忽略警告
- Java 封装 HDFS API 操作
- 什么是PostBack(译)
- Google css &; Google fonts
- XSS编码与绕过
- laravel5.4 表单提交
- OpenStack 存储服务 Cinder存储节点部署NFS(十七)