[ 
https://issues.apache.org/jira/browse/TEZ-4055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16796849#comment-16796849
 ] 

Syed Shameerur Rahman commented on TEZ-4055:
--------------------------------------------

[~jeagles] , The issue of missing logs is not seen in case of hivecli(not HS2) 
, To reproduce the issue
 # Start HS2
 # Connect to HS2 with beeline

Now we can see the issue of missing logs , Logs are not printed in beeline 
console as well as  ${sys:test.tmp.dir}/log/hive.log. The possible reason would 
be while building tez it creates slf4j-log4j12-1.7.10.jar and 
slf4j-api-1.7.10.jar where as hadoop has slf4j-log4j12-1.7.25.jar and 
slf4j-api-1.7.25.jar which clearly conflicts.

 

Now when we connect to HS2 with beeline  SLF4J gives such a warning *SLF4J: 
Class path contains multiple SLF4J bindings.* According to the information in 
[https://www.slf4j.org/codes.html#multiple_bindings]  Even when multiple 
bindings are present, SLF4J will pick one logging framework/implementation and 
bind with it. The way SLF4J picks a binding is determined by the JVM and for 
all practical purposes should be considered random. I think this is where the 
issue arises.

Now coming to the solution i think rather than aligning the slf4j version to be 
same as hadoop as a long time solution we can exclude the creation of slf4j 
jars in tez with *<scope>provided</scope>* because any how JVM loads the slf4j 
JAR from hadoop.

Any Suggestions ?

> Align slf4j version to be same as Hadoop3
> -----------------------------------------
>
>                 Key: TEZ-4055
>                 URL: https://issues.apache.org/jira/browse/TEZ-4055
>             Project: Apache Tez
>          Issue Type: Bug
>    Affects Versions: 0.9.0, 0.9.1
>            Reporter: Syed Shameerur Rahman
>            Priority: Major
>             Fix For: 0.10.0
>
>         Attachments: TEZ-4055.patch
>
>
> Currently tez is using slf4j version 1.7.10 where as hadoop3 is using slf4j 
> version 1.7.25 , due to conflicting version of slf4j version no logs are 
> getting written in ${sys:test.tmp.dir}/log/hive.log. The statements 
> LOG.info("") , LOG.error("") . are directed to write logs into 
> ${sys:test.tmp.dir}/log/hive.log.
> When we connect to HS2 with beeline the slf4j jars are being searched 
> SLF4J: Class path contains multiple SLF4J bindings.
>  SLF4J: Found binding in [jar:<hadoop_location>]
>  SLF4J: Found binding in [jar:<tez_location>]
>  SLF4J: See [http://www.slf4j.org/codes.html#multiple_bindings] for an 
> explanation.
>  SLF4J: Actual binding is of type 
> [org.apache.logging.slf4j.Log4jLoggerFactory]
> cc [~hitesh] [~kshukla]



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to