2013-08-31 5 views
0

У вас есть установка Cloudera на AWS. Попытка настроить его так, чтобы он имел несколько именованных очередей, и я могу подключиться к очередям с помощью JDBC и выполнить запрос.Подключение к именованной очереди в Hadoop с помощью JDBC

Из того, что я был в состоянии собрать до сих пор, когда очереди там, подключаясь к ним с JDBC довольно просто, потому что он просто имеет формат:

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

Однако, не ясно, беготни глядя на множество различных документов, как установить очереди в первую очередь. Кажется, что если у вас есть файл hadoop-site.xml, вы заходите туда и добавляете свойство mapred.queue.name и строку, разделенную запятой. Но у Клаудера нет этого файла. Он имеет mapred-site.xml, но добавляет это свойство, а затем переходит в командную строку и запрашивает список очередей, которые все еще просто возвращаются по умолчанию.

Затем мы попытались использовать FairScheduler, но это новая на основе пряжи, которая имеет понятие балансировки между именованными очередями.

Так что я ищу это:

  1. способ просто создать 2 очереди, например, Инжиниринг и маркетинг
  2. показывают, что когда-то я их, я могу подключиться с помощью JDBC либо один
  3. и выполнить запрос

После, я могу беспокоиться об использовании списков ACL, чтобы очереди имеют неодинаковый доступ к различные части данных и, возможно, управлять доступом к ресурсам. Пока что просто хочу показать, что я могу получить данные, выставленные через именованные очереди.

ответ

1

Оказалось, что вы получаете очереди с именами при выборе планировщика, который их использует. Это заняло много исследований, потому что в первой версии Hadoop в FairScheduler использовались пулы, а не очереди, и только очереди CapacityScheduler использовали. В Hadoop 2.x новый FairScheduler был переделан для использования очередей. Но это все еще бета-версия.

0

Добрый день!

В официальной документации писал, что те действия можно сделать бросок имя очереди в задав список Params 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

Смежные вопросы