Hive和Spark设置队列的方法

                                     Hive和Spark设置队列的方法

Hive提供三种可以改变环境变量的方法,分别是:(1)、修改${HIVE_HOME}/conf/hive-site.xml配置文件;(2)、命令行参数;(3)、在已经进入cli时进行参数声明。下面分别来介绍这几种设定。
  方法一:
  在Hive中,所有的默认配置都在${HIVE_HOME}/conf/hive-default.xml文件中,如果需要对默认的配置进行修改,可以创建一个hive-site.xml文件,放在${HIVE_HOME}/conf目录下。里面可以对一些配置进行个性化设定。在hive-site.xml设置:
  所有的配置都是放在标签之间,一个configuration标签里面可以存在多个标签。标签里面就是我们想要设定属性的名称;标签里面是我们想要设定的值;<标签是描述在这个属性的,可以不写。绝大多少配置都是在xml文件里面配置的,因为在这里做的配置都全局用户都生效,而且是永久的。用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。
  方法二:
  在启动Hive cli的时候进行配置,可以在命令行添加-hiveconf param=value来设定参数,例如:
[wyp@master ~]$ hive --hiveconf mapreduce.job.queuename=queue1
这样在Hive中所有MapReduce作业都提交到队列queue1中。这一设定对本次启动的会话有效,下次启动需要重新配置。
  方法三:
  在已经进入cli时进行参数声明,可以在HQL中使用SET关键字设定参数,例如:
hive> set mapreduce.job.queuename=queue1;
这样也能达到方法二的效果。这种配置也是对本次启动的会话有效,下次启动需要重新配置。在HQL中使用SET关键字还可以查看配置的值,如下:
hive> set mapreduce.job.queuename;
mapreduce.job.queuename=queue1
我们可以得到mapreduce.job.queuename=queu e1。如果set后面什么都不添加,这样可以查到Hive的所有属性配置,如下:
hive> set;
datanucleus.autoCreateSchema=true
datanucleus.autoStartMechanismMode=checked
datanucleus.cache.level2=false
datanucleus.cache.level2.type=none
datanucleus.connectionPoolingType=DBCP
datanucleus.identifierFactory=datanucleus
datanucleus.plugin.pluginRegistryBundleCheck=LOG
datanucleus.storeManagerType=rdbms
datanucleus.transactionIsolation=read-committed
datanucleus.validateColumns=false
datanucleus.validateConstraints=false
datanucleus.validateTables=false
............................
  上述三种设定方式的优先级依次递增。即参数声明覆盖命令行参数,命令行参数覆盖配置文件设定。
用户通过Beeline连接HiveServer2后的队列选取,默认情况下受公平调度策略的影响,如果想通过hive-site.xml或者mapred-site.xml中指定mapreduce.job.queuename,有一个非常简单的办法就是将属性值hive.server2.map.fair.scheduler.queue(ConfVars.HIVE_SERVER2_MAP_FAIR_SCHEDULER_QUEUE)置为false,可以在hive-site.xml中指定或或者启动HiveServer2时通过参数指定,这样HiveServer2队列的选取就不再受公平调度策略的影响。
Spark 设置队列
spark-shell --master yarn --queue wa
spark-submit --master yarn --queue wa

猜你喜欢

转载自blog.csdn.net/Aime123456789/article/details/82117732
今日推荐