Как изменить данные в файле hdfs

Обновлено: 21.11.2024

В этой главе описывается, как использовать Oracle SQL Connector для распределенной файловой системы Hadoop (HDFS) для облегчения доступа к данным между Hadoop и базой данных Oracle.

Эта глава состоит из следующих разделов:

2.1 О коннекторе Oracle SQL для HDFS

Используя Oracle SQL Connector для HDFS, вы можете использовать базу данных Oracle для доступа и анализа данных, находящихся в Apache Hadoop, в следующих форматах:

Файлы Data Pump в HDFS

Текстовые файлы с разделителями в HDFS

Текстовые файлы с разделителями в таблицах Apache Hive

Для других форматов файлов, таких как файлы JSON, вы можете подготовить ввод в виде текста с разделителями в новой таблице Hive, а затем использовать Oracle SQL Connector для HDFS. Поддерживаются многораздельные таблицы Hive, что позволяет вам представлять подмножество разделов таблицы Hive в базе данных Oracle, а не всю таблицу Hive.

Oracle SQL Connector для HDFS использует внешние таблицы и представления базы данных, чтобы предоставить Oracle Database доступ на чтение к таблицам Hive, а также к текстовым файлам с разделителями и файлам Data Pump в HDFS. Внешняя таблица — это объект базы данных Oracle, который идентифицирует расположение данных за пределами базы данных. Oracle Database получает доступ к данным, используя метаданные, предоставленные при создании внешней таблицы. Oracle SQL Connector для HDFS создает представления базы данных по внешним таблицам для поддержки доступа к секционированным таблицам Hive. Запрашивая внешние таблицы или представления, вы можете получить доступ к данным, хранящимся в таблицах HDFS и Hive, как если бы эти данные хранились в таблицах базы данных Oracle.

Чтобы создать эти объекты в базе данных Oracle, вы используете инструмент командной строки ExternalTable, поставляемый с Oracle SQL Connector для HDFS. Вы предоставляете ExternalTable информацию об источнике данных в Hadoop и о вашей схеме в базе данных Oracle. Вы предоставляете эту информацию либо в качестве параметров команды ExternalTable, либо в XML-файле. Инструмент командной строки ExternalTable можно использовать как из оболочки, так и из SQL Developer.

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

Вы также можете выполнять массовую загрузку данных в таблицы базы данных Oracle с помощью SQL. Вы можете предпочесть, чтобы данные находились в базе данных Oracle (либо все, либо только выбранные), если они регулярно запрашиваются. Oracle SQL Connector для HDFS функционирует как клиент Hadoop, работающий в базе данных Oracle, и использует внешний препроцессор таблиц hdfs_stream для доступа к данным в HDFS. В Oracle Shell для загрузчиков Hadoop есть команды для создания внешней таблицы и выполнения массовой загрузки за один шаг.

В этой статье рассматриваются основные команды распределенной файловой системы Hadoop (HDFS) в Linux. Вы узнаете, как создавать и перечислять каталоги, перемещать, удалять, читать файлы и многое другое.

Командная строка Hadoop FS

Командная строка Hadoop FS — это простой способ доступа и взаимодействия с HDFS. Ниже приведены некоторые основные команды HDFS в Linux, включая такие операции, как создание каталогов, перемещение файлов, удаление файлов, чтение файлов и просмотр каталогов.

Чтобы использовать команды HDFS, запустите службы Hadoop с помощью следующей команды:

Чтобы проверить, запущен ли Hadoop:

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

мкдир:

Чтобы создать каталог, аналогично команде Unix ls.

Параметры:
-p : не срабатывать, если каталог уже существует

$ hadoop fs -mkdir [-p]

Список каталогов, присутствующих в определенном каталоге в HDFS, аналогичен команде Unix ls. Команду -lsr можно использовать для рекурсивного вывода списка каталогов и файлов.

Параметры:
-d : перечислить каталоги в виде простых файлов
-h : форматировать размеры файлов в удобочитаемом виде вместо количества байтов
-R : рекурсивно перечислить содержимое каталогов

$ hadoop fs -ls [-d] [-h] [-R]

copyFromLocal:

Скопируйте файлы из локальной файловой системы в HDFS аналогично команде -put. Эта команда не будет работать, если файл уже существует. Чтобы перезаписать место назначения, если файл уже существует, добавьте в команду флаг -f.

