当前位置:   article > 正文

hive on spark_hive on spark 队列

hive on spark 队列

hive on spark 的配置

1)解压spark-2.4.5-bin-without-hive.tgz

[test@hadoop102 software]$ tar -zxf /opt/software/spark-2.4.5-bin-without-hive.tgz -C /opt/module
[test@hadoop102 software]$ mv /opt/module/spark-2.4.5-bin-without-hive /opt/module/spark
  • 1
  • 2

2)配置SPARK_HOME环境变量

[test@hadoop102 software]$ sudo vim /etc/profile.d/my_env.sh
添加如下内容
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin
source 使其生效
[test@hadoop102 software]$ source /etc/profile.d/my_env.sh
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3)配置spark运行环境

[test@hadoop102 software]$ mv /opt/module/spark/conf/spark-env.sh.template /opt/module/spark/conf/spark-env.sh
[test@hadoop102 software]$ vim /opt/module/spark/conf/spark-env.sh
添加如下内容
export SPARK_DIST_CLASSPATH=$(hadoop classpath)
  • 1
  • 2
  • 3
  • 4

$()相当于飘号,是将里面的命令执行结果返回给前面的变量
返回的是hadoop所有的依赖
这个class path 是hadoop集群的,返回的是hadoop的所有依赖

4)新建spark配置文件

[test@hadoop102 software]$ vim /opt/module/hive/conf/spark-defaults.conf

添加如下内容
spark.master                               yarn
spark.eventLog.enabled                   true
spark.eventLog.dir                        hdfs://hadoop102:9820/spark-history
spark.executor.memory                    1g
spark.driver.memory					   1g
注意:spark-history:手动创建
启动一个hive客户端就去读取配置文件相当于启动了一个spark客户端
 hdfs://hadoop102:9820/spark-history相当于历史日志聚集
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

5)在HDFS创建如下路径

[test@hadoop102 software]$ hadoop fs -mkdir /spark-history
  • 1

6)上传Spark依赖到HDFS

[test@hadoop102 software]$ hadoop fs -mkdir /spark-jars

[test@hadoop102 software]$ hadoop fs -put /opt/module/spark/jars/* 
  • 1
  • 2
  • 3

7)修改hive-site.xml(在hive中)

<!--Spark依赖位置-->
<property>
    <name>spark.yarn.jars</name>
    <value>hdfs://hadoop102:9820/spark-jars/*</value>
</property>
  
<!--Hive执行引擎-->
<property>
    <name>hive.execution.engine</name>
    <value>spark</value>
</property>

<!--Hive和spark连接超时时间-->
<property>
    <name>hive.spark.client.connect.timeout</name>
    <value>20000ms</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

注意:hive.spark.client.connect.timeout的默认值是1000ms,如果执行hive的insert语句时,抛如下异常,可以调大该参数到10000ms

FAILED: SemanticException Failed to get a spark session: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session d9e0224c-3d14-4bf4-95bc-ee3ec56df48e
  • 1

Hive on Spark测试

1)启动hive客户端

 [test@hadoop102 hive]$ bin/hive
  • 1

2)创建一张测试表

hive (default)> create external table student(id int, name string) location '/student';
  • 1

3)通过insert测试效果

hive (default)> insert into table student values(1,'abc');
  • 1

4)如果插入数据过程/tmp/test/hive.log文件中抛如下异常

Caused by: javax.security.sasl.SaslException: Server closed before SASL negotiation finished.
  • 1

5)修改/opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml中am启动的最大资源配置。分发、并重新启动resourcemanager

[test@hadoop102 hadoop]$ vim capacity-scheduler.xml

<property>
    <name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
    <value>1</value>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

增加hive队列

(1)修改容量调度器配置文件

默认Yarn的配置下,容量调度器只有一条Default队列(容量调度器是FIFO,如果只有一个队列,启动hive on spark会启动一个session,这个会话一直不结束就会一直占用着队列,后提交的任务会一直等待,所以需要再配置一个队列)。在capacity-scheduler.xml中可以配置多条队列,修改以下属性,增加hive队列。

<property> 
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>default,hive</value>
    <description>
      The queues at the this level (root is the root queue).
    </description>
</property>
<property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
<value>50</value>
    <description>
      default队列的容量为50%
    </description>
</property>
同时为新加队列添加必要属性:
<property>
    <name>yarn.scheduler.capacity.root.hive.capacity</name>
<value>50</value>
    <description>
      hive队列的容量为50%
    </description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.hive.user-limit-factor</name>
<value>1</value>
    <description>
      一个用户最多能够获取该队列资源容量的比例
    </description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.hive.maximum-capacity</name>
<value>80</value>
    <description>
      hive队列的最大容量
    </description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.hive.state</name>
    <value>RUNNING</value>
</property>

<property>
    <name>yarn.scheduler.capacity.root.hive.acl_submit_applications</name>
<value>*</value>
    <description>
      访问控制,控制谁可以将任务提交到该队列
    </description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.hive.acl_administer_queue</name>
<value>*</value>
    <description>
      访问控制,控制谁可以管理(包括提交和取消)该队列的任务
    </description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.hive.acl_application_max_priority</name>
<value>*</value>
<description>
      访问控制,控制用户可以提交到该队列的任务的最大优先级
    </description>
</property>

<property>
    <name>yarn.scheduler.capacity.root.hive.maximum-application-lifetime</name>
<value>-1</value>
    <description>
      hive队列中任务的最大生命时长
</description>
</property>
<property>
    <name>yarn.scheduler.capacity.root.hive.default-application-lifetime</name>
<value>-1</value>
    <description>
      hive队列中任务的默认生命时长
</description>
</property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82

(2)分发配置文件

[test@hadoop102 ~]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml
  • 1

(3)重启Hadoop集群

(4)提交任务的时候指定使用哪个队列

提交任务的时候只能写叶子节点的队列,不能写叶子的父节点。

mapreduce.job.queuename=hive
  • 1

创建数据库

1)启动hive

[test@hadoop102 hive]$ bin/hive
  • 1

2)显示数据库

hive (default)> show databases;
  • 1

3)创建数据库

hive (default)> create database gmall;
  • 1

4)使用数据库

hive (default)> use gmall;
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/634590
推荐阅读
相关标签
  

闽ICP备14008679号