Оптимизация операций межзвездного космопорта

HadoopHadoopBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В далеком будущем человечество расширяет свои границы в огромном космосе. Агенство по управлению межзвездными космодромами (Interstellar Spaceport Authority, ISA) отвечает за управление сложной сетью космодромов, рассеянных по всему галактике. Как Верховный Командир ISA, ваша миссия — оптимизировать операции космодрома, используя мощь функций партиционирования и квазиранжирования Hadoop.

Дата-центр космодрома хранит огромное количество информации, включая протоколы полетов, грузовые манифесты и записи о пассажирах. Эффективное управление данными является важнейшим для обеспечения бесперебойной работы и принятия обоснованных решений. Ваша цель — реализовать стратегии партиционирования и квазиранжирования для повышения производительности запросов и организации данных в экосистеме Hadoop.

Создайте партиционированную таблицу

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

Во - первых, убедитесь, что вы вошли под пользователем hadoop, выполнив следующую команду в терминале:

su - hadoop

Затем запустите Hive - оболочку, выполнив следующую команду:

hive

Теперь создайте базу данных, если она не существует:

CREATE DATABASE IF NOT EXISTS spaceport;

Переключитесь на базу данных spaceport:

USE spaceport;

Далее создайте партиционированную таблицу для протоколов полетов:

CREATE TABLE flight_logs (
    flight_id STRING,
    spacecraft STRING,
    departure_time TIMESTAMP,
    arrival_time TIMESTAMP,
    destination STRING
)
PARTITIONED BY (year INT, month INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Наконец, выйдите из Hive с помощью следующей команды:

EXIT;

В вышеприведенном коде мы создаем партиционированную таблицу flight_logs с колонками для идентификатора полета, космического корабля, времени отправления, времени прибытия и пункта назначения. Таблица партиционирована по колонкам year и month, что означает, что данные будут организованы в отдельные партиции в зависимости от значений года и месяца.

Загрузите данные в партиционированную таблицу

В этом шаге вы загрузите примерные данные о протоколах полетов в партиционированную таблицу, которую вы создали на предыдущем шаге.

Во - первых, создайте некоторые файлы с примерами данных о протоколах полетов:

cat > /home/hadoop/flight_logs_1.txt << EOF
FL001,Andromeda Explorer,2023-06-01 08:00:00,2023-06-02 12:30:00,Andromeda Galaxy
FL002,Milky Way Voyager,2023-06-15 10:15:00,2023-06-16 06:45:00,Milky Way Galaxy
EOF

cat > /home/hadoop/flight_logs_2.txt << EOF
FL003,Cygnus Cruiser,2023-07-20 14:30:00,2023-07-21 09:00:00,Cygnus Constellation
FL004,Orion Shuttle,2023-07-25 18:00:00,2023-07-26 03:15:00,Orion Nebula
EOF

Затем загрузите данные в партиционированную таблицу:

hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/flight_logs_1.txt' INTO TABLE spaceport.flight_logs PARTITION (year=2023, month=6);"
hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/flight_logs_2.txt' INTO TABLE spaceport.flight_logs PARTITION (year=2023, month=7);"

В вышеприведенном коде мы сначала создаем некоторые файлы с примерами данных о протоколах полетов flight_logs_1.txt и flight_logs_2.txt с четырьмя записями о полетах. Затем мы используем команду LOAD DATA в Hive для загрузки данных в партиционированную таблицу flight_logs. Мы загружаем данные дважды, один раз для партиции year = 2023 и month = 6, и один раз для партиции year = 2023 и month = 7.

Создайте квазиранжированную таблицу

В этом шаге вы создадите квазиранжированную таблицу для хранения данных грузовых манифестов, что повысит производительность запросов для запросов, в которых используется столбец cargo_type.

Во - первых, запустите Hive - оболочку, выполнив следующую команду:

hive

Затем переключитесь на базу данных spaceport:

USE spaceport;

Теперь создайте квазиранжированную таблицу для грузовых манифестов:

CREATE TABLE cargo_manifests (
    manifest_id STRING,
    cargo_type STRING,
    destination STRING,
    weight DOUBLE,
    volume DOUBLE
)
CLUSTERED BY (cargo_type) INTO 4 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;

Наконец, выйдите из Hive с помощью следующей команды:

EXIT;

В вышеприведенном коде мы создаем квазиранжированную таблицу cargo_manifests с колонками для идентификатора манифеста, типа груза, пункта назначения, веса и объема. Таблица квазиранжирована (кластеризована) по столбцу cargo_type на 4 квазиранжирования, чтобы повысить производительность запросов для запросов, в которых используется столбец cargo_type.

Загрузите данные в квазиранжированную таблицу

В этом шаге вы загрузите примерные данные грузовых манифестов в квазиранжированную таблицу, которую вы создали на предыдущем шаге.

Во - первых, создайте файл с примерами данных грузовых манифестов

cat > /home/hadoop/cargo_manifests.txt << EOF
CM001,Electronics,Andromeda Galaxy,5.2,2.1
CM002,Machinery,Milky Way Galaxy,12.8,8.5
CM003,Food,Cygnus Constellation,3.1,1.5
CM004,Electronics,Orion Nebula,7.9,3.2
EOF

Затем загрузите данные в квазиранжированную таблицу

hive -e "LOAD DATA LOCAL INPATH '/home/hadoop/cargo_manifests.txt' OVERWRITE INTO TABLE spaceport.cargo_manifests;"

В вышеприведенном коде мы сначала создаем файл с примерами данных грузовых манифестов cargo_manifests.txt с четырьмя записями о грузах. Затем мы используем команду LOAD DATA в Hive для загрузки данных в квазиранжированную таблицу cargo_manifests.

Резюме

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

Далее мы загрузили примерные данные о протоколах полетов в партиционированную таблицу с использованием команды LOAD DATA, убедившись, что данные корректно партиционированы по году и месяцу.

Затем мы создали квазиранжированную таблицу для хранения данных грузовых манифестов, квазиранжированную по столбцу cargo_type. Квазиранжирование помогает повысить производительность запросов, разделяя данные на более мелкие, управляемые части на основе конкретного столбца.

Наконец, мы загрузили примерные данные грузовых манифестов в квазиранжированную таблицу с использованием команды LOAD DATA.

Во время всего этого практического занятия мы узнали важность партиционирования и квазиранжирования в экосистеме Hadoop для оптимизации хранения данных, производительности запросов и общего управления данными. Реализация этих методов позволяет обеспечить эффективные операции в Агенстве по межзвездным космопортам и принимать обоснованные решения на основе обширных объемов данных.