Как создать и загрузить файл в HDFS

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

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

Введение

Распределенная файловая система Hadoop (Hadoop Distributed File System, HDFS) является важной частью экосистемы Hadoop, предоставляя надежное и масштабируемое решение для хранения данных для приложений больших данных. В этом руководстве мы расскажем вам, как создавать файлы и загружать их в HDFS, чтобы вы могли эффективно управлять своими данными в среде Hadoop.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHDFSGroup(["Hadoop HDFS"]) hadoop/HadoopHDFSGroup -.-> hadoop/hdfs_setup("HDFS Setup") hadoop/HadoopHDFSGroup -.-> hadoop/fs_cat("FS Shell cat") hadoop/HadoopHDFSGroup -.-> hadoop/fs_ls("FS Shell ls") hadoop/HadoopHDFSGroup -.-> hadoop/fs_mkdir("FS Shell mkdir") hadoop/HadoopHDFSGroup -.-> hadoop/fs_put("FS Shell copyToLocal/put") hadoop/HadoopHDFSGroup -.-> hadoop/fs_get("FS Shell copyFromLocal/get") subgraph Lab Skills hadoop/hdfs_setup -.-> lab-415860{{"Как создать и загрузить файл в HDFS"}} hadoop/fs_cat -.-> lab-415860{{"Как создать и загрузить файл в HDFS"}} hadoop/fs_ls -.-> lab-415860{{"Как создать и загрузить файл в HDFS"}} hadoop/fs_mkdir -.-> lab-415860{{"Как создать и загрузить файл в HDFS"}} hadoop/fs_put -.-> lab-415860{{"Как создать и загрузить файл в HDFS"}} hadoop/fs_get -.-> lab-415860{{"Как создать и загрузить файл в HDFS"}} end

Введение в Распределенную файловую систему Hadoop (Hadoop Distributed File System, HDFS)

Распределенная файловая система Hadoop (Hadoop Distributed File System, HDFS) - это распределенная файловая система, разработанная для хранения и обработки больших наборов данных на кластере из дешевого оборудования. Она является основным компонентом экосистемы Apache Hadoop и широко используется в приложениях для обработки больших данных.

Что такое HDFS?

HDFS - это высокодоступная и масштабируемая файловая система, которая обеспечивает высокую пропускную способность при доступе к данным приложений. Она разработана для работы на дешевом оборудовании и может обрабатывать хранение и обработку больших наборов данных. HDFS использует архитектуру "мастер - слейв", где мастер - узел называется NameNode, а слейв - узлы - DataNode.

Основные характеристики HDFS

  • Масштабируемость: HDFS может обрабатывать петабайты данных и тысячи узлов в одном кластере.
  • Тolerантность к сбоям: HDFS автоматически реплицирует данные на нескольких DataNode, обеспечивая доступность данных даже при неисправностях оборудования.
  • Высокая пропускная способность: HDFS оптимизирована для пакетной обработки и может обеспечить высокую пропускную способность при передаче больших объемов данных.
  • Совместимость: HDFS совместима с широким спектром форматов данных и может быть интегрирована с различными инструментами и фреймворками для обработки больших данных.

Архитектура HDFS

Архитектура HDFS состоит из следующих основных компонентов:

graph TD NameNode -- Manages file system namespace --> DataNode DataNode -- Stores and retrieves data --> Client Client -- Interacts with --> NameNode
  1. NameNode: NameNode - это мастер - узел, который управляет пространством имен файловой системы, включая метаданные файлов и расположение блоков данных по всему кластеру.
  2. DataNode: DataNode - это слейв - узлы, которые хранят фактические блоки данных и выполняют операции с данными, такие как чтение, запись и репликация данных.
  3. Клиент: Клиент - это приложение или пользователь, который взаимодействует с кластером HDFS для выполнения операций с файлами, таких как создание, чтение и запись файлов.

Примеры использования HDFS

HDFS широко используется в различных приложениях для обработки больших данных, включая:

  • Пакетная обработка: HDFS хорошо подходит для пакетной обработки больших наборов данных, таких как анализ журналов, скрапинг веб - страниц и научные вычисления.
  • Дата - вэринг: HDFS часто используется в качестве слоя хранения для решений по дата - вэрингу, предоставляя масштабируемый и экономически эффективный способ хранения и обработки больших объемов структурированных и неструктурированных данных.
  • Машинное обучение и ИИ: HDFS является популярным выбором для хранения и обработки больших наборов данных, необходимых для обучения моделей машинного обучения и ИИ.
  • Потоковая обработка данных: HDFS может использоваться в сочетании с другими компонентами экосистемы Hadoop, такими как Apache Spark или Apache Flink, для обработки реального или почти реального времени потоковых данных.

