2015-11-06 2 views
0

У меня 7 узлов данных следующих размеров хранения:Hadoop репликации скорость передачи данных размер блока для 1 ТБ данных

  • DataNode 1: 250GB
  • DataNode 2: 250GB
  • DataNode 3: 250GB
  • DataNode 4: 45gb
  • DataNode 5: 250gb
  • DataNode 6: 250GB
  • DataNode 7: 250 gb

На узле данных 4 у меня есть 1 ТБ данных, смонтированных на/данных. Поэтому я начал операцию put (hadoop fs -put /data /user/hadoop-user/) на datanode 4. Когда хранилище исчерпано, он продолжил работу на других узлах данных с большим объемом памяти, но скорость очень медленная.

Теперь мои вопросы:

  1. Есть ли способ увеличить скорость размера блока put операции? От here говорится: «DataNode начинает получать данные небольшими порциями (4 КБ)». Это кажется слишком маленьким для данных 1 ТБ. Есть ли способ увеличить это?
  2. Если я остановлю операцию put, чтобы увеличить скорость блокировки (если есть), возобновит ли она с того места, где она остановилась?

ответ

0

Ответы:

  • да - читайте о dfs.stream-buffer-size, dfs.bytes-per-checksum и dfs.client-write-packet-size - тем, что сам пакет больше, и я был бы осторожен с этими настройками - скорее всего, проблема где-то еще
  • Собственный ответ - нет - он не возобновится (но посмотрите на вопросы), он не возобновит файлы, которые были в процессе, но он не может перезаписывать файлы, которые уже полностью загружены

Вопросы:

  • Какая у вас настройка сети?
  • Каков ваш коэффициент репликации?
  • Каков ваш минимальный коэффициент репликации?
  • какая версия hadoop?
  • Что это значит, что скорость медленная?
  • - это данные, которые вы хотите записать как один файл или несколько файлов?
  • Вы можете монтировать данные на нескольких узлах?

Дополнительно:

  • вы можете рассмотреть distcp и обеспечить опалить карту только работу - с задачей запуска на узле с данными - которая дает вам обновление и повторные попытки и т.д. (не пробовал такой сценарий самого tho)
Смежные вопросы