Массовая загрузка HBase порождает большое количество задач редуктора - любой обходной путь - PullRequest
1 голос
/ 14 февраля 2011

Массовая загрузка HBase (с использованием вспомогательного метода configureIncrementalLoad) настраивает задание на создание столько задач-восстановителей, сколько областей в таблице hbase.Таким образом, если есть несколько сотен регионов, то эта работа породит несколько сотен задач редуктора.Это может стать очень медленным на небольшом кластере.

Возможен ли обходной путь с помощью MultipleOutputFormat или чего-то еще?

Спасибо

Ответы [ 2 ]

1 голос
/ 15 марта 2011
  1. Разделение этапа сокращения по регионам дает вам долгосрочную выгоду.Вы получаете данные о местонахождении, как только импортированные данные находятся в сети.Вы также можете определить, когда регион был сбалансирован по нагрузке на другой сервер.Я бы не стал так быстро переходить к более грубой детализации.
  2. Поскольку на этапе сокращения идет запись в один файл, вы должны иметь возможность установить NumReduceTasks (# жестких дисков).Это может ускорить его еще больше.
  3. Очень легко получить узкое место в сети.Убедитесь, что вы сжимаете ваш HFile и ваши промежуточные данные MR.

      job.getConfiguration().setBoolean("mapred.compress.map.output", true);
      job.getConfiguration().setClass("mapred.map.output.compression.codec",
          org.apache.hadoop.io.compress.GzipCodec.class,
          org.apache.hadoop.io.compress.CompressionCodec.class);
      job.getConfiguration().set("hfile.compression",
          Compression.Algorithm.LZO.getName());
    
  4. Размер вашего импорта данных может быть достаточно мал, чтобы вы могли использовать формат на основе Put.Это вызовет нормальный API HTable.Put и пропустит фазу редуктора.См. TableMapReduceUtil.initTableReducerJob (таблица, ноль, задание).

0 голосов
/ 02 декабря 2013

Когда мы используем HFileOutputFormat, он переопределяет количество редукторов независимо от того, что вы установили.Количество редукторов равно числу регионов в этой таблице HBase.Поэтому уменьшите количество регионов, если хотите контролировать количество редукторов.

Здесь вы найдете пример кода :

Надеюсь, это будет полезно1007 *

...