Разделить файл меньше, чем значение по умолчанию, не является эффективным решением. Спайтинг в основном используется при работе с большими наборами данных. Значение по умолчанию само по себе имеет небольшой размер, поэтому не стоит снова его разделять.
Я бы порекомендовал выполнить следующую конфигурацию перед вашим запросом. Вы можете применить ее на основе ваших входных данных.
set hive.merge.mapfiles=false;
set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
set mapred.map.tasks = XX;
Если вы также хотите назначить номер редуктора, вы можете использовать приведенную ниже конфигурацию
set mapred.reduce.tasks = XX;
Обратите внимание, что в Hadoop 2 (YARN) mapred.map.tasks
и mapred.reduce.tasks
устарели и заменены другими переменными:
mapred.map.tasks --> mapreduce.job.maps
mapred.reduce.tasks --> mapreduce.job.reduces
Пожалуйста, обратитесь к полезной ссылке ниже, связанной с этим
http://answers.mapr.com/questions/5336/limit-mappers-and-reducers-for-specific-job.html
Не удается увеличить количество задач Hive Mapper?
Как назначаются картографы
Количество картографов определяется количеством разделений, определяемым InputFormat, используемым в задании MapReduce. В типичном InputFormat он прямо пропорционален количеству файлов и их размерам.
предположим, что ваша конфигурация блока HDFS настроена на 64 МБ (размер по умолчанию), и у вас есть файлы размером 100 МБ, тогда они будут занимать 2 блока, а затем 2 сопоставителя будут назначены на основе блоков
но предположим, что если у вас есть 2 файла размером 30 МБ (каждый файл), тогда каждый файл будет занимать один блок, и на основе этого сопоставитель получит задание.
Когда вы работаете с большим количеством небольших файлов, Hive по умолчанию использует CombineHiveInputFormat. С точки зрения MapReduce, это в конечном итоге означает использование CombineFileInputFormat, который создает виртуальные разбиения по нескольким файлам, сгруппированным по общему узлу, когда это возможно. Размер комбинированного сплита определяется
mapred.max.split.size
or
mapreduce.input.fileinputformat.split.maxsize ( in yarn/MR2);
Поэтому, если вы хотите иметь меньше разделений (меньше картографа), вам нужно установить этот параметр выше.
Эта ссылка может быть полезна, чтобы узнать о ней больше.
Каков размер по умолчанию, который будет использовать каждый модуль отображения Hadoop читал?
Также количество преобразователей и редукторов всегда зависит от доступных слотов преобразователя и редуктора в вашем кластере.
person
Sandeep Singh
schedule
13.05.2015