Создание файла в HDFS

Для создания файла в HDFS вы можете использовать командную строку Hadoop (CLI) или Java API HDFS. В этом разделе мы покажем, как создать файл в HDFS с помощью командной строки Hadoop.

Предварительные требования

Прежде чем вы сможете создать файл в HDFS, вам нужно иметь работающий кластер Hadoop и необходимые разрешения для взаимодействия с файловой системой. Убедитесь, что на вашей системе установлена и настроена командная строка Hadoop.

Создание файла в HDFS с помощью командной строки Hadoop

  1. Откройте терминал на системе Ubuntu 22.04.
  2. Запустите сервисы Hadoop, выполнив следующие команды:
sudo service hadoop-namenode start
sudo service hadoop-datanode start
  1. Используйте команду hdfs dfs для создания файла в HDFS. Базовый синтаксис выглядит так:
hdfs dfs -put <local_file_path> <hdfs_file_path>

Здесь <local_file_path> - это путь к файлу на вашей локальной системе, а <hdfs_file_path> - это путь, где вы хотите создать файл в HDFS.

Например, чтобы создать файл с именем example.txt в директории HDFS /user/username/, выполните следующую команду:

hdfs dfs -put /path/to/local/example.txt /user/username/example.txt
  1. Проверьте, что файл был создан в HDFS, выполнив следующую команду:
hdfs dfs -ls /user/username/

Это выведет список файлов и директорий в директории /user/username/, включая только что созданный файл example.txt.

Создание файла в HDFS с помощью Java API

В качестве альтернативы вы можете создать файл в HDFS программно, используя Java API HDFS. Вот пример фрагмента кода на Java:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;

public class CreateFileInHDFS {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create("hdfs://namenode:8020"), conf);

        Path filePath = new Path("/user/username/example.txt");
        fs.create(filePath).close();

        System.out.println("File created in HDFS: " + filePath);
    }
}

В этом примере мы создаем новый файл с именем example.txt в директории /user/username/ кластера HDFS.

Загрузка файла в HDFS

После создания файла в HDFS следующим шагом является его загрузка в кластер HDFS. Вы можете загружать файлы в HDFS с помощью командной строки Hadoop (Hadoop CLI) или Java API HDFS. В этом разделе мы покажем оба метода.

Загрузка файла в HDFS с помощью командной строки Hadoop

  1. Откройте терминал на системе Ubuntu 22.04.
  2. Запустите сервисы Hadoop, выполнив следующие команды:
sudo service hadoop-namenode start
sudo service hadoop-datanode start
  1. Используйте команду hdfs dfs для загрузки файла в HDFS. Базовый синтаксис выглядит так:
hdfs dfs -put <local_file_path> <hdfs_file_path>

Здесь <local_file_path> - это путь к файлу на вашей локальной системе, а <hdfs_file_path> - это путь, куда вы хотите загрузить файл в HDFS.

Например, чтобы загрузить файл с именем example.txt с локальной системы в директорию HDFS /user/username/, выполните следующую команду:

hdfs dfs -put /path/to/local/example.txt /user/username/example.txt
  1. Проверьте, что файл был загружен в HDFS, выполнив следующую команду:
hdfs dfs -ls /user/username/

Это выведет список файлов и директорий в директории /user/username/, включая загруженный файл example.txt.

Загрузка файла в HDFS с помощью Java API

В качестве альтернативы вы можете загрузить файл в HDFS программно, используя Java API HDFS. Вот пример фрагмента кода на Java:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URI;

public class UploadFileToHDFS {
    public static void main(String[] args) throws IOException {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(URI.create("hdfs://namenode:8020"), conf);

        Path localFilePath = new Path("/path/to/local/example.txt");
        Path hdfsFilePath = new Path("/user/username/example.txt");

        fs.copyFromLocalFile(localFilePath, hdfsFilePath);

        System.out.println("File uploaded to HDFS: " + hdfsFilePath);
    }
}

В этом примере мы загружаем файл example.txt с локальной системы в директорию /user/username/ в кластере HDFS.

Заключение

Следуя шагам, описанным в этом руководстве по Hadoop, вы научитесь создавать файлы и загружать их в Распределенную файловую систему Hadoop (Hadoop Distributed File System, HDFS). Эти знания позволят вам эффективно хранить и получать доступ к данным в своих приложениях на основе Hadoop, раскрывая весь потенциал экосистемы Hadoop.