暂无说说

hive on spark

hadoop jiajun 3个月前 (02-23) 40次浏览 0个评论 扫描二维码

Hive 默认使用 MapReduce 作为执行引擎,即 Hive on mr。实际上,Hive 还可以使用 Tez 和 Spark 作为其执行引擎,分别为 Hive on Tez 和 Hive on Spark。由于 MapReduce 中间计算均需要写入磁盘,而 Spark 是放在内存中,所以总体来讲 Spark 比 MapReduce 快很多。因此,Hive on Spark 也会比 Hive on mr 快。

版本兼容

Hive on Spark 仅使用特定版本的 Spark 进行测试,因此只能确保给定版本的 Hive 与特定版本的 Spark 一起使用。其他版本的 Spark 可能与给定版本的 Hive 一起使用,但不能保证能正常运行。下面是 Hive 版本及其相应的兼容 Spark 版本列表。

hive对应版本可以在hive源码包中的 pom 文件中查找,如:hive2.3.4 对应的 spark 版本如下:

<spark.version>2.0.0</spark.version>

spark 安装

参考:

YARN Mode: http://spark.apache.org/docs/latest/running-on-yarn.html>

Standalone Mode: https://spark.apache.org/docs/latest/spark-standalone.html

Hive on Spark 默认使用Spark on YARN 模式。

yarn 配置

利用 fair scheduler 模式替换 capacity scheduler 模式,在 YARN 集群中,每个 job 公平共享资源。

cd /soft/hadoop/etc/hadoop
nano yarn-site.xml
<property>
    <name>yarn.resourcemanager.scheduler.class</name>                   
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>

重启 hadoop 集群。

配置hive

1、在hive2.2.0 之前,需要把$spark_home/lib/spark-assembly jar 包连接或者复制到 HIVE_HOME/lib 中,如:

cp spark-assembly-1.5.0-cdh5.5.1-hadoop2.6.0.jar /usr/lib/hive/lib

2、hive2.2.0 以后,Hive on Spark 需要 2.0.0 或更高版本的 Spark , 这些版本没有了 spark-assembly

YARN 模式(不管时 yarn-client 还是 yarn-cluster),连接(复制)以下 jar 包到 HIVE_HOME/lib 目录。

scala-library
spark-core
spark-network-common

LOCAL 模式(仅测试), 连接(复制)以下 jar 包到 HIVE_HOME/lib 中。

chill-java  chill  jackson-module-paranamer  jackson-module-scala  jersey-container-servlet-core
jersey-server  json4s-ast  kryo-shaded  minlog  scala-xml  spark-launcher
spark-network-shuffle  spark-unsafe  xbean-asm5-shaded

3、配置 hive-site.xml

配置的内容与 spark-defaults.conf 相同,只是形式不一样,以下内容是追加到 hive-site.xml 文件中的,并且注意前两个配置,如果不设置 hive 的 spark 引擎用不了,在后面会有详细的错误说明。

<property>
  <name>hive.execution.engine</name>
  <value>spark</value>
</property>

更多配置项,参考: Spark section of Hive Configuration Properties

验证:

1、开启 hadoop、spark 集群

2、运行 hive

​命令行输入 hive,进入 hive CLI
create table test(ts BIGINT,line STRING); (创建表)
select count(*) from test;
若整个过程没有报错,并出现正确结果,则 Hive on Spark 配置成功。

喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址