Используйте SDK Hadoop с локальным сервером HDInsight.

Можно ли использовать пакет SDK Hadoop, особенно LINQ to Hive, с локальной установкой HDInsight Server. Обратите внимание, что я не имею в виду службу HDInsight, размещенную в Azure.

Я пытался использовать LINQ to Hive из пакета Nuget Microsoft.Hadoop.Hive, но не смог заставить его работать, поскольку LINQ to Hive, по-видимому, требует, чтобы результаты сохранялись в хранилище BLOB-объектов Azure, а не в моем размещенном экземпляре.

var hiveConnection = new HiveConnection(new Uri("http://hadoop-poc.cloudapp.net:50111"), "hadoop", "hgfhdfgh", "hadoop", "hadooppartner", "StorageKey");
var metaData = hiveConnection.GetMetaData().Result;
var result = hiveConnection.ExecuteQuery(@"select * from customer limit 1");

Даже с ключом хранилища я не могу заставить это работать, потому что задание MapReduce завершается с ошибкой:

AzureException: org.apache.hadoop.fs.azure.AzureException: Container a7e3aa39-75ba-4cc2-a8aa-301257018146 in account hadooppartner not found, and we can't create  it using anoynomous credentials.

Я также добавил учетные данные еще раз в файл core-site.xml следующим образом:

<property>
   <name>fs.azure.account.key.hadooppartner.blob.core.windows.net</name>
   <value>Credentials</value>
</property>

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

Спасибо за помощь!


person Toni    schedule 03.07.2013    source источник


Ответы (2)


Вы можете использовать конструктор HiveConnection без параметров учетной записи хранения для подключения к локальной установке. Это работает против установки предварительной версии HDInsights для разработчиков по умолчанию на локальном компьютере:

var db = new HiveConnection(
            webHCatUri: new Uri("http://localhost:50111"),
            userName: (string) "hadoop", password: (string) null);
var result = db.ExecuteHiveQuery("select * from w3c");

Конечно, вы можете использовать это соединение и для любых запросов LINQ.

person Simon Elliston Ball    schedule 08.08.2013
comment
Я установил HDInsight, но URL-адрес localhost:50111 не настроен в процессе установки. Нужно ли что-то настраивать после установки Hdinsight? Пожалуйста подтвердите - person Kris; 06.09.2013
comment
Убедитесь, что служба Apache Hadoop Templeton запущена, она должна открыться на 50111. - person Simon Elliston Ball; 06.09.2013
comment
Спасибо, Саймон, я проверил, сервис Templeton работает. из командной строки я также проверил команду telnet localhost 50111, чтобы убедиться, что это не проблема брандмауэра, и этот порт открыт. Могут ли быть какие-либо другие проблемы, пожалуйста, подскажите - person Kris; 06.09.2013

Оказалось, что в конструкторе HiveConnection нужно указать полное имя учетной записи хранения, то есть hadooppartner.blob.core.windows.net.

Мне по-прежнему интересно использовать .NET LINQ API без учетной записи хранения. Кроме того, можно ли использовать .NET API с другими дистрибутивами Hadoop?

person Toni    schedule 04.07.2013