Сведения об использовании HDInsight в Linux

Кластеры Azure HDInsight предоставляют Apache Hadoop в привычной среде Linux, выполняемой в облаке Azure. Для большинства задач они должны работать так же, как и любые другие установки Hadoop в Linux. В этом документе рассматриваются определенные отличия, которые при этом следует учитывать.

Необходимые компоненты

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

Пользователи

Если кластер HDInsight не присоединен к домену, его нужно рассматривать как однопользовательскую систему. В кластере создается отдельная учетная запись пользователя SSH с разрешениями уровня администратора. Можно создать и дополнительные учетные записи SSH, но им также предоставляются права администратора для доступа к кластеру.

Присоединенный к домену кластер HDInsight поддерживает несколько пользователей, а также более детализированные параметры разрешений и ролей. Дополнительные сведения см. в статье Manage Domain-joined HDInsight clusters (Управление присоединенными к домену кластерами HDInsight).

Имена доменов

При подключении к кластеру из Интернета следует использовать полное доменное имя (FQDN) CLUSTERNAME.azurehdinsight.net или CLUSTERNAME-ssh.azurehdinsight.net (только для SSH).

На внутреннем уровне каждый узел в кластере имеет имя, назначаемое при конфигурации кластера. Имена кластеров вы найдете на странице Hosts (Узлы) в веб-интерфейсе Ambari. Список узлов можно также получить через интерфейс REST API Ambari следующим образом:

curl -u admin -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/hosts" | jq '.items[].Hosts.host_name'

Замените CLUSTERNAME именем кластера. При появлении запроса введите пароль для учетной записи администратора. Эта команда возвращает документ JSON, который содержит список узлов в кластере. Программа jq извлекает значение элемента host_name для каждого узла.

Если требуется найти имя узла для конкретной службы, можно запросить Ambari для этого компонента. Например, чтобы найти узлы для узла имен HDFS, выполните следующую команду:

curl -u admin -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/services/HDFS/components/NAMENODE" | jq '.host_components[].HostRoles.host_name'

Эта команда возвращает документ JSON с описанием службы, а затем программа jq извлекает только значение host_name для узлов.

Удаленный доступ к службам

  • Веб-интерфейс Ambari - https://CLUSTERNAME.azurehdinsight.net

    Выполните аутентификацию, а затем войдите в Ambari.

    При аутентификации используется открытый текст. Всегда используйте протокол HTTPS, чтобы обеспечить безопасное подключение.

    Внимание

    Некоторые веб-интерфейсы, предоставляемые через узлы Ambari, используют внутреннее доменное имя. Внутренние доменные имена не доступны из Интернета. Вы можете получать ошибку "сервер не найден" при обращении к некоторым функциям через Интернет.

    Чтобы получить доступ ко всем функциям веб-интерфейса Ambari, используйте туннелирование SSH для проксирования веб-трафика на головной узел кластера. Дополнительные сведения см. в статье об использовании туннелирования SSH для доступа к веб-интерфейсу Apache Ambari, ResourceManager, JobHistory, NameNode, Oozie и другим веб-интерфейсам.

  • Ambari (REST) - https://CLUSTERNAME.azurehdinsight.net/ambari

    Примечание.

    Выполните аутентификацию, используя имя пользователя и пароль администратора кластера.

    При аутентификации используется открытый текст. Всегда используйте протокол HTTPS, чтобы обеспечить безопасное подключение.

  • WebHCat (Templeton) - https://CLUSTERNAME.azurehdinsight.net/templeton

    Примечание.

    Выполните аутентификацию, используя имя пользователя и пароль администратора кластера.

    При аутентификации используется открытый текст. Всегда используйте протокол HTTPS, чтобы обеспечить безопасное подключение.

  • SSH — CLUSTERNAME-ssh.azurehdinsight.net через порт 22 или 23. Для подключения к основному головному узлу используется порт 22, а для подключения к дополнительному — порт 23. Дополнительные сведения о головных узлах см. в статье Доступность и надежность кластеров Hadoop в HDInsight.

    Примечание.

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

Дополнительные сведения см. в документе о портах, используемых службами Apache Hadoop в HDInsight.

Местоположение файлов

Связанные с Hadoop файлы можно найти на узлах кластера в папке /usr/hdp. Этот каталог содержит следующие подкаталоги:

  • 2.6.5.3009-43: имя каталога — это версия платформы Hadoop, используемой HDInsight. Это число для вашего кластера может отличаться от указанного здесь.
  • current: Этот каталог содержит ссылки на вложенные каталоги в каталоге 2.6.5.3009-43 . Он позволяет вам не запоминать номер версии.

