0

在 AWS 上安装 Cloudera。尝试对其进行设置以使其具有多个命名队列,并且我可以使用 JDBC 连接到队列并执行查询。

从我目前所能收集到的信息来看,一旦队列在那里,使用 JDBC 连接到它们就相当简单,因为它只有以下格式:

http://<server name>:<port>/<queue name>

但是,目前还不清楚如何首先查看大量不同的文档来设置队列。似乎如果你有一个 hadoop-site.xml 文件,你进去并添加属性 mapred.queue.name 和一个逗号分隔的字符串。但 Cloudera 没有该文件。它确实有一个 mapred-site.xml,但添加该属性然后转到命令行并询问队列列表仍然只是返回默认值。

然后我们尝试使用 FairScheduler,但它是基于纱线的新调度器,它具有在命名队列之间平衡工作的概念。

所以我要找的是:

  1. 一种只创建 2 个队列的方法,例如工程和营销
  2. 表明一旦我拥有它们,我就可以使用 JDBC 连接到任何一个
  3. 并执行查询

之后,我可以担心使用 ACL 使队列对数据的不同部分具有不同的访问权限,并可能管理对资源的访问。现在,只是想表明我可以获取通过命名队列公开的数据。

4

2 回答 2

2

再会 !

在官方文档中写道,这些操作可以在 jdbc 参数列表“hive_conf_list”(https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-ConnectionUR ...

在这种情况下,您的连接字符串将如下所示:

jdbc:hive2://:/dbName;sess_var_list?mapred.job.queue.name=your_queue_name

但是当然这个解决方案对我不起作用(((

所以我找到了这个问题的解决方法。当您通过 DriverManager 创建新连接时,您可以指定其他属性,例如在下面的代码中:

java.lang.Class.forName("org.apache.hive.jdbc.HiveDriver");
java.util.Properties properties = new Properties();
properties.put("mapred.job.queue.name", "queu_name");

return java.sql.DriverManager.getConnection(url, properties);

因此,在此属性中,您还可以为创建连接指定 que 名称。

此解决方案适用于 jdbc 驱动程序(maven 依赖项)版本 1.1.0

于 2015-07-23T13:14:26.333 回答
1

所以事实证明,当您选择使用它们的调度程序时,您会得到命名队列。这需要大量研究,因为在 Hadoop 的第一个版本中,FairScheduler 使用池,而不是队列,并且只有 CapacityScheduler 使用队列。在 Hadoop 2.x 中,新的 FairScheduler 已重做以使用队列。但这仍然是测试版。

于 2013-10-20T22:31:03.263 回答