Apache Hive-1.2.1 Manual Patch and Compile

说明:

由于之前使用CDH5.4.8,其Hive版本为1.1.0,其业务的脚本和jar也在此版本开发,所以有很多依赖性,兼容性等等。然后当我们计划将CDH5.4.8 Job迁移至AliYun EMR平台上,发现hive-1.1.0-cdh5.4.8与该平台的Apache Hadoop2.7.2 严重不能兼容,于是花了很长时间在做这件事--根据业务脚本和jar包定制我们的hive-1.2.1-emr版本

其中我们尝试了以下 

hive-1.1.0-apache,

hive-2.0.0-apache,

hive-1.1.0-cdh5.8.0,

hive-1.1.0-cdh5.4.8等版本与Apache hadoop2.7.2与脚本内容兼容错误甚多,且尝试无法解决,于是选择hive-1.x.x系列的最新版。

1.Download
hive-1.2.1 source code

[root@sht-sgmhadoopnn-01 hadoop]# wget https://archive.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-src.tar.gz
[root@sht-sgmhadoopnn-01 hadoop]# tar -xzvf apache-hive-1.2.1-src.tar.gz
[root@sht-sgmhadoopnn-01 hadoop]# cd apache-hive-1.2.1-src

2.Download patch

Bug1:ADD
JAR failing with URL schemes other than file/ivy/hdfs

https://issues.apache.org/jira/browse/HIVE-11920