Примеры данных и JAR-файлы можно найти в распределенной файловой системе Hadoop в папках /example и /HdiSamples.

HDFS, служба хранилища Azure и Data Lake Storage

В большинстве дистрибутивов Hadoop данные хранятся в HDFS. HDFS реализуется на базе локального хранилища на компьютерах в кластере. Использование локального хранилища в случае облачного решения с почасовой или поминутной платой за вычислительные ресурсы может оказаться весьма затратным.

При использовании HDInsight файлы данных хранятся в адаптируемом и устойчивом режиме в облаке с помощью Хранилище BLOB-объектов Azure и при необходимости Azure Data Lake Storage 2-го поколения. Эти службы предоставляют следующие преимущества:

  • Недорогое долговременное хранилище;
  • доступность из внешних служб, например веб-сайтов, служебных программ для отправки или скачивания файлов, пакетов SDK для различных языков и веб-браузеров;
  • Емкость, рассчитанная на файлы большого размера, и большое адаптируемое хранилище.

Дополнительные сведения см. в разделе хранилища BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения.

При использовании хранилища BLOB-объектов Azure или Data Lake Storage 2-го поколения вам не нужно делать ничего специального из HDInsight для доступа к данным. Например, следующая команда отображает список файлов в папке /example/data независимо от того, хранится ли она в службе хранилища Azure или в Data Lake Storage:

hdfs dfs -ls /example/data

В HDInsight ресурсы хранилища данных (хранилище BLOB-объектов Azure и Azure Data Lake Storage) отделены от вычислительных ресурсов. Кластеры HDInsight можно создавать для выполнения необходимых вычислений и удалять их после завершения работы. При этом файлы данных будут храниться в облачном хранилище столько, сколько потребуется.

URI и схема

Некоторые команды требуют при доступе к файлу указывать схему в составе URI. При использовании неdefault storage (хранилище, добавленное как дополнительное хранилище в кластер), всегда следует использовать схему в составе URI.

При использовании службы хранилища Azure выберите одну из следующих схем URI:

  • wasb:///: хранилище по умолчанию без шифрования обмена данными.

  • wasbs:///: хранилище по умолчанию с шифрованием обмена данными. Схема wasbs поддерживается только в HDInsight начиная с версии 3.6.

  • wasb://<container-name>@<account-name>.blob.core.windows.net/: используется при взаимодействии с учетной записью хранения без учета. Например, используется для дополнительной учетной записи хранения или при доступе к данным в общедоступной учетной записи хранения.

При использовании Azure Data Lake Storage 2-го поколения выберите следующую схему URI:

  • abfs://: хранилище по умолчанию с шифрованием обмена данными.

  • abfs://<container-name>@<account-name>.dfs.core.windows.net/: используется при взаимодействии с учетной записью хранения без учета. Например, используется для дополнительной учетной записи хранения или при доступе к данным в общедоступной учетной записи хранения.

Внимание

Если в качестве хранилища по умолчанию для HDInsight используется Data Lake Storage, необходимо указать путь внутри хранилища, который будет корневым каталогом для хранилища HDInsight. По умолчанию используется путь /clusters/<cluster-name>/.

Если для доступа к данным используется / или adl:///, доступны только те данные, которые расположены в корневом каталоге кластера (например, /clusters/<cluster-name>/). Чтобы получить доступ ко всему хранилищу, используйте формат adl://<storage-name>.azuredatalakestore.net/.

Какие хранилища используются в кластере

С помощью Ambari можно узнать конфигурацию хранилища, используемого по умолчанию для кластера. Для получения информации о конфигурации HDFS используйте команду curl и выполните фильтрацию с помощью jq:

curl -u admin -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/configurations/service_config_versions?service_name=HDFS&service_config_version=1" | jq '.items[].configurations[].properties["fs.defaultFS"] | select(. != null)'

Примечание.

Эта команда возвращает первую конфигурацию, применяемую к серверу (service_config_version=1), которая содержит эти сведения. Может потребоваться перечислить все версии конфигурации, чтобы найти последнюю.

