解决方案
MapReduce运行队列的指定是通过配置(Configuration)属性“mapreducejobqueuename”指定的。
大家可能首先想到的是通过“set mapreducejobqueuename=queueName”的方式来选取运行队列,这在手动任务(临时分析需求)的场景下是不可取的,如前所述,我们为这类似的任务专门分配了相应的队列资源“hivetemporary”,我们必须能够保证用户通过Beeline连接HiveServer2后提交的Hive SQL语句运行在指定的队列“hivetemporary”中,而且用户无法随意更改运行队列,即无法随意更改属性“mapreducejobqueuename”。
目前HiveServer2使用的权限控制策略为SQL Standard Based Hive Authorization和Storage Based Authorization in the Metastore Server。其中SQL Standard Based Hive Authorization会对Hive终端命令“set”做出限制:只能针对白名单(hivesecurityauthorizationsqlstdconfwhitelist)中列出的属性进行赋值。白名单默认包含一批属性,其中就包括“mapreducejobqueuename”,我们需要通过配置文件hive-sitexml或者启动HiveServer2时通过参数“--hiveconf”设置白名单“hivesecurityauthorizationsqlstdconfwhitelist”的值,排除属性“mapreducejobqueuename”,使得我们的用户通过Beeline连接至HiveServer2之后,无法随意更改“mapreducejobqueuename”的值。
既然用户无法更改属性“mapreducejobqueuename”,那么HiveServer2启动之后属性“mapreducejobqueuename”必须具有一个默认值,即“hivetemporary”,这样用户通过Beeline连接HiveServer2之后提交的Hive SQL就会运行在队列“hivetemporary”中。那么,接下来的问题就是如果完成这个默认设定?
一般情况下,我们会这样认为,HiveServer2的运行至少涉及到两份配置文件:
(1)Hadoop:core-sitexml、hdfs-sitexml、mapred-sitexml、yarn-sitexml
(2)Hive:hive-sitexml
这些配置文件中的属性值都会“打包”到MapReduce任务的配置属性中去。我们自然会想到在mapred-sitexml或者hive-sitexml中指定“mapreducejobqueuename”即可,然而实际验证之后发现情况并不是这样的。
(1)在hive-sitexml(mapred-sitexml)中指定“mapreducejobqueuename”;
"jdbc:hive://localhost:10000/default" Currently, the only dbname supported is "default"
写不写 dbname都是无用的 他潜在只支持 default
当然不是,hive支持jdbc和odbc数据源连接,可以连接很多种数据库,mysql、oracle等等等等,它自己的metastore用的就是derbyDB。 具体的连接方法在官网上有说明,使用odbc需要重新编译相关组件。hive通过jdbc连接其他数据库的教程在google上一搜
hive配置远程metastore的方法:
1)首先配置hive使用本地MySQL存储metastore(服务器A 1111212123)(也可以使用远程mysql存储)
2)配置完成后,在服务器A启动服务:/etc/initd/Hadoop-hive-metastore start (默认监听端口是:9083)
3)配置hive客户端,修改hive-sitexml:(服务器B-需要有hadoop环境)
<property>
<name>hivemetastorelocal</name>
<value>false</value>
<description>controls whether to connect to remote metastore server or open a new metastore server in Hive Client JVM</description>
</property>
<property>
<name>hivemetastoreuris</name>
<value>thrift://127001:9083</value>
<description></description>
</property>
4)hive 执行测试hql
以上就是关于用户连接hiveserver2时怎么在cli中指定队列全部的内容,包括:用户连接hiveserver2时怎么在cli中指定队列、HIVE JDBC 连接非default db、请问ubuntu hive连接mysql这样怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)