Данные Hive, HDFS в локальную систему и обратно

Я новичок в администрировании Hadoop :)

У меня есть кластер Apache Hadoop 2.4.1 из 8 узлов, используется DFS 16 ТБ (не удалось найти фактор репликации ни в одном из файлов xml), Hive 0.13 с хранилищем метаданных MySQL.

Цель: сделать резервную копию данных кластера на диск NFS, удалить кластер, установить другой дистрибутив (Cloudera, Hortonworks) и перезагрузить данные с диска NFS в этот новый кластер.

Есть две таблицы Hive размером 956 ГБ (примерно 9 миллиардов строк) и 32 ГБ (несколько миллионов строк) и несколько других таблиц меньшего размера.

Проблемы / вопросы:

  1. Как сделать резервную копию всего кластера на диске NFS? В настоящее время у меня есть независимая машина (не часть кластера) с установленным диском NFS
  2. Самый грубый способ - экспортировать таблицы в файлы csv / tsv на диск NFS и загрузить их в новый кластер, когда он будет готов, но экспорт этих больших таблиц в csv / tsv вызывает у меня дискомфорт, но я не мог придумать другого пути
  3. Насколько я понимаю, distcp работает на уровне HDFS, поэтому я не уверен, смогу ли я использовать его для более быстрого копирования из HDFS в NFS и NFS в новую HDFS. Это потому, что тогда мне также нужно сделать резервную копию метаданных Hive, а затем заставить их работать с новым дистрибутивом, что может быть невозможно.

Как мне продолжить эту миграцию или хотя бы перенос данных из HDFS в NFS и обратно?


person Kaliyug Antagonist    schedule 05.02.2015    source источник


Ответы (2)


Вот шаги, которым мы следуем:

  1. Создать новый кластер hadoop
  2. Скопируйте данные в новый кластер с помощью distcp
  3. Отбросьте старый кластер

Если это не вариант

  1. Напишите сценарий оболочки, который может копировать данные с помощью hadoop fs -get
  2. Убедитесь, что вы применяете логику таким образом, что один и тот же сценарий оболочки можно запускать параллельно, используя nohup, принимая каталог HDFS или шаблон файла в качестве параметров.
person Durga Viswanath Gadiraju    schedule 01.12.2015

Используйте команду Hadoop fs -get для передачи файла на NAS. Предполагается, что NAS установлен на одном из узлов HADoop. Для метаданных HIVE выполните команду "SHOW CREATE TABLE tablename", чтобы получить оператор create, который можно запустить в новом кластере.

Несмотря на то, что описанные выше шаги соответствуют вашей цели. Рекомендуемый вариант - скопировать данные из существующего в новый кластер напрямую с помощью DISTCP. и сценарии DDL для куста

person Abraham    schedule 26.04.2017