Looking through this thread, I don't see Spark version you use.

Can you tell us the Spark release ?

Thanks

On Mon, Apr 18, 2016 at 6:32 AM, Carlos Rojas Matas <cma...@despegar.com>
wrote:

> Thanks Ted, already checked it but is not the same. I'm working with
> StandAlone spark, the examples refers to HDFS paths, therefore I assume
> Hadoop 2 Resource Manager is used. I've tried all possible flavours. The
> only one that worked was changing the spark-defaults.conf in every machine.
> I'll go with this by now, but the extra java opts for the executor are
> definitely not working, at least for logging configuration.
>
> Thanks,
> -carlos.
>
> On Fri, Apr 15, 2016 at 3:28 PM, Ted Yu <yuzhih...@gmail.com> wrote:
>
>> See this thread: http://search-hadoop.com/m/q3RTtsFrd61q291j1
>>
>> On Fri, Apr 15, 2016 at 5:38 AM, Carlos Rojas Matas <cma...@despegar.com>
>> wrote:
>>
>>> Hi guys,
>>>
>>> any clue on this? Clearly the
>>> spark.executor.extraJavaOpts=-Dlog4j.configuration is not working on the
>>> executors.
>>>
>>> Thanks,
>>> -carlos.
>>>
>>> On Wed, Apr 13, 2016 at 2:48 PM, Carlos Rojas Matas <cma...@despegar.com
>>> > wrote:
>>>
>>>> Hi Yong,
>>>>
>>>> thanks for your response. As I said in my first email, I've tried both
>>>> the reference to the classpath resource (env/dev/log4j-executor.properties)
>>>> as the file:// protocol. Also, the driver logging is working fine and I'm
>>>> using the same kind of reference.
>>>>
>>>> Below the content of my classpath:
>>>>
>>>> [image: Inline image 1]
>>>>
>>>> Plus this is the content of the exploded fat jar assembled with sbt
>>>> assembly plugin:
>>>>
>>>> [image: Inline image 2]
>>>>
>>>>
>>>> This folder is at the root level of the classpath.
>>>>
>>>> Thanks,
>>>> -carlos.
>>>>
>>>> On Wed, Apr 13, 2016 at 2:35 PM, Yong Zhang <java8...@hotmail.com>
>>>> wrote:
>>>>
>>>>> Is the env/dev/log4j-executor.properties file within your jar file? Is
>>>>> the path matching with what you specified as
>>>>> env/dev/log4j-executor.properties?
>>>>>
>>>>> If you read the log4j document here:
>>>>> https://logging.apache.org/log4j/1.2/manual.html
>>>>>
>>>>> When you specify the log4j.configuration=my_custom.properties, you
>>>>> have 2 option:
>>>>>
>>>>> 1) the my_custom.properties has to be in the jar (or in the
>>>>> classpath). In your case, since you specify the package path, you need to
>>>>> make sure they are matched in your jar file
>>>>> 2) use like log4j.configuration=file:///tmp/my_custom.properties. In
>>>>> this way, you need to make sure file my_custom.properties exists in /tmp
>>>>> folder on ALL of your worker nodes.
>>>>>
>>>>> Yong
>>>>>
>>>>> ------------------------------
>>>>> Date: Wed, 13 Apr 2016 14:18:24 -0300
>>>>> Subject: Re: Logging in executors
>>>>> From: cma...@despegar.com
>>>>> To: yuzhih...@gmail.com
>>>>> CC: user@spark.apache.org
>>>>>
>>>>>
>>>>> Thanks for your response Ted. You're right, there was a typo. I
>>>>> changed it, now I'm executing:
>>>>>
>>>>> bin/spark-submit --master spark://localhost:7077 --conf
>>>>> "spark.driver.extraJavaOptions=-Dlog4j.configuration=env/dev/log4j-driver.properties"
>>>>> --conf
>>>>> "spark.executor.extraJavaOptions=-Dlog4j.configuration=env/dev/log4j-executor.properties"
>>>>> --class....
>>>>>
>>>>> The content of this file is:
>>>>>
>>>>> # Set everything to be logged to the console
>>>>> log4j.rootCategory=INFO, FILE
>>>>> log4j.appender.console=org.apache.log4j.ConsoleAppender
>>>>> log4j.appender.console.target=System.err
>>>>> log4j.appender.console.layout=org.apache.log4j.PatternLayout
>>>>> log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss}
>>>>> %p %c{1}: %m%n
>>>>>
>>>>> log4j.appender.FILE=org.apache.log4j.RollingFileAppender
>>>>> log4j.appender.FILE.File=/tmp/executor.log
>>>>> log4j.appender.FILE.ImmediateFlush=true
>>>>> log4j.appender.FILE.Threshold=debug
>>>>> log4j.appender.FILE.Append=true
>>>>> log4j.appender.FILE.MaxFileSize=100MB
>>>>> log4j.appender.FILE.MaxBackupIndex=5
>>>>> log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
>>>>> log4j.appender.FILE.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p
>>>>> %c{1}: %m%n
>>>>>
>>>>> # Settings to quiet third party logs that are too verbose
>>>>> log4j.logger.org.spark-project.jetty=WARN
>>>>>
>>>>> log4j.logger.org.spark-project.jetty.util.component.AbstractLifeCycle=ERROR
>>>>> log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
>>>>>
>>>>> log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
>>>>> log4j.logger.org.apache.parquet=ERROR
>>>>> log4j.logger.parquet=ERROR
>>>>> log4j.logger.com.despegar.p13n=DEBUG
>>>>>
>>>>> # SPARK-9183: Settings to avoid annoying messages when looking up
>>>>> nonexistent UDFs in SparkSQL with Hive support
>>>>> log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
>>>>> log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR
>>>>>
>>>>>
>>>>> Finally, the code on which I'm using logging in the executor is:
>>>>>
>>>>> def groupAndCount(keys: DStream[(String, List[String])])(handler: 
>>>>> ResultHandler) = {
>>>>>
>>>>>   val result = keys.reduceByKey((prior, current) => {
>>>>>     (prior ::: current)
>>>>>   }).flatMap {
>>>>>     case (date, keys) =>
>>>>>       val rs = keys.groupBy(x => x).map(
>>>>>           obs =>{
>>>>>             val (d,t) = date.split("@") match {
>>>>>               case Array(d,t) => (d,t)
>>>>>             }
>>>>>             import org.apache.log4j.Logger
>>>>>             import scala.collection.JavaConverters._
>>>>>             val logger: Logger = Logger.getRootLogger
>>>>>             logger.info(s"Metric retrieved $d")
>>>>>             Metric("PV", d, obs._1, t, obs._2.size)
>>>>>         }
>>>>>       )
>>>>>       rs
>>>>>   }
>>>>>
>>>>>   result.foreachRDD((rdd: RDD[Metric], time: Time) => {
>>>>>     handler(rdd, time)
>>>>>   })
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>> Originally the import and logger object was outside the map function.
>>>>> I'm also using the root logger just to see if it's working, but nothing
>>>>> gets logged. I've checked that the property is set correctly on the
>>>>> executor side through println(System.getProperty("log4j.configuration"))
>>>>> and is OK, but still not working.
>>>>>
>>>>> Thanks again,
>>>>> -carlos.
>>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to