Hive 1.2.1源码编译依赖的Hadoop版本必须最少是2.6.0,因为里面用到了Hadoop的org.apache.hadoop.crypto.key.KeyProvider
和org.apache.hadoop.crypto.key.KeyProviderFactory
两个类,而这两个类在Hadoop 2.6.0才出现,否者会出现以下编译错误:
[ERROR] /home/q/spark/apache-hive-1.2.1-src/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java:[43,36] package org.apache.hadoop.crypto.key does not exis [ERROR] /home/q/spark/apache-hive-1.2.1-src/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java:[41,36] package org.apache.hadoop.crypto.key does not exist [ERROR] /home/q/spark/apache-hive-1.2.1-src/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java:[42,48] package org.apache.hadoop.crypto.key.KeyProvider does not exist
Hive 1.2.1默认的Hadoop版本是2.6.0(
),不修改就行。
Hive 1.2.1依赖的Spark版本最高只能是Spark 1.4.1,如果你修改到Spark 1.5.x版本编译的时候会出现以下错误:
[ERROR] /home/q/spark/apache-hive-1.2.1-src/spark-client/src/main/java/org/apache/hive/spark/client/RemoteDriver.java:[441,11] org.apache.hive.spark.client.RemoteDriver.ClientListener is not abstract and does not override abstract method onBlockUpdated(org.apache.spark.scheduler.SparkListenerBlockUpdated) in org.apache.spark.scheduler.SparkListener
spark 1.2.1默认的Spark版本是1.3.1,
。如果没有特殊情况,不修改pom.xml文件即可一次性编译成功。
编译的时候需要按照配置好Maven,如果在编译时出现类似的内存不够问题,请设置如下配置
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
上面弄完之后,我们可以用下面命令编译:
mvn clean package -Phadoop-2 -DskipTests
如果一切顺利的话,可以得到以下的编译结果:
[INFO] Reactor Summary: [INFO] [INFO] Hive ............................................... SUCCESS [ 3.227 s] [INFO] Hive Shims Common .................................. SUCCESS [ 1.923 s] [INFO] Hive Shims 0.20S ................................... SUCCESS [ 0.797 s] [INFO] Hive Shims 0.23 .................................... SUCCESS [ 3.250 s] [INFO] Hive Shims Scheduler ............................... SUCCESS [ 0.967 s] [INFO] Hive Shims ......................................... SUCCESS [ 0.916 s] [INFO] Hive Common ........................................ SUCCESS [ 2.660 s] [INFO] Hive Serde ......................................... SUCCESS [ 1.846 s] [INFO] Hive Metastore ..................................... SUCCESS [ 3.906 s] [INFO] Hive Ant Utilities ................................. SUCCESS [ 0.320 s] [INFO] Spark Remote Client ................................ SUCCESS [ 5.191 s] [INFO] Hive Query Language ................................ SUCCESS [ 25.649 s] [INFO] Hive Service ....................................... SUCCESS [ 1.492 s] [INFO] Hive Accumulo Handler .............................. SUCCESS [ 2.095 s] [INFO] Hive JDBC .......................................... SUCCESS [ 6.638 s] [INFO] Hive Beeline ....................................... SUCCESS [ 0.865 s] [INFO] Hive CLI ........................................... SUCCESS [ 0.928 s] [INFO] Hive Contrib ....................................... SUCCESS [ 0.725 s] [INFO] Hive HBase Handler ................................. SUCCESS [ 2.840 s] [INFO] Hive HCatalog ...................................... SUCCESS [ 0.489 s] [INFO] Hive HCatalog Core ................................. SUCCESS [ 1.226 s] [INFO] Hive HCatalog Pig Adapter .......................... SUCCESS [ 1.003 s] [INFO] Hive HCatalog Server Extensions .................... SUCCESS [ 0.847 s] [INFO] Hive HCatalog Webhcat Java Client .................. SUCCESS [ 0.820 s] [INFO] Hive HCatalog Webhcat .............................. SUCCESS [ 3.950 s] [INFO] Hive HCatalog Streaming ............................ SUCCESS [ 0.803 s] [INFO] Hive HWI ........................................... SUCCESS [ 0.709 s] [INFO] Hive ODBC .......................................... SUCCESS [ 0.584 s] [INFO] Hive Shims Aggregator .............................. SUCCESS [ 0.060 s] [INFO] Hive TestUtils ..................................... SUCCESS [ 0.090 s] [INFO] Hive Packaging ..................................... SUCCESS [ 1.220 s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 11:19 min [INFO] Finished at: 2015-11-09T19:33:33+08:00 [INFO] Final Memory: 99M/881M [INFO] ------------------------------------------------------------------------
编译时长根据你网络环境,最好配置成公司的Maven仓库。当然,如果你需要将编译好的文件进行打包,可以运行下面的命令:
mvn clean package -Phadoop-2 -DskipTests -Pdist
上面的命令运行完成之后,会在$HIVE_SRC/packaging/target
目录下产生以下几个文件:
drwxr-xr-x 2 iteblog iteblog 4096 May 9 13:13 antrun drwxr-xr-x 3 iteblog iteblog 4096 May 9 13:14 apache-hive-1.2.1-bin -rw-r--r-- 1 iteblog iteblog 92836488 May 9 13:14 apache-hive-1.2.1-bin.tar.gz -rw-r--r-- 1 iteblog iteblog 17360091 May 9 13:14 apache-hive-1.2.1-jdbc.jar -rw-r--r-- 1 iteblog iteblog 14318686 May 9 13:14 apache-hive-1.2.1-src.tar.gz drwxr-xr-x 4 iteblog iteblog 4096 May 9 13:14 archive-tmp drwxr-xr-x 3 iteblog iteblog 4096 May 9 13:13 maven-shared-archive-resources drwxr-xr-x 3 iteblog iteblog 4096 May 9 13:13 tmp drwxr-xr-x 2 iteblog iteblog 4096 May 9 13:13 warehouse本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Hive 1.2.1源码编译】(https://www.iteblog.com/archives/1527.html)
楼主您好,我这边也是编译hive,但是不知道为什么一直出现:
[WARNING] The requested profile "hadoop-2" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project hive-serde: Compilation failure
[ERROR] An unknown compilation problem occurred
不知道您是否可以给给些建议 多谢您了
你Hive源码是不是从Github里面下载的?
多谢您的回复 github上和apache-hive 提供的源码都试过了 都是报一样的错
不科学啊,你的编译命令是什么?我上面例子就是编译Hive 1.2.1源码的。
命令:mvn clean package -Phadoop-2 -DskipTests
我的maven版本-3.3 和3.6都试过,java为1.7.0.
Hive版本apache-hive-1.2.1-src 和hive_on_spark 都进行过编译都包那个错
pom中制定maven-compiler-plugin的版本也是不行。。。不知道这原因出在哪
补充下楼主,我的maven版本-3.3 和3.6都试过,Hive版本apache-hive-1.2.1-src 和hive_on_spark 都进行过编译都包那个错。。。
你好,我从GITHUB上下载了HIVE ON SPARK分支进行编译,可是编译之后,LIB目录下是空的,没有JAR包。
我直接把HIVE_HOME指向编译的文件夹,配置好之后无法运行。提示缺少”hive-exec-*.jar"。
我查了一下,有这么一个文件”./ql/target/hive-exec-2.0.0-SNAPSHOT.jar“。但是不在LIB目录下。
编译了之后我也没有看到有什么目录存放编译结果的呀。
我是用“mvn clean package -Phadoop-2.6 -Dhadoop.version=2.6.0 -DskipTests"进行编译的。
不知道编译之后应该如何使用?
如果你需要打包,可以运行mvn clean package -Phadoop-2 -DskipTests -Pdist编译的命令,运行完成之后,会在$HIVE_SRC/packaging/target目录下产生apache-hive-1.2.1-bin.tar.gz、apache-hive-1.2.1-bin、apache-hive-1.2.1-jdbc.jar以及apache-hive-1.2.1-src.tar.gz文件,这就是你需要的吧?
你好,我用我的那个命令,编译后/packaging/target目录下只有:antrun、maven-shared-archive-resources、tmp、warehouse这几个文件夹,是因为我编译命令里缺少“-Pdist”吗?
另外,一定要用“-Phadoop-2”么?不能使用“-Phadoop-2.6 -Dhadoop.version=2.6.0”?虽然我的HADOOP的版本是2.7.1.
我先按你的命令试一下吧。编译一次要好几个小时。好像是网络太渣的原因。0.0
谢谢了。
其实我就是想修改HIVE的引擎为SPARK。按http://www.iteblog.com/archives/1493 一文进行设置,也和底下评论一样出现“RPC channel is closed.”的问题。所以我就GITHUB上 https://github.com/apache/hive/tree/spark,下载SPARK分支试试了。
如果你使用的是Hadoop 2.x必须使用-Phadoop-2,-Dhadoop.version=2.6.0这个参数相当于没有设置,因为Hive编译不支持这个参数;而且现在Hive默认依赖的Hadoop版本就是2.6.0了,所以不需要你再设置了,不过如果你需要修改成别的版本,可以到Hive源码的pom.xml文件修改hadoop-23.version参数为你需要的Hadoop版本。
如果你需要使用Hive on Spark,Spark和Hive的版本一定要对上。建议你使用Hive 1.2.1+Spark 1.4.1,详细的配置步骤可以参见本博客的《Hive on Spark编程入门指南》文章,Github master分支上面的不一定稳定,祝你成功。
编译完成了(这次居然这么快)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 19:20 min
[INFO] Finished at: 2016-05-09T13:45:52+08:00
[INFO] Final Memory: 300M/1092M
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "hadoop-2" could not be activated because it does not exist.
出现如上警告,不知道有没有关系。 /packaging/target目录下也有相应的gz文件了。一会配置一下试试。
另,
我现在是用HIVE1.2.1+SPARK1.6.1。现在编译的HIVE是github上的spark分支,不是MASTER分支。
我之前也按博客的内容进行编译。运行HIVE后,执行SQL也出现了“RPC channel is closed.”的问题。我看评论中有人在讨论,也没出个结果。不过我是用SPARK1.6.1,不知道是否有关系。
我一会再试试用SPARK1.4.1。感觉版本的因素好大,关于编译我其实不太懂这些参数什么的,谢谢指点。