Instalé Spark usando la guía AWS EC2 y puedo iniciar bien el programa usando el bin/pyspark
script para llegar al indicador de chispa y también puedo hacer el inicio rápido exitosamente.
Sin embargo, no puedo por mi vida descubrir cómo detener todo el INFO
registro detallado después de cada comando.
He intentado casi todos los escenarios posibles en el código a continuación (comentando, configurando como DESACTIVADO) dentro de mi log4j.properties
archivo en la conf
carpeta desde donde inicio la aplicación, así como en cada nodo y nada está haciendo nada. Todavía recibo el registroINFO
impresión de las declaraciones de después de ejecutar cada declaración.
Estoy muy confundido con cómo se supone que esto funciona.
#Set everything to be logged to the console log4j.rootCategory=INFO, console
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
# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
Aquí está mi classpath completo cuando uso SPARK_PRINT_LAUNCH_COMMAND
:
Comando Spark: /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java -cp: /root/spark-1.0.1-bin-hadoop2/conf: /root/spark-1.0.1 -bin-hadoop2 / conf: /root/spark-1.0.1-bin-hadoop2/lib/spark-assembly-1.0.1-hadoop2.2.0.jar: /root/spark-1.0.1-bin-hadoop2/lib /datanucleus-api-jdo-3.2.1.jar:/root/spark-1.0.1-bin-hadoop2/lib/datanucleus-core-3.2.2.jar:/root/spark-1.0.1-bin-hadoop2 /lib/datanucleus-rdbms-3.2.1.jar -XX: MaxPermSize = 128m -Djava.library.path = -Xms512m -Xmx512m org.apache.spark.deploy.SparkSubmit spark-shell --class org.apache.spark. repl.Main
contenido de spark-env.sh
:
#!/usr/bin/env bash
# This file is sourced when running various Spark programs.
# Copy it as spark-env.sh and edit that to configure Spark for your site.
# Options read when launching programs locally with
# ./bin/run-example or ./bin/spark-submit
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program
# - SPARK_CLASSPATH=/root/spark-1.0.1-bin-hadoop2/conf/
# Options read by executors and drivers running inside the cluster
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program
# - SPARK_CLASSPATH, default classpath entries to append
# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data
# - MESOS_NATIVE_LIBRARY, to point to your libmesos.so if you use Mesos
# Options read in YARN client mode
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_EXECUTOR_INSTANCES, Number of workers to start (Default: 2)
# - SPARK_EXECUTOR_CORES, Number of cores for the workers (Default: 1).
# - SPARK_EXECUTOR_MEMORY, Memory per Worker (e.g. 1000M, 2G) (Default: 1G)
# - SPARK_DRIVER_MEMORY, Memory for Master (e.g. 1000M, 2G) (Default: 512 Mb)
# - SPARK_YARN_APP_NAME, The name of your application (Default: Spark)
# - SPARK_YARN_QUEUE, The hadoop queue to use for allocation requests (Default: ‘default’)
# - SPARK_YARN_DIST_FILES, Comma separated list of files to be distributed with the job.
# - SPARK_YARN_DIST_ARCHIVES, Comma separated list of archives to be distributed with the job.
# Options for the daemons used in the standalone deploy mode:
# - SPARK_MASTER_IP, to bind the master to a different IP address or hostname
# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
# - SPARK_WORKER_CORES, to set the number of cores to use on this machine
# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
# - SPARK_WORKER_INSTANCES, to set the number of worker processes per node
# - SPARK_WORKER_DIR, to set the working directory of worker processes
# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")
# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers
export SPARK_SUBMIT_CLASSPATH="$FWDIR/conf"
Respuestas:
Simplemente ejecute este comando en el directorio spark:
Editar log4j.properties:
Reemplazar en la primera línea:
por:
Guarde y reinicie su shell. A mí me funciona para Spark 1.1.0 y Spark 1.5.1 en OS X.
fuente
Inspirado por el pyspark / tests.py que hice
Llamar a esto justo después de crear SparkContext redujo las líneas stderr registradas para mi prueba de 2647 a 163. Sin embargo, crear el SparkContext en sí registra 163, hasta
y no me queda claro cómo ajustarlos programáticamente.
fuente
En Spark 2.0 también puede configurarlo dinámicamente para su aplicación usando setLogLevel :
En la consola de pyspark , una
spark
sesión predeterminada ya estará disponible.fuente
log4j
no es accesible.Edite su archivo conf / log4j.properties y cambie la siguiente línea:
a
Otro enfoque sería:
Encienda la chispa y escriba lo siguiente:
No verá ningún registro después de eso.
fuente
fuente
Para PySpark, también puede establecer el nivel de registro en sus scripts con
sc.setLogLevel("FATAL")
. De los documentos :fuente
Puedes usar setLogLevel
fuente
Esto puede deberse a cómo Spark calcula su classpath. Mi presentimiento es que Hadoop
log4j.properties
archivo aparece antes que Spark en el classpath, evitando que sus cambios surtan efecto.Si tu corres
luego Spark imprimirá el classpath completo utilizado para iniciar el shell; en mi caso veo
donde
/root/ephemeral-hdfs/conf
está a la cabeza del classpath.He abierto un problema [SPARK-2913] para solucionar esto en la próxima versión (debería tener un parche pronto).
Mientras tanto, aquí hay un par de soluciones:
export SPARK_SUBMIT_CLASSPATH="$FWDIR/conf"
aspark-env.sh
./root/ephemeral-hdfs/conf/log4j.properties
.fuente
Spark 1.6.2:
Spark 2.x:
(chispa siendo la sesión de chispa)
Alternativamente, los viejos métodos,
Cambiar el nombre
conf/log4j.properties.template
aconf/log4j.properties
en Spark Dir.En el
log4j.properties
, cambielog4j.rootCategory=INFO, console
alog4j.rootCategory=WARN, console
Diferentes niveles de registro disponibles:
fuente
Forma programática
Opciones Disponibles
fuente
Utilicé esto con Amazon EC2 con 1 maestro y 2 esclavos y Spark 1.2.1.
fuente
Simplemente agregue el siguiente parámetro a su comando de envío de chispa
Esto anula el valor del sistema temporalmente solo para ese trabajo. Verifique el nombre exacto de la propiedad (log4jspark.root.logger aquí) del archivo log4j.properties.
Espero que esto ayude, ¡salud!
fuente
--conf spark.driver.extraJavaOptions='-Dlog4j.configuration=file:/home/foobar/log4j.properties
Este fragmento de código a continuación para usuarios de scala:
Opción 1 :
Debajo del fragmento puede agregar a nivel de archivo
Opcion 2 :
Opcion 3:
fuente
La forma en que lo hago es:
en la ubicación donde ejecuto el
spark-submit
scriptcambie
INFO
a cualquier nivel de registro que desee y luego ejecute suspark-submit
fuente
cp /etc/spark/conf/log4j.properties.template .
Si desea seguir utilizando el registro (instalación de registro para Python), puede intentar dividir las configuraciones para su aplicación y para Spark:
fuente