Обработка большого набора небольших файлов с помощью Hadoop

Я использую пример программы WordCount на Hadoop для обработки большого набора небольших файлов / веб-страниц (примерно 2–3 КБ). Поскольку это далеко от оптимального размера файла для файлов hadoop, программа работает очень медленно. Я думаю, это потому, что стоимость установки и разрыва работы намного выше, чем сама работа. Такие небольшие файлы также вызывают истощение пространств имен для имен файлов.

Я прочитал, что в этом случае мне следует использовать архив HDFS (HAR), но я не уверен, как изменить эту программу WordCount для чтения из этих архивов. Может ли программа продолжать работать без модификаций или необходимы какие-то модификации?

Даже если я запаковываю много файлов в архивы, остается вопрос, улучшит ли это производительность. Я читал, что даже если я упакую несколько файлов, эти файлы внутри одного архива будут обрабатываться не одним картографом, а множеством, что в моем случае (я полагаю) не улучшит производительность.

Если этот вопрос слишком прост, h [] = ничего h (x: _) = Просто x и с функцией k: k :: Char -> Int k = или выполняется условие естественности ...

Я могу определить естественное преобразование в Haskell как:

h :: [a] -> Maybe a
h []    = Nothing
h (x:_) = Just x

, а с функцией k:

k :: Char -> Int
k = ord

условие естественности выполняется благодаря тому, что:

ч. fmap k == fmap k. h

Можно ли аналогичным образом продемонстрировать условие естественности функции join монады List? У меня возникли проблемы с пониманием того, как join , например concat , является естественным преобразованием.

19
задан user2023370 8 May 2011 в 23:09
поделиться