Параметры:

-p : сохраняет время доступа и модификации, владельца и режим
-f : перезаписывает место назначения

$ hadoop fs -copyFromLocal [-f] [-p] …

копировать в локальное:

Скопируйте файлы из HDFS в локальную файловую систему, аналогично команде -get.

$ hadoop fs -copyToLocal [-p] [-ignoreCrc] [-crc] .

Отображение содержимого файла аналогично команде cat в Unix.

$ hadoop fs -cat /user/data/sampletext.txt

Скопируйте файлы из одного каталога в другой в HDFS, аналогично команде Unix cp.

$ hadoop fs -cp /user/data/sample1.txt /user/hadoop1
$ hadoop fs -cp /user/data/sample2.txt /user/test/in1

Перемещение файлов из одного каталога в другой в HDFS аналогично команде Unix mv.

$ hadoop fs -mv /user/hadoop/sample1.txt /user/text/

Удаление файла из HDFS аналогично команде Unix rm. Эта команда не удаляет каталоги. Для рекурсивного удаления используйте команду -rm -r .

Параметры:
-r : рекурсивно удалить каталоги и файлы
-skipTrash : обойти мусор и немедленно удалить источник
-f : указать, если файла нет
-rR : рекурсивно удалить каталоги

$ hadoop fs -mv /user/hadoop/sample1.txt /user/text/

слияние:

Объединить список файлов в одном каталоге HDFS в один файл в локальной файловой системе. Одна из самых важных и полезных команд при попытке прочитать содержимое выходных файлов задания map reduce или задания свиньи.

$ hadoop fs -getmerge /user/data

настройка:

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

Параметры:
-w : запрос команды ожидания завершения репликации (потенциально может занять много времени)
-r : принять для обратной совместимости и не имеет никакого эффекта

$ hadoop fs -setrep [-R] [-w]

touchz:

Создает пустой файл в HDFS.

URI-адрес $ hadoop fs -touchz

Проверить наличие пустого файла в файле HDFS, а также определить, является ли он каталогом или нет.

Параметры:
-w : запрос команды ожидания завершения репликации (потенциально может занять много времени)
-r : принять для обратной совместимости и не имеет никакого эффекта

$ hadoop fs -setrep [-R] [-w]

дописать к файлу:

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

$ hadoop fs -appendToFile

chmod:

Изменить права доступа к файлу аналогично команде оболочки Linux, но с некоторыми исключениями.

То же, что и режим, используемый для команды оболочки, но распознаются только буквы «rwxXt»

Режим указывается 3 или 4 цифрами. Невозможно указать только часть режима, в отличие от команды оболочки.

Параметры:
-R : Рекурсивное изменение файлов

чаун:

Изменить владельца и группу файла, аналогично команде оболочки Linux, но с несколькими исключениями.

Параметры:
-R : Рекурсивное изменение файлов

$ hadoop fs -chown [-R] [ВЛАДЕЛЕЦ][:[ГРУППА]] ПУТЬ

Показать емкость (свободное и используемое пространство) файловой системы. Состояние корневых разделов предоставляется, если файловая система состоит из нескольких разделов и путь не указан.

Параметры:
-h : форматировать размеры файлов в удобочитаемом виде, а не в байтах

Показать размер каждого файла в каталоге.

Параметры:
-s : показать общий размер сводки
-h : отформатировать размеры файлов в удобочитаемом виде, а не в байтах

Показать последний 1 КБ файла.

Параметры:
-f : показывать добавленные данные по мере роста файла

Файлы HDFS являются неизменяемыми, то есть вы не можете редактировать файл после того, как он был записан. Hive добавлен совсем недавно, и Pig (пока) не предоставляет команду обновления, а тем более оператор слияния. Когда-нибудь они будут, но пока вы должны разработать свои собственные алгоритмы. К счастью, есть несколько шаблонов, которые можно применить.

Можем ли мы обновить внешнюю таблицу в улье?

Существует множество способов обновления таблиц Hive, например: Используйте временную таблицу Hive для обновления таблицы. Установите TBLPROPERTIES, чтобы включить ACID-транзакции в таблицах Hive. Используйте HBase для обновления записей и создания внешней таблицы Hive для отображения данных таблицы HBase.

Какая последняя версия Hive?

Какая версия улья?

