使用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
sh ./bootstrap.sh
#注意要加上 cxxflags=-fPIC 参数,否则后面编译失败
./bjam --libdir=/usr/lib64 threading=multi --layout=tagged install cxxflags=-fPIC
#编译静态库,不知道有没有用...
./bjam --layout=tagged --libdir=/usr/lib64 cxxflags=-fPIC \
link=static threading=multi runtime-link=static install

编译impala

把代码下载下来,由于不是直接从git下载来的,所以用git init初始化一次。另外注意里面有clean的选项,使用git来clean会导致一些代码被删掉。

sh ./buildall.sh -noclean -skiptests

bulitall.sh实际会用到bin下面的脚本,可以都看一下

报错处理

Linking CXX executable ../../build/debug/common/atomic-test
/usr/bin/ld: cannot find -lboost_date_time
collect2: ld returned 1 exit status
make[2]: *** [be/build/debug/common/atomic-test] Error 1
make[1]: *** [be/src/common/CMakeFiles/atomic-test.dir/all] Error 2

我们用的是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)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME ON)
set(Boost_USE_MULTITHREADED ON)
add_definitions(-DBOOST_ALL_NO_LIB)

编译后的文件在 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位置相关)
/usr/java/jdk1.7.0_67-cloudera/jre/lib/amd64/
找到JAVA_AWT_INCLUDE_DIRECTORIES,增加路径
/usr/java/jdk1.7.0_67-cloudera/include
其他路径注释掉
另外我还设定了几个路径
set(JAVA_INCLUDE_PATH
/usr/java/jdk1.7.0_67-cloudera/include
)
set(JAVA_INCLUDE_PATH2
/usr/java/jdk1.7.0_67-cloudera/include/linux/
)
set(JAVA_AWT_INCLUDE_PATH
/usr/java/jdk1.7.0_67-cloudera/include
)

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

编译impala2.0.0的更多相关文章

  1. linux下编译gcc6.2.0

    linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...

  2. vs2016x64&&qt5.7.1编译osg3.4.0&&osgEarth2.7

    此文仅备忘: 1.安装VS2013_Cn_Ult 2.安装qt-opensource-windows-x86-msvc2013_64-5.7.1 设置环境变量QTDIR,并将其bin加入到path中. ...

  3. VS2015编译Qt5.7.0生成支持XP的静态库(很不错)

    一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...

  4. vs2013编译boost1.55.0 32/64位

    在使用vs2013编译boost-1.55.0之前,先要给boost做下修改: boost_1_55_0\boost\intrusive\detail\has_member_function_call ...

  5. 编译hadoop2.6.0

    具体情况比较曲折:hadoop2.6.0编译不过 错误如下: 这个kms模块始终编译不过,最后得出结论国内的aliyun maven仓库有问题, 在编译hadoop2.2.0 可以通过,因为这个版本的 ...

  6. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  7. vs2010下编译osip2和eXosip2的4.0.0版的静态库及搭建开发环境

    转载于:http://blog.csdn.net/lbc2100/article/details/48293911 本文为参考网上的动态库的方式,进行静态库的实现,在此对动态库的作者表示感谢. 第一步 ...

  8. Ubuntu12.04-x64编译Hadoop2.2.0和安装Hadoop2.2.0集群

      本文Blog地址:http://www.cnblogs.com/fesh/p/3766656.html   本文对Hadoop-2.2.0源码进行重新编译(64位操作系统下不重新编译会有版本问题) ...

  9. Win10 + VS2015 下编译 Qt5.6.0

    近期由于另外一个项目需要用 vs2015 ,于是把 Qt 也升级到了 5.6.0 .由于项目需要兼容 Windows xp ,所以需要自己编译 Qt .这里大致整理一下编译的过程. 安装 Active ...

随机推荐

  1. 7z文件格式及其源码的分析(三)

    上一篇在这里.  这是7z文件格式分析的第三篇, 相信有了前两篇的准备,你已经了解了7z源码的大致结构, 以及如何简单调试7z的源码了. 很多同学是不是迫不及待想要拔去7z的神秘外衣,看看究竟了. 好 ...

  2. Intel Galileo Debian Image Prequits

    Intel Galileo开发板 Debian镜像 在原发布者的基础上进行了更新,附带开发入门套件,打包内容: -intel_galileo_debian_xfce4镜像 -约3GB -putty - ...

  3. Windows store app[Part 2]:全新的File System与Uri不匹配的问题

    在Win 8 App的安全沙箱内,除了使用文件选取器FileOpenPicker外,没有其他办法调用某个盘符的数据. 全新的Storage命名空间,借鉴了IOS与Android的设计. 下面引用一个图 ...

  4. NLP常用开源/免费工具

    一些常见的NLP任务的开源/免费工具, *Computational Linguistics ToolboxCLT http://complingone.georgetown.edu/~linguis ...

  5. mongodb driver2.5环境注意事项

    mongodb driver2.5环境注意事项 一.问题: 如果使用vs2012开发就会报这个错误: 未能加载文件或程序集“System.Runtime.InteropServices.Runtime ...

  6. 「HNOI 2013」数列

    题目链接 戳我 \(Solution\) 这道题貌似并不难的样子\(QAQ\) 我们发现这个因为有首项的关系所以有点不太好弄.所以我们要将这个首项对答案的影响给去掉. 我们可以构建一个差分数组,我们令 ...

  7. 南昌网络赛 I. Max answer 单调栈

    Max answer 题目链接 https://nanti.jisuanke.com/t/38228 Describe Alice has a magic array. She suggests th ...

  8. OCP最新题库052考题解析及答案-第37题

    37.USER1 grants SELECT, INSERT, and UPDATE privileges on USER1. EMP to USER2. SYS executes this comm ...

  9. LINUX主机通过域名访问网络失败

    故障现象: 用telnet IP+端口的方式测试正常,能够访问: 通过telnet域名+端口方式,提示:未知的名称或服务(Name or service not known). 测试百度的网络地址,p ...

  10. 快速启动工具Rulers 4.1

    Rulers 4.1 Release 360云盘 https://yunpan.cn/cSbq5nx9GVwrJ 访问密码 0532 百度云 http://pan.baidu.com/s/1czCNR ...