Стандартные практики для входа в задания MapReduce
Я пытаюсь найти лучший подход для входа в задания MapReduce. Я использую slf4j с log4j appender, как и в других моих Java-приложениях, но так как задание MapReduce выполняется распределенным образом по кластеру, я не знаю, где я должен установить местоположение файла журнала, так как это общий кластер с ограниченным доступом привилегии.
Существуют ли какие-либо стандартные методы для входа в задания MapReduce, чтобы вы могли легко просматривать журналы в кластере после завершения задания?
2 ответа
Вы могли бы использовать log4j, который является структурой регистрации по умолчанию, которую использует hadoop. Итак, из вашего приложения MapReduce вы можете сделать что-то вроде этого:
import org.apache.log4j.Logger;
// other imports omitted
public class SampleMapper extends Mapper<LongWritable, Text, Text, Text> {
private Logger logger = Logger.getLogger(SampleMapper.class);
@Override
protected void setup(Context context) {
logger.info("Initializing NoSQL Connection.")
try {
// logic for connecting to NoSQL - ommitted
} catch (Exception ex) {
logger.error(ex.getMessage());
}
}
@Override
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
// mapper code ommitted
}
}
Этот пример кода будет использовать log4j logger для записи событий в унаследованный регистратор Mapper. Все события журнала будут записываться в соответствующие журналы задач. Вы можете посетить журналы задач с веб-страницы JobTracker(MRv1)/ResourceManager(MRv2).
Если вы используете пряжу, вы можете получить доступ к журналам приложений из командной строки, используя следующую команду:
yarn logs -applicationId <application_id>
Хотя, если вы используете mapreduce v1, нет единой точки доступа из командной строки; следовательно, вы должны войти в каждый TaskTracker и посмотреть в настроенном пути в целом /var/log/hadoop/userlogs/attempt_<job_id>/syslog
указано в ${hadoop.log.dir}/userlogs
содержит вывод log4j.
Чтобы добавить ответ @Ashrith: вы можете просматривать отдельные журналы отслеживания задач через графический интерфейс JobTracker. Попытки выполнения задачи видны в графическом интерфейсе JT, и вы можете щелкнуть любой из следующих элементов: stderr, stdout и системные журналы. Системные журналы - это то место, где вы найдете свои выходы log4j.