Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
© 2022 ООО «Яндекс.Облако»
Yandex Data Proc
  • Практические руководства
    • Все практические руководства
    • Работа с заданиями
      • Обзор
      • Работа с заданиями Hive
      • Работа с заданиями MapReduce
      • Работа с заданиями PySpark
      • Работа с заданиями Spark
      • Запуск заданий Apache Hive
      • Запуск Spark-приложений
      • Запуск заданий с удаленного хоста
    • Настройка сети для Data Proc
    • Использование Yandex Object Storage в Data Proc
    • Обмен данными с Managed Service for ClickHouse
    • Импорт базы данных с использованием Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к кластеру
    • Изменение кластера
    • Управление подкластерами
    • Изменение подкластера
    • Подключение к интерфейсам компонентов
    • Использование Sqoop
    • Управление заданиями
      • Все задания
      • Задания Spark
      • Задания PySpark
      • Задания Hive
      • Задания MapReduce
    • Удаление кластера
    • Работа с логами
    • Мониторинг состояния кластера и хостов
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
    • Среда исполнения
    • Интерфейсы и порты компонентов Data Proc
    • Задания в Data Proc
    • Автоматическое масштабирование
    • Декомиссия подкластеров и хостов
    • Сеть в Data Proc
    • Техническое обслуживание
    • Квоты и лимиты
    • Хранилище в Data Proc
    • Свойства компонентов
    • Логи в Data Proc
    • Скрипты инициализации
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • JobService
      • ResourcePresetService
      • SubclusterService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listHosts
        • listOperations
        • listUILinks
        • start
        • stop
        • update
      • Job
        • Overview
        • cancel
        • create
        • get
        • list
        • listLog
      • ResourcePreset
        • Overview
        • get
        • list
      • Subcluster
        • Overview
        • create
        • delete
        • get
        • list
        • update
  • История изменений
    • Изменения сервиса
    • Образы
  • Вопросы и ответы
  1. Практические руководства
  2. Работа с заданиями
  3. Работа с заданиями MapReduce

Работа с заданиями MapReduce

Статья создана
Yandex Cloud
  • Перед началом работы
  • Создайте задание MapReduce
  • Удалите созданные ресурсы

MapReduce — инструмент параллельной обработки больших (порядка нескольких десятков ТБ) наборов данных на кластерах в экосистеме Hadoop. Позволяет работать с данными в разных форматах. Ввод и вывод задания хранится в Yandex Object Storage.

В этой статье на простом примере показывается, как в Data Proc использовать MapReduce. При помощи MapReduce подсчитывается количество жителей 500 самых населенных городов мира из набора данных о городах.

Чтобы запустить MapReduce на Hadoop, используется интерфейс Streaming. При этом для этапов предобработки данных (map) и вычисления финальных данных (reduce) используются программы, читающие из стандартного программного ввода (stdin) и выдающие результат в стандартный вывод (stdout).

Перед началом работы

  1. Создайте сервисный аккаунт с ролью mdb.dataproc.agent.

  2. В Object Storage создайте бакеты и настройте доступ к ним:

    1. Создайте бакет для исходных данных и предоставьте сервисному аккаунту кластера разрешение READ для этого бакета.
    2. Создайте бакет для результатов обработки и предоставьте сервисному аккаунту кластера разрешение READ и WRITE для этого бакета.
  3. Создайте кластер Data Proc со следующими настройками:

    • Сервисы:
      • HDFS
      • MAPREDUCE
      • YARN
    • Сервисный аккаунт: выберите созданный ранее сервисный аккаунт с ролью mdb.dataproc.agent.
    • Имя бакета: выберите бакет для результатов обработки.

Создайте задание MapReduce

  1. Скачайте и загрузите в бакет для исходных данных архив CSV-файла с набором данных о городах.

  2. Загрузите в бакет для исходных данных файлы на языке Python с кодом программ предобработки данных (этап map) mapper.py и вычисления финальных данных (этап reduce) reducer.py:

    mapper.py

    import sys
    
    population = sum(int(line.split('\t')[14]) for line in sys.stdin)
    print(population)
    

    reducer.py

    import sys
    
    population = sum(int(value) for value in sys.stdin)
    print(population)
    
  3. Создайте задание MapReduce с параметрами:

    • Основной класс: org.apache.hadoop.streaming.HadoopStreaming
    • Аргументы задания:
      • -mapper
      • mapper.py
      • -reducer
      • reducer.py
      • -numReduceTasks
      • 1
      • -input
      • s3a://<имя бакета для исходных данных>/cities500.txt.bz2
      • -output
      • s3a://<имя бакета для результатов обработки>/<папка для результатов>
    • Файлы:
      • s3a://<имя бакета для исходных данных>/mapper.py
      • s3a://<имя бакета для исходных данных>/reducer.py
    • Настройки:
      • mapreduce.job.maps: 6
      • yarn.app.mapreduce.am.resource.mb: 2048
      • yarn.app.mapreduce.am.command-opts: -Xmx2048m
  4. Подождите, пока статус задания изменится на Done.

  5. Скачайте из бакета и просмотрите файл с результатом обработки:

    part-00000

    3157107417
    

Удалите созданные ресурсы

Если созданные ресурсы вам больше не нужны, удалите их:

  1. Удалите кластер.
  2. Удалите бакеты.
  3. Удалите сервисный аккаунт.

Была ли статья полезна?

Language / Region
© 2022 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Создайте задание MapReduce
  • Удалите созданные ресурсы