The Hive — это избранный сервер Minecraft на платформе Bedrock Edition. В настоящее время у него самое большое количество одновременных игроков для Bedrock в истории (39 520 по состоянию на 2020 год). В настоящее время есть 20 игр, 2 сезонные игры и 2 игры LTM (с ограниченным временем).

Легко ли освоить Hive?

Pig и Hive очень просты в освоении и программировании, что позволяет специалистам по SQL легко освоить свои навыки работы на платформе Hadoop.

Является ли hive механизмом SQL?

Apache Hive – это система распределенного хранилища данных, предоставляющая возможности SQL-запросов. SQL-подобный механизм запросов, разработанный для хранилищ больших объемов данных. Поддерживается несколько форматов файлов.

Как подключиться к кусту в Windows?

Подключиться к Hive 2. x в Windows

Как использовать Hive в Windows?

  1. Шаг 1. Проверка установки JAVA. Откройте командную строку от имени администратора и напишите команду как –
  2. Шаг 2. Проверка установки Hadoop.
  3. Шаг 3. Загрузка Hive.
  4. Шаг 4. Извлечение и настройка Hive.
  5. Шаг 5. Установка MySQL и настройка HIVE.
  6. Шаг 6. Запустите HIVE.
  7. Шаг 7. Проверка установки HIVE.

Как использовать Hive в Windows 10?

Установка Hive в Windows 10

  1. Введение в Hive.
  2. Установка улья.
  3. ШАГ – 1. Извлеките файл Hive.
  4. ШАГ 2. Извлеките файл Derby.
  5. ШАГ – 3: Перемещение улья. XML-файл.
  6. ШАГ – 4. Перемещение библиотек Derby.
  7. ШАГ – 5. Настройте переменные среды.
  8. ШАГ – 6. Настройте системные переменные.

Как открыть хранилище метаданных куста в Windows?

Запуск сервера Hive Thrift. Запустите сервер hive Thrift с помощью приведенной ниже команды, а запущенный сервисный процесс можно проверить с помощью команды $ jps -lm. т.е. приведенная выше конфигурация локального хранилища метаданных успешно работает с автономной базой данных MySQL. Успешный запуск службы hive создаст базу данных хранилища метаданных, указанную в hive-site.

В чем разница между Hive и HDFS?

Hadoop: Hadoop — это платформа или программное обеспечение, которое было изобретено для управления огромными данными или большими данными. Hadoop используется для хранения и обработки больших данных, распределенных по кластеру стандартных серверов. Hive — это инструмент на основе SQL, который использует Hadoop для обработки данных.

Цель рецепта: Как изменить владельца файлов в HDFS?

В этом рецепте показано, как изменить владельца файлов в HDFS.

Предпосылки:

Прежде чем продолжить выполнение рецепта, убедитесь, что Hadoop с одним узлом установлен на вашем локальном экземпляре EC2. Если он еще не установлен, перейдите по ссылке ниже, чтобы сделать то же самое.

Шаги по настройке среды:

  • В AWS создайте экземпляр EC2 и войдите в Cloudera Manager, используя общедоступный IP-адрес, указанный в экземпляре EC2. Войдите в замазку/терминал и проверьте, установлена ​​ли HDFS. Если он не установлен, перейдите по приведенным выше ссылкам для установки.
  • Введите «<your public IP>:7180» в веб-браузере и войдите в Cloudera Manager, где вы сможете проверить, установлен ли Hadoop.
  • Если они не отображаются в кластере Cloudera, вы можете добавить их, нажав «Добавить службы» в кластере, чтобы добавить необходимые службы в свой локальный экземпляр.

Смена владельца файлов в HDFS:

Во-первых, переключитесь на пользователя root с пользователя ec2 с помощью команды «sudo -i». И давайте создадим каталог в HDFS, изменив его как пользователя HDFS. Команды для этого перечислены ниже.

sudo -i
su - hdfs

Давайте создадим каталог «test-dir» в hdfs с помощью команды mkdir. И проверьте, является ли владельцем каталога «hdfs», как требуется. Выполните следующие команды, чтобы создать каталог и перечислить каталоги в hdfs, чтобы проверить владельца вновь созданного каталога.

hadoop fs -mkdir /user/test-dir/
hadoop fs -ls /user

