Как изменить данные в файле 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. Проверка установки JAVA. Откройте командную строку от имени администратора и напишите команду как –
- Шаг 2. Проверка установки Hadoop.
- Шаг 3. Загрузка Hive.
- Шаг 4. Извлечение и настройка Hive.
- Шаг 5. Установка MySQL и настройка HIVE.
- Шаг 6. Запустите HIVE.
- Шаг 7. Проверка установки HIVE.
Как использовать Hive в Windows 10?
Установка Hive в Windows 10
- Введение в Hive.
- Установка улья.
- ШАГ – 1. Извлеките файл Hive.
- ШАГ 2. Извлеките файл Derby.
- ШАГ – 3: Перемещение улья. XML-файл.
- ШАГ – 4. Перемещение библиотек Derby.
- ШАГ – 5. Настройте переменные среды.
- ШАГ – 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.
Читайте также: