`

hive on spark 编译

阅读更多

前置条件说明

Hive on Spark是Hive跑在Spark上,用的是Spark执行引擎,而不是MapReduce,和Hive on Tez的道理一样。 从Hive 1.1版本开始,Hive on Spark已经成为Hive代码的一部分了,并且在spark分支上面,可以看这里https://github.com/apache/hive/tree/spark,并会定期的移到master分支上面去。 关于Hive on Spark的讨论和进度,可以看这里https://issues.apache.org/jira/browse/HIVE-7292。 hive on spark文档:https://issues.apache.org/jira/secure/attachment/12652517/Hive-on-Spark.pdf

源码下载

git clone https://github.com/apache/hive.git hive_on_spark

编译

 cd hive_on_spark/
 git branch -r
  origin/HEAD -> origin/master
  origin/HIVE-4115
  origin/HIVE-8065
  origin/beeline-cli
  origin/branch-0.10
  origin/branch-0.11
  origin/branch-0.12
  origin/branch-0.13
  origin/branch-0.14
  origin/branch-0.2
  origin/branch-0.3
  origin/branch-0.4
  origin/branch-0.5
  origin/branch-0.6
  origin/branch-0.7
  origin/branch-0.8
  origin/branch-0.8-r2
  origin/branch-0.9
  origin/branch-1
  origin/branch-1.0
  origin/branch-1.0.1
  origin/branch-1.1
  origin/branch-1.1.1
  origin/branch-1.2
  origin/cbo
  origin/hbase-metastore
  origin/llap
  origin/master
  origin/maven
  origin/next
  origin/parquet
  origin/ptf-windowing
  origin/release-1.1
  origin/spark
  origin/spark-new
  origin/spark2
  origin/tez
  origin/vectorization

 git checkout origin/spark
 git branch
* (分离自 origin/spark)
  master

修改$HIVE_ON_SPARK/pom.xml spark版本改成spark1.4.1

 <spark.version>1.4.1</spark.version>

hadoop版本改成2.3.0-cdh5.1.0

<hadoop-23.version>2.3.0-cdh5.1.0</hadoop-23.version>

编译命令

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
mvn clean package -Phadoop-2 -DskipTests

添加Spark的依赖到Hive的方法

spark home:/home/cluster/apps/spark/spark-1.4.1 hive home:/home/cluster/apps/hive_on_spark

1.set the property 'spark.home' to point to the Spark installation:

hive> set spark.home=/home/cluster/apps/spark/spark-1.4.1;
  1. Define the SPARK_HOME environment variable before starting Hive CLI/HiveServer2:
    export SPARK_HOME=/home/cluster/apps/spark/spark-1.4.1
    
    3.Set the spark-assembly jar on the Hive auxpath:
    hive --auxpath /home/cluster/apps/spark/spark-1.4.1/lib/spark-assembly-*.jar
    
  2. Add the spark-assembly jar for the current user session:
    hive> add jar /home/cluster/apps/spark/spark-1.4.1/lib/spark-assembly-*.jar;
    
  3. Link the spark-assembly jar to $HIVE_HOME/lib.

启动Hive过程中可能出现的错误:

[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
        at jline.TerminalFactory.create(TerminalFactory.java:101)
        at jline.TerminalFactory.get(TerminalFactory.java:158)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
        at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
        at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)
        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)
        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)
        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:212)

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected

解决方法:export HADOOP_USER_CLASSPATH_FIRST=true

其他场景的错误解决方法参见:https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

需要设置spark.eventLog.dir参数,比如:

set spark.eventLog.dir= hdfs://master:8020/directory 否则查询会报错,否则一直报错:/tmp/spark-event类似的文件夹不存在

启动hive后设置执行引擎为spark:

hive> set hive.execution.engine=spark;

设置spark的运行模式:

hive> set spark.master=spark://master:7077

或者yarn:spark.master=yarn

Configure Spark-application configs for Hive

可以配置在spark-defaults.conf或者hive-site.xml

spark.master=<Spark Master URL>
spark.eventLog.enabled=true;            
spark.executor.memory=512m;             
spark.serializer=org.apache.spark.serializer.KryoSerializer;
spark.executor.memory=...  #Amount of memory to use per executor process.
spark.executor.cores=...  #Number of cores per executor.
spark.yarn.executor.memoryOverhead=...
spark.executor.instances=...  #The number of executors assigned to each application.
spark.driver.memory=...  #The amount of memory assigned to the Remote Spark Context (RSC). We recommend 4GB.
spark.yarn.driver.memoryOverhead=...  #We recommend 400 (MB).

参数配置详见文档:https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started

执行sql语句后可以在监控页面查看job/stages等信息

hive (default)> select city_id, count(*) c from city_info group by city_id order by c desc limit 5;
Query ID = spark_20150309173838_444cb5b1-b72e-4fc3-87db-4162e364cb1e
Total jobs = 1
Launching Job 1 out of 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
state = SENT
state = STARTED
state = STARTED
state = STARTED
state = STARTED
Query Hive on Spark job[0] stages:
1
Status: Running (Hive on Spark job[0])
Job Progress Format
CurrentTime StageId_StageAttemptId: SucceededTasksCount(+RunningTasksCount-FailedTasksCount)/TotalTasksCount [StageCost]
2015-03-09 17:38:11,822 Stage-0_0: 0(+1)/1      Stage-1_0: 0/1  Stage-2_0: 0/1
state = STARTED
state = STARTED
state = STARTED
2015-03-09 17:38:14,845 Stage-0_0: 0(+1)/1      Stage-1_0: 0/1  Stage-2_0: 0/1
state = STARTED
state = STARTED
2015-03-09 17:38:16,861 Stage-0_0: 1/1 Finished Stage-1_0: 0(+1)/1      Stage-2_0: 0/1
state = SUCCEEDED
2015-03-09 17:38:17,867 Stage-0_0: 1/1 Finished Stage-1_0: 1/1 Finished Stage-2_0: 1/1 Finished
Status: Finished successfully in 10.07 seconds
OK
city_id c
-1000   22826
-10     17294
-20     10608
-1      6186
    4158
Time taken: 18.417 seconds, Fetched: 5 row(s)

这里写图片描述

尊重原创,拒绝转载,http://blog.csdn.net/stark_summer/article/details/48466749

0
0
分享到:
评论

相关推荐

    spark2.0编译版-适用于hive2.3的hive on spark

    在这个“spark2.0编译版-适用于hive2.3的hive on spark”压缩包中,我们主要关注的是如何在Spark 2.0上运行Hive查询,同时确保Spark中不包含Hive的jar包。这是因为Hive on Spark模式下,Spark作为Hive的执行引擎,但...

    hive3.x编译spark3.x包

    在IT行业中,Hive和Spark是两个非常重要的大数据处理框架。Hive主要提供了一种基于Hadoop的数据仓库工具,使得用户...此外,对于大规模集群,还需要考虑性能优化和资源管理策略,以确保高效稳定地运行Hive on Spark。

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    Hive on Spark实施笔记1

    本文将详细介绍如何在Ubuntu 14.04环境下编译和配置Hive on Spark,以及测试其运行效果。 首先,我们需要准备合适的编译环境。操作系统应为Ubuntu 14.04,同时需要安装Maven和Scala(用于Spark的编译)。确保已设置...

    大数据Spark纯净版安装包,用于快速集成Hive on Spark

    用户可以根据自己的需求选择合适的安装方式,例如通过二进制文件安装、通过包管理器安装或者通过源代码编译安装。 使用Spark纯净版安装包可以让用户更快速地搭建Spark环境,并且可以根据需要进行定制和扩展,是一种...

    Hive on Spark安装配置详解.pdf

    《Hive on Spark安装配置详解》 在大数据处理领域,Hive作为一个基于Hadoop的数据仓库工具,常用于大规模数据集的查询和分析。然而,Hive默认使用MapReduce作为执行引擎,由于MapReduce的磁盘I/O特性,其性能相对较...

    spark-2.3.1-bin-hadoop2-without-hive.tgz

    这个特定的压缩包"spark-2.3.1-bin-hadoop2-without-hive.tgz"是针对Hadoop 2.x平台编译的Spark二进制发行版,但不包括对Hive的支持。这意味着它没有集成Hive Metastore服务,因此不能直接用于执行Hive查询,但可以...

    apache-hive-3.1.2-bin.tar.gz

    3. **执行器**:执行编译后的任务,这可能是通过Hadoop的MapReduce、Tez或者Spark框架。 4. **Hive CLI**:Hive命令行接口,用户可以在这里输入HQL查询并查看结果。 5. **Hive Server2**:提供了更安全、高性能的...

    win10下搭建Hadoop环境(jdk+mysql+hadoop+scala+hive+spark) 3.docx

    下载Spark的预编译版本,配置`spark-env.sh`和`spark-defaults.conf`文件,指定Hadoop的配置路径、Spark的工作内存、主节点等参数。启动Spark的Master和Worker节点,可以通过`start-all.sh`命令完成。 在整个过程中...

    hive3.1.2编译.doc

    在本文中,我们将深入探讨如何在Hive 3.1.2版本中进行源码编译,以便使其兼容Spark 3.x。这个过程涉及到解决依赖冲突、修改源代码以及适应新版本的Spark和Hadoop。以下是一步步的详细步骤: 首先,确保你已经准备好...

    spark--bin-hadoop3-without-hive.tgz

    本压缩包“spark--bin-hadoop3-without-hive.tgz”提供了Spark二进制版本,针对Hadoop 3.1.3进行了编译和打包,这意味着它已经与Hadoop 3.x兼容,但不包含Hive组件。在CentOS 8操作系统上,这个版本的Spark已经被...

    spark-2.3.0-bin-hadoop277-without-hive.tgz

    spark2.3.0 without hive 编译版本,用于Hive on Spark 环境搭建 ./dev/make-distribution.sh --name "hadoop277-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.7,parquet-provided,orc-provided" -...

    CDH6.3.2之升级spark-3.3.1.doc

    然而,在升级过程中发现并没有与之匹配的spark-hive包,因此决定直接将Spark升级到3.3.1版本。 #### 二、升级前准备 1. **环境备份**: - 在进行任何修改之前,强烈建议先对当前环境进行备份。这一步骤非常重要,...

    spark-1.6.0-bin-hadoop2-without-hive.tgz

    hive2.1.0 --- spark1.6.0 hive on spark的spark包,这个是已经经过./make-distribution.sh --name "hadoop2-without-hive" --tgz "-Pyarn,hadoop-provided,hadoop-2.4,parquet-provided"编译后的了spark-1.6.0-bin-...

    hiveOnSpark 重新打包的jar包

    《Hive on Spark:解决版本冲突的重打包JAR包详解》 在大数据处理领域,Apache Hive 和 Apache Spark 是两个非常重要的组件。Hive 提供了一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库...

    hive-3.1.2.zip

    5. **Hive与Spark集成**:在Hive-3.1.2中,还可以选择使用Apache Spark作为执行引擎,利用Spark的内存计算能力提升查询速度。这使得Hive能够处理更复杂的交互式查询,同时保持与Hadoop生态系统的兼容性。 6. **ACID...

    hive相关jar包

    4. **Hive Execution Engine**:这部分jar包包含Hive的执行引擎,它负责将编译后的查询计划转化为MapReduce或Tez或Spark的任务,以便在Hadoop集群上执行。 5. **Hadoop相关依赖**:由于Hive是构建在Hadoop之上的,...

    spark2.4.8_on_hadoop3.3.3

    将Spark与Hadoop集成,首要任务是确保Spark编译时指定正确的Hadoop版本。在编译Spark 2.4.8以支持Hadoop 3.3.3时,你需要修改`pom.xml`文件中的Hadoop版本依赖,将其设置为3.3.3。执行`build/sbt -Phadoop-3.3 -...

    apache-hive-2.3.9-bin.tar大数据HIVE.zip

    8. **Hive on Tez/Spark**:Hive 2.3.9 版本中,用户可以选择使用Tez或Spark作为执行引擎,以提高查询性能,尤其是对于交互式查询。 9. **ACID特性**:从Hive 2.0开始,Hive支持事务(Transactions)、原子性...

    apachespark.rar

    在Hive on Spark模式下,Spark可以作为Hive的执行引擎,提供更快的查询性能。然而,默认情况下,Hive 3.1.1并不直接支持Spark 2.3.0,因此如果要将两者结合使用,需要自行编译Hive,去除其中对特定Spark版本的引用,...

Global site tag (gtag.js) - Google Analytics