[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# wget https://issues.apache.org/jira/secure/attachment/12761724/HIVE-11920.1.patch
[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# cat HIVE-11920.1.patch
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
index 9f738df..eece93e 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
..................
..................

3.Patch
HIVE-11920.1.patch

Format:
patch
-p0|-p1 < xxxx.patch

如果使用参数-p0,就表示从当前目录,找一个叫作b的目录,在它下面找一个叫ql的目录,再在它下面找一个叫src的目录。

如果使用参数-p1,
就表示忽略第一层,从当前目录找一个叫ql的目录,在它下面找一个叫src的目录。这样会忽略掉补丁头提到的b目录。

[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# patch -p1 < HIVE-11920.1.patch
patching file ql/src/java/org/apache/hadoop/hive/ql/session/SessionState.java
patching file ql/src/test/queries/clientpositive/add_jar_pfile.q
patching file ql/src/test/results/clientpositive/add_jar_pfile.q.out

4.Download
maven tool and configure parameter

[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# export MAVEN_HOME=/hadoop/maven
[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# export PATH=$MAVEN_HOME/bin:$PATH

5.Compile
hive-1.2.1

[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# mvn clean install -Phadoop-2,dist -DskipTests -Dhadoop-23.version=2.7.2 -Dhive.version=1.2.1
[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# ll ./packaging/target/apache-hive-1.2.1-bin.tar.gz
-rw-r--r-- 1 root root 94035955 Oct 4 16:29 ./packaging/target/apache-hive-1.2.1-bin.tar.gz

6.Upload
mysql-connector-java-5.1.36-bin.jar 

[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# cp ./packaging/target/apache-hive-1.2.1-bin.tar.gz ../
[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-src]# cd ../
[root@sht-sgmhadoopnn-01 hadoop]# tar xzvf apache-hive-1.2.1-bin.tar.gz
[root@sht-sgmhadoopnn-01 hadoop]# cd ./apache-hive-1.2.1-bin/lib
[root@sht-sgmhadoopnn-01 lib]# rz
rz waiting to receive.
Starting zmodem transfer. Press Ctrl+C to cancel.
Transferring mysql-connector-java-5.1.36-bin.jar...
100% 949 KB 949 KB/sec 00:00:01 0 Errors

7.Modify hive-site.xml

[root@sht-sgmhadoopnn-01 lib]# cd ../conf
[root@sht-sgmhadoopnn-01 lib]# vi hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
     <property>
	  <name>hive.metastore.warehouse.dir</name>
	  <value>/user/hive/warehouse</value>
      </property>

    <property>
	  <name>hive.metastore.local</name>
	  <value>true</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>EMRroot1234</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>

8.Rerun
tar hive files

[root@sht-sgmhadoopnn-01 conf]# cd ../
[root@sht-sgmhadoopnn-01 apache-hive-1.2.1-bin]# tar -zcvf hive-1.2.1-emr.tar.gz *
时间: 2024-10-28 00:12:40

Apache Hive-1.2.1 Manual Patch and Compile的相关文章

【Hadoop Summit Tokyo 2016】Hivemall: Apache Hive/Spark/Pig 的可扩展机器学习库

本讲义出自 Makoto YUI与NTT Takashi Yamamuro在Hadoop Summit Tokyo 2016上的演讲,主要介绍了Hivemall的相关知识以及Hivemall在Spark上的应用,Hivemall是可以用于Apache Hive/Spark/Pig 的可扩展机器学习库.

在 Apache Hive 中轻松生存的12个技巧

在 Apache Hive 中轻松生存的12个技巧 Hive 可以让你在 Hadoop 上使用 SQL,但是在分布式系统上优化 SQL 则有所不同.这里是让你可以轻松驾驭 Hive 的12个技巧. Hive 并不是关系型数据库(RDBMS),但是它大多数时候都表现得像是一个关系型数据库一样,它有表.可以运行 SQL.也支持 JDBC 和 ODBC. 这种表现既有好的一面,也有不好的一面:Hive 并不像关系型数据库那样执行 SQL 查询.我在 Hive 上花费了大量时间,光是我自己在工作中就为了

5.29. Spring boot with Apache Hive

5.29.1. Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artif

2.29. Spring boot with Apache Hive

2.29.1. Maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artif

泰为基于EMR的考量与实践

关于作者:武基鹏,主要从事大数据平台产品的技术工作:负责设计.构建和优化基于HDFS/HBase的存储平台架构:负责整体提升Hadoop/Hbase等集群的高可用性.高性能.高扩展特性:负责对公司的Apache Hadoop1.2.CDH4及CDH5集群的部署.监控.调优和运维:此外,还精通Java.Shell.Python编程和管理SQL数据库及熟悉NOSQL的经验. 1.58元/小时起快速体验 Hadoop & Spark ,为你助力大数据计算 阿里云EMR是基于 Hadoop 的生态环境来

大数据的救世主:Apache Hadoop和Hive

Apache Hadoop和MapReduce吸引了大量大数据分析专家和商业智能专家的眼球.然而将Hadoop分散文件系统广泛化,或能用Java语言编写或执行Mapreduce工作则需要真正严格上乘的软件开发技术.Apache Hive将是唯一的解决办法. Apache软件基础工程Hive的数据库组成部分,也是基于云的Hadoop生态系统,提供了基于语境的查询语句称作Hive查询语句.这套语句将SQL类查询语句自动翻译成MapReduce工作指令. 相关数据库,如IBM DB2,Oracle和S

Apache Kylin权威指南2.2 在Hive中准备数据

2.2 在Hive中准备数据 2.1节介绍了Kylin中的常见概念.本节将介绍准备Hive数据的一些注意事项.需要被分析的数据必须先保存为Hive表的形式,然后Kylin才能从Hive中导入数据,创建Cube. Apache Hive是一个基于Hadoop的数据仓库工具,最初由Facebook开发并贡献到Apache软件基金会.Hive可以将结构化的数据文件映射为数据库表,并可以将SQL语句转换为MapReduce或Tez任务进行运行,从而让用户以类SQL(HiveQL,也称HQL)的方式管理和

hive Illegal Operation state transition from CLOSED to ERROR的处理

异常堆栈如下: 2015-11-24 16:49:11,495 ERROR org.apache.hive.service.cli.operation.Operation: Error running hive query: org.apache.hive.service.cli.HiveSQLException: Illegal Operation state transition from CLOSED to ERROR        at org.apache.hive.service.c

绿盟科技网络安全威胁周报2017.27 关注Apache Struts远程代码执行漏洞CVE-2017-9791

绿盟科技发布了本周安全通告,周报编号NSFOCUS-17-26,绿盟科技漏洞库本周新增46条,其中高危9条.本次周报建议大家关注 Apache Struts远程代码执行漏洞 .目前厂商已经为此发布了一个 安全公告 (S2-048)以及相应补丁,请用户及时下载更新. 焦点漏洞 Apache Struts远程代码执行漏洞 NSFOCUS ID  37074 CVE ID  CVE-2017-9791 受影响版本 Apache Struts Version:2.3.x 漏洞点评 Apache Stru