Эта команда возвращает значение, похожее на следующие URI:

  • wasb://<container-name>@<account-name>.blob.core.windows.net, если используется учетная запись хранения Azure.

    Имя учетной записи — это имя вашей учетной записи хранения Azure. Имя контейнера — это контейнер больших двоичных объектов, который является корнем системы хранения данных кластера.

  • adl://home при использовании Azure Data Lake Storage. Чтобы получить имя Data Lake Storage, используйте следующий вызов REST:

    curl -u admin -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/configurations/service_config_versions?service_name=HDFS&service_config_version=1" | jq '.items[].configurations[].properties["dfs.adls.home.hostname"] | select(. != null)'
    

    Эта команда возвращает следующее имя узла: <data-lake-store-account-name>.azuredatalakestore.net.

    Чтобы получить каталог хранилища, назначенный корневым для HDInsight, используйте следующий вызов REST:

    curl -u admin -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/configurations/service_config_versions?service_name=HDFS&service_config_version=1" | jq '.items[].configurations[].properties["dfs.adls.home.mountpoint"] | select(. != null)'
    

    Эта команда возвращает путь в следующем формате: /clusters/<hdinsight-cluster-name>/.

Сведения о хранилище также можно найти на портале Azure, сделав следующее:

  1. На портале Azureвыберите свой кластер HDInsight.

  2. В разделе Свойства выберите Учетные записи хранения. Отобразится информация о хранилище для кластера.

Доступ к файлам за пределами HDInsight

Для доступа к данным из-за пределов кластера HDInsight есть несколько методов. Ниже приводятся ссылки на служебные программы и пакеты SDK, которые можно использовать для работы с данными.

Если вы используете хранилище BLOB-объектов Azure, ознакомьтесь с информацией о способах получения данных, доступной по приведенным ниже ссылкам.

  • Azure CLI — это набор команд интерфейса командной строки для работы с Azure. После установки используйте команду az storage для получения информации по использованию хранилища, а команду az storage blob — для получения информации о больших двоичных объектах.

  • blobxfer.py— cценарий Python для работы с большими двоичными объектами в хранилище Azure.

  • Различные пакеты SDK:

Если вы используете Azure Data Lake Storage 1-го поколения, ознакомьтесь с информацией о способах получения данных, доступной по приведенным ниже ссылкам.

Масштабирование кластера

Масштабирование кластера позволяет динамически изменить число узлов данных в кластере. Операции масштабирования можно выполнять параллельно с другими заданиями и процессами, выполняющимися в кластере. См. раздел Масштабирование кластеров.

Как установить Hue (или другой компонент Hadoop)?

HDInsight является управляемой службой. В случае обнаружения проблем с кластером Azure может удалить неисправный узел и создать новый для его замены. Если вы установили компоненты в кластере вручную, при выполнении этой операции они не сохранятся. Вместо этого используйте действия скрипта HDInsight. Действие скрипта может использоваться для внесения следующих изменений:

  • Установка и настройка службы или веб-сайта.
  • Установка и настройка компонента, для которого необходимо изменить конфигурацию на нескольких узлах кластера.

Действия сценариев — это сценарии Bash. Они выполняются при создании кластера, и их можно использовать для установки и настройки дополнительных компонентов. Сведения о разработке собственных действий скриптов см. в статье Разработка действий сценариев с помощью HDInsight.

JAR-файлы

Некоторые технологии Hadoop предоставляют автономные JAR-файлы. Эти файлы содержат функции, которые используются в задании MapReduce либо в Pig или Hive. Они часто не требуют какой-либо настройки и могут передаваться в кластер после его создания для непосредственного использования. Если вы хотите, чтобы компонент сохранился при повторном создании образа кластера, сохраните JAR-файл в хранилище по умолчанию для кластера.

Например, если необходимо использовать последнюю версию Apache DataFu, можно скачать JAR-файл, содержащий проект, и отправить его в кластер HDInsight. Далее следуйте инструкциям в документации для DataFu по использованию его в Pig или Hive.

Внимание

Некоторые компоненты, представляющие собой автономные JAR-файлы, предоставляются вместе с HDInsight, но не в пути. Если вам необходим определенный компонент, можно выполнить его поиск в кластере.

find / -name *componentname*.jar 2>/dev/null

Эта команда возвращает путь к соответствующим JAR-файлам.

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

Внимание

Компоненты, предоставляемые вместе с кластером HDInsight, поддерживаются в полном объеме. Служба технической поддержки Майкрософт помогает выявить и решить проблемы, связанные с этими компонентами.

Настраиваемые компоненты получают ограниченную коммерчески оправданную поддержку, способствующую дальнейшей диагностике проблемы. В результате проблема может быть устранена, либо вас могут попросить воспользоваться доступными каналами по технологиям с открытым исходным кодом, чтобы связаться с экспертами в данной области. Например, существует множество сайтов сообщества, которые можно использовать, например: страница вопросов Microsoft Q&A для HDInsight. https://stackoverflow.com Кроме того, проекты Apache имеют соответствующие сайты (например, Hadoop, Spark) на сайте https://apache.org.

Следующие шаги