Чтобы отправить файл из любого каталога в каталог hdfs, владелец внутри hdfs должен быть изменен на каталог, из которого мы отправляем файл. Например: если вам нужно отправить файл от пользователя root в каталог «test-dir» внутри hdfs, владелец этого каталога внутри hdfs должен быть изменен на root. Выполните следующую команду, чтобы изменить владельца каталога.

hadoop fs -chown root:supergroup /user/test-dir

После изменения перечислите файлы в «пользователе», чтобы проверить, изменился ли владелец test-dir с hdfs на root.

Amazon EMR и Hadoop предоставляют различные файловые системы, которые можно использовать при обработке шагов кластера. Вы указываете, какую файловую систему использовать с помощью префикса URI, используемого для доступа к данным. Например, s3://DOC-EXAMPLE-BUCKET1/path ссылается на корзину Amazon S3 с использованием EMRFS. В следующей таблице перечислены доступные файловые системы с рекомендациями по использованию каждой из них.

Amazon EMR и Hadoop обычно используют две или более из следующих файловых систем при обработке кластера. HDFS и EMRFS — это две основные файловые системы, используемые в Amazon EMR.

Начиная с версии Amazon EMR 5.22.0, Amazon EMR использует исключительно AWS Signature версии 4 для аутентификации запросов к Amazon S3. Более ранние версии выпуска Amazon EMR в некоторых случаях используют AWS Signature версии 2, если только в примечаниях к выпуску не указано, что используется исключительно Signature версии 4. Дополнительную информацию см. в разделах Аутентификация запросов (AWS Signature версии 4) и Аутентификация запросов (AWS Signature версии 2) в Руководстве разработчика Amazon Simple Storage Service.

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

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

EMRFS – это реализация файловой системы Hadoop, используемая для чтения и записи обычных файлов из Amazon EMR непосредственно в Amazon S3. EMRFS обеспечивает удобство хранения постоянных данных в Amazon S3 для использования с Hadoop, а также предоставляет такие функции, как шифрование на стороне сервера Amazon S3, согласованность чтения после записи и согласованность списков.

Ранее в Amazon EMR использовались файловые системы s3n и s3a. Хотя оба варианта по-прежнему работают, мы рекомендуем вам использовать схему URI s3 для обеспечения наилучшей производительности, безопасности и надежности.

Локальная файловая система относится к локально подключенному диску. При создании кластера Hadoop каждый узел создается из экземпляра EC2, который поставляется с предварительно настроенным блоком предварительно подключенного дискового хранилища, называемым хранилищем экземпляров. Данные о томах хранилища экземпляров сохраняются только в течение срока службы его экземпляра EC2. Тома хранилища экземпляров идеально подходят для хранения постоянно изменяющихся временных данных, таких как буферы, кэши, временные данные и другой временный контент. Дополнительную информацию см. в разделе Хранилище инстансов Amazon EC2.

Локальная файловая система используется HDFS, но Python также запускается из локальной файловой системы, и вы можете хранить дополнительные файлы приложений на томах хранилища экземпляров.

Блочная файловая система Amazon S3 — это устаревшая система хранения файлов. Мы настоятельно не рекомендуем использовать эту систему.

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

Доступ к файловым системам

Вы указываете, какую файловую систему использовать, префиксом универсального идентификатора ресурса (URI), используемого для доступа к данным. Следующие процедуры иллюстрируют, как обращаться к нескольким различным типам файловых систем.

Для доступа к локальной HDFS

Укажите префикс hdfs:/// в URI. Amazon EMR разрешает пути, в URI которых не указан префикс, к локальной HDFS. Например, оба следующих URI разрешаются в одно и то же место в HDFS.

Для доступа к удаленной HDFS

Включите IP-адрес главного узла в URI, как показано в следующих примерах.

Для доступа к Amazon S3

Используйте префикс s3://.

Для доступа к блочной файловой системе Amazon S3

Используйте только для устаревших приложений, которым требуется блочная файловая система Amazon S3. Для доступа или хранения данных в этой файловой системе используйте префикс s3bfs:// в URI.

Блочная файловая система Amazon S3 – это устаревшая файловая система, которая использовалась для поддержки загрузки в Amazon S3 файлов размером более 5 ГБ. Благодаря функции многокомпонентной загрузки, предоставляемой Amazon EMR через AWS Java SDK, вы можете загружать файлы размером до 5 ТБ в собственную файловую систему Amazon S3, а блочная файловая система Amazon S3 устарела.

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

Читайте также: