使用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. Android 画闹钟

    1.今天就来模仿一下这个小闹钟的 2.思路: 先画闹钟的圆盘 ,在通过Path来画指针 两个耳朵其实就是用两个圆被一个大圆截取后留下的,并旋转一定度数后生成 3.直接上代码: public class ...

  2. C# 获取唯一数字

    /// <summary> /// 如果你想生成一个数字序列而不是字符串,你将会获得一个19位长的序列.下面的方法会把GUID转换为Int64的数字序列. /// </summary ...

  3. 内置函数和numpy中的min(),max()函数

    内置min()函数 numpy中的min()函数:

  4. 吴裕雄 python 机器学习——高斯贝叶斯分类器GaussianNB

    import matplotlib.pyplot as plt from sklearn import datasets,naive_bayes from sklearn.model_selectio ...

  5. acedSSGet使用自定义提示字符:$模式

          ads_name ss; struct resbuf *pRbList=NULL; pRbList=acutBuildList(RTDXF0,_T("lwpolyline,ins ...

  6. 恢复 MSSQL bak 文件扩展名数据(下)

    恢复 MSSQL bak 文件扩展名数据 一.概念: RESTORE Statements (Transact-SQL) Restores backups taken using the BACKUP ...

  7. spring框架里面的注入?

    在Spring框架里面注入可以通过1.setter方法注入:2.构造器注入:3.注入对象 在配置文件中配置如下: 前面两者不能同时注入: 入 如果前两者同时注入将会报错 将注入修改以后,如下图: 修改 ...

  8. Angularjs和Ionic框架搭建webApp

    本文原创版权归 简书作者 噜啦啦噜啦啦噜啦噜啦噜 所有,转载请联系作者获得授权,并于文章开头标注原创作者及出处,以示尊重! 文/噜啦啦噜啦啦噜啦噜啦噜(简书作者)原文链接:http://www.jia ...

  9. 对路径访问拒绝,要加上具体filename/c.png

    string strPath = Path.Combine(FilePath, DateTime.Now.ToString("yyyy-MM-dd")); if (!Directo ...

  10. Windows环境安装Elasticsearch

    安装前提: 确保电脑已经安装了JDK,要求在1.8以上,并且安装目录不能包括空格 下载 下载地址:https://www.elastic.co/cn/downloads/elasticsearch 选 ...