[
https://issues.apache.org/jira/browse/MAHOUT-1399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Stevo Slavic updated MAHOUT-1399:
---------------------------------
Fix Version/s: (was: 1.0)
0.9
Affects Version/s: (was: 1.0)
0.8
Status: Patch Available (was: Open)
Mahout modules depend on slf4j-api, and during tests slf4j-jcl binding is
provided.
Mahout examples module depended on slf4j-jcl too, but with runtime scope. When
examples job assembly unpacks dependencies and produces a fat jar, it includes
slf4j-jcl in examples-job jar. Then at runtime, SLF4J would complain about two
bindings on classpath. One is from fat jar. In Mahout local execution mode,
second binding would come from slf4j-jcl jar found in
examples/target/dependency directory (created by
maven-dependency-plugin:copy-dependencies execution, and used by bin/mahout
script). When examples are run in map-reduce mode on Hadoop, second binding,
slf4j-log4j, would come from Hadoop lib directory.
Attached patch attempts to fix this so it works in both local and map-reduce
mode, by making use of slf4j-log4j instead, in Mahout examples only. It's
marked as provided so it doesn't get packaged in examples job fat jar. In local
mode a single binding, slf4j-log4j (with supporting log4j, and jcl-over-slf4j
for any commons-logging using library) will be on classpath, from
examples/target/dependency directory. In map-reduce mode, same slf4j-log4j
binding (and other supporting logging jars) is provided by Hadoop itself.
[~smarthi], please test the patch, and if you find appropriate, consider
including in 0.9.
> Silence logging noise from Mahout Jobs
> --------------------------------------
>
> Key: MAHOUT-1399
> URL: https://issues.apache.org/jira/browse/MAHOUT-1399
> Project: Mahout
> Issue Type: Improvement
> Components: CLI
> Affects Versions: 0.8
> Reporter: Frank Scholten
> Assignee: Frank Scholten
> Priority: Trivial
> Fix For: 0.9
>
> Attachments: mahout-MAHOUT-1399.patch
>
>
> Mahout jobs produce a lot of output on the command line and log messages like
> these below are distracting:
> attempt_201311181700_0002_m_000000_0: SLF4J: Class path contains multiple
> SLF4J bindings.
> attempt_201311181700_0002_m_000000_0: SLF4J: Found binding in
> [jar:file:/home/hadoop/lib/slf4j-log4j12-1.7.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> attempt_201311181700_0002_m_000000_0: SLF4J: Found binding in
> [jar:file:/mnt/var/lib/hadoop/mapred/taskTracker/hadoop/jobcache/job_201311181700_0002/jars/job.jar!/org/slf4j/impl/StaticLoggerBinder.class]
> attempt_201311181700_0002_m_000000_0: SLF4J: See
> http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
> attempt_201311181700_0002_m_000000_0: SLF4J: Actual binding is of type
> [org.slf4j.impl.Log4jLoggerFactory]
> Let's silence log messages like these that do not provide information about
> the Mahout job itself. If you have more instances of superfluous logging add
> this to the issue.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)