Мы создаем словарь, подобный приложению на Hadoop и Hive. Общий процесс представляет собой пакетное сканирование миллиардов данных журнала (например, слов) по большому фиксированному словарю (около 100 ГБ, например многоязычному словарю WordNet).
У нас уже есть версия Java-приложения для одной машины (назовем это "singleApp") для запроса этого словаря. В настоящее время мы не можем изменить ни это Java-приложение, ни файл словаря, поэтому мы не можем перепроектировать и переписать полностью новое приложение MapReduce. Нам нужно использовать эту версию Java-приложения для одной машины в качестве строительного блока, чтобы расширить его до версии MapReduce.
В настоящее время мы можем создать приложение MapReduce, вызвав это «singleApp» и передать подмножество словаря (например, словарь 1G) с использованием распределенного кэша. Однако, если мы используем полный словарь (100G), приложение запускается очень и очень медленно. Кроме того, мы очень хотим установить эти словари в кластер Hadoop, не вызывая его каждый раз с параметрами -file или распределенного кэша.
Мы попытались скопировать файлы словарей напрямую на локальные диски в подчиненных узлах и указать на них java-приложению, но оно не смогло найти словарь. Любые документы о том, что нужно сделать, если мы хотим больше отладить этот подход?
Любые предложения о том, что должно быть передовой практикой/процессом для нас, чтобы справляться с такими ситуациями (очень большие файлы словарей, и вы предпочитаете постоянно устанавливать файлы словарей)?