使用JDBC连接到Hadoop中的命名队列

使用JDBC连接到Hadoop中的命名队列,jdbc,hadoop,cloudera,Jdbc,Hadoop,Cloudera,在AWS上安装Cloudera。尝试将其设置为具有多个命名队列,并且我可以使用JDBC连接到队列并执行查询 从目前为止我收集到的信息来看,一旦队列存在,使用JDBC连接到它们就相当简单,因为它的格式如下: http://<server name>:<port>/<queue name> http://:/ 然而,看看大量不同的文档,不清楚如何首先设置队列。似乎如果您有一个hadoop-site.xml文件,那么您可以在其中添加属性mapred.queue.

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

从目前为止我收集到的信息来看,一旦队列存在,使用JDBC连接到它们就相当简单,因为它的格式如下:

http://<server name>:<port>/<queue name>
http://:/
然而,看看大量不同的文档,不清楚如何首先设置队列。似乎如果您有一个hadoop-site.xml文件,那么您可以在其中添加属性mapred.queue.name和一个逗号分隔的字符串。但是Cloudera没有这个文件。它确实有一个mapred-site.xml,但是添加该属性,然后转到命令行并请求队列列表仍然返回默认值

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

所以我要找的是:

  • 仅创建两个队列的方法,例如工程和营销
  • 显示一旦我有了它们,我就可以使用JDBC连接到任何一个
  • 并执行一个查询

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

    因此,当您选择使用命名队列的计划程序时,您会得到命名队列。这需要进行大量研究,因为在Hadoop的第一个版本中,FairScheduler使用池,而不是队列,只有CapacityScheduler使用队列。在Hadoop2.x中,新的FairScheduler已经被重做以使用队列。但这仍然是测试版。

    因此,当您选择使用命名队列的计划程序时,您会得到命名队列。这需要进行大量研究,因为在Hadoop的第一个版本中,FairScheduler使用池,而不是队列,只有CapacityScheduler使用队列。在Hadoop2.x中,新的FairScheduler已经被重做以使用队列。但这仍然是测试版。

    你好

    在官方文档中写道,这些操作可以通过在jdbc参数列表“hive_conf_list”中指定队列名称来完成(

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

    jdbc:hive2://:/dbName;sess\u var\u list?mapred.job.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版

    在官方文档中写道,这些操作可以通过在jdbc参数列表“hive_conf_list”中指定队列名称来完成(

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

    jdbc:hive2://:/dbName;sess\u var\u list?mapred.job.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版