文章目录
一、安装standalone模式
注:已安装有hadoop集群。
[hadoop@h71 ~]$ tar -zxvf spark-1.5.0-cdh5.5.2.tar.gz
[hadoop@h71 ~]$ vi spark-1.5.0-cdh5.5.2/conf/spark-env.sh
export JAVA_HOME=/usr/jdk1.7.0_25
export SPARK_MASTER_IP=h71
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_EXECUTOR_INSTANCES=1
export SPARK_WORKER_MEMORY=1g
[hadoop@h71 ~]$ vi spark-1.5.0-cdh5.5.2/conf/slaves
h72
h73
[hadoop@h71 ~]$ scp -r spark-1.5.0-cdh5.5.2/ h72:/home/hadoop/
[hadoop@h71 ~]$ scp -r spark-1.5.0-cdh5.5.2/ h73:/home/hadoop/
二、启动spark集群却报错
[hadoop@h71 spark-1.5.0-cdh5.5.2]$ sbin/start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-h71.out
failed to launch org.apache.spark.deploy.master.Master:
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
full log in /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-h71.out
h72: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-h72.out
h73: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-h73.out
h72: failed to launch org.apache.spark.deploy.worker.Worker:
h72: at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
h72: ... 6 more
h72: full log in /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-h72.out
h73: failed to launch org.apache.spark.deploy.worker.Worker:
h73: at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
h73: ... 6 more
h73: full log in /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-h73.out
查看日志:
[hadoop@h71 spark-1.5.0-cdh5.5.2]$ cat logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-h71.out
Spark Command: /usr/jdk1.7.0_25/bin/java -cp /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../conf/:/home/hadoop/spark-1.5.0-cdh5.5.2/lib/spark-assembly-1.5.0-cdh5.5.2-hadoop2.6.0-cdh5.5.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/etc/hadoop/ -Xms1g -Xmx1g -XX:MaxPermSize=256m org.apache.spark.deploy.master.Master --ip h71 --port 7077 --webui-port 8080
========================================
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/Logger
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
at java.lang.Class.getMethod0(Class.java:2764)
at java.lang.Class.getMethod(Class.java:1653)
at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)
Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 6 more
原因:无法加载slf4j相关jar包
解决:在spark-env.sh中添加
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.5.2
for f in $HADOOP_HOME/share/hadoop/common/lib/*.jar; do
if [ "$SPARK_CLASSPATH" ]; then
export SPARK_CLASSPATH=$SPARK_CLASSPATH:$f
else
export SPARK_CLASSPATH=$f
fi
done
for f in $HADOOP_HOME/share/hadoop/common/*.jar; do
if [ "$SPARK_CLASSPATH" ]; then
export SPARK_CLASSPATH=$SPARK_CLASSPATH:$f
else
export SPARK_CLASSPATH=$f
fi
done
并复制到其他两个从节点:
[hadoop@h71 spark-1.5.0-cdh5.5.2]$ scp conf/spark-env.sh h72:/home/hadoop/spark-1.5.0-cdh5.5.2/conf/
[hadoop@h71 spark-1.5.0-cdh5.5.2]$ scp conf/spark-env.sh h73:/home/hadoop/spark-1.5.0-cdh5.5.2/conf/
再启动spark集群:
[hadoop@h71 spark-1.5.0-cdh5.5.2]$ sbin/start-all.sh
starting org.apache.spark.deploy.master.Master, logging to /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-h71.out
h73: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-h73.out
h72: starting org.apache.spark.deploy.worker.Worker, logging to /home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-h72.out
用jps命令查看你会在主节点上看到Master进程在从节点上看到Worker进程(可能你都看不到,因为它很快就又shut down了),查看日志:
[hadoop@h71 spark-1.5.0-cdh5.5.2]$ cat logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-h71.out
Spark Command: /usr/jdk1.7.0_25/bin/java -cp /home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/activation-1.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/apacheds-i18n-2.0.0-M15.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/apacheds-kerberos-codec-2.0.0-M15.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/api-asn1-api-1.0.0-M20.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/api-util-1.0.0-M20.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/asm-3.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/avro-1.7.6-cdh5.5.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-beanutils-1.7.0.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-beanutils-core-1.8.0.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-cli-1.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-codec-1.4.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-collections-3.2.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-compress-1.4.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-configuration-1.6.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-digester-1.8.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-el-1.0.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-httpclient-3.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-io-2.4.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-lang-2.6.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-logging-1.1.3.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-math3-3.1.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/commons-net-3.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/curator-client-2.7.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/curator-framework-2.7.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/curator-recipes-2.7.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/gson-2.2.4.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/guava-11.0.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/hadoop-annotations-2.6.0-cdh5.5.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/hadoop-auth-2.6.0-cdh5.5.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/hamcrest-core-1.3.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/htrace-core4-4.0.1-incubating.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/httpclient-4.2.5.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/httpcore-4.2.5.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jackson-core-asl-1.8.8.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jackson-jaxrs-1.8.8.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jackson-mapper-asl-1.8.8.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jackson-xc-1.8.8.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jasper-compiler-5.5.23.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jasper-runtime-5.5.23.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/java-xmlbuilder-0.4.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jaxb-api-2.2.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jaxb-impl-2.2.3-1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jersey-core-1.9.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jersey-json-1.9.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jersey-server-1.9.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jets3t-0.9.0.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jettison-1.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jetty-6.1.26.cloudera.4.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jetty-util-6.1.26.cloudera.4.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jsch-0.1.42.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jsp-api-2.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/jsr305-3.0.0.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/junit-4.11.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/log4j-1.2.17.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/logredactor-1.0.3.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/mockito-all-1.8.5.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/netty-3.6.2.Final.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/paranamer-2.3.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/protobuf-java-2.5.0.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/servlet-api-2.5.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/slf4j-api-1.7.5.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/snappy-java-1.0.4.1.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/stax-api-1.0-2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/xmlenc-0.52.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/xz-1.0.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/lib/zookeeper-3.4.5-cdh5.5.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/hadoop-common-2.6.0-cdh5.5.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/hadoop-common-2.6.0-cdh5.5.2-tests.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/share/hadoop/common/hadoop-nfs-2.6.0-cdh5.5.2.jar:/home/hadoop/spark-1.5.0-cdh5.5.2/sbin/../conf/:/home/hadoop/spark-1.5.0-cdh5.5.2/lib/spark-assembly-1.5.0-cdh5.5.2-hadoop2.6.0-cdh5.5.2.jar:/home/hadoop/hadoop-2.6.0-cdh5.5.2/etc/hadoop/ -Xms1g -Xmx1g -XX:MaxPermSize=256m org.apache.spark.deploy.master.Master --ip h71 --port 7077 --webui-port 8080
========================================
17/03/17 17:26:27 INFO master.Master: Registered signal handlers for [TERM, HUP, INT]
17/03/17 17:26:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
17/03/17 17:26:28 INFO spark.SecurityManager: Changing view acls to: hadoop
17/03/17 17:26:28 INFO spark.SecurityManager: Changing modify acls to: hadoop
17/03/17 17:26:28 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(hadoop); users with modify permissions: Set(hadoop)
17/03/17 17:26:29 INFO slf4j.Slf4jLogger: Slf4jLogger started
17/03/17 17:26:29 INFO Remoting: Starting remoting
17/03/17 17:26:31 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkMaster@h71:7077]
17/03/17 17:26:31 INFO Remoting: Remoting now listens on addresses: [akka.tcp://sparkMaster@h71:7077]
17/03/17 17:26:31 INFO util.Utils: Successfully started service 'sparkMaster' on port 7077.
17/03/17 17:26:32 INFO master.Master: Starting Spark master at spark://h71:7077
17/03/17 17:26:32 INFO master.Master: Running Spark version 1.5.0-cdh5.5.2
17/03/17 17:26:34 INFO server.Server: jetty-8.y.z-SNAPSHOT
17/03/17 17:26:39 INFO server.AbstractConnector: Started SelectChannelConnector@0.0.0.0:8080
17/03/17 17:26:39 INFO util.Utils: Successfully started service 'MasterUI' on port 8080.
17/03/17 17:26:39 INFO ui.MasterWebUI: Started MasterWebUI at http://192.168.8.71:8080
17/03/17 17:26:39 INFO server.Server: jetty-8.y.z-SNAPSHOT
17/03/17 17:26:40 INFO server.AbstractConnector: Started SelectChannelConnector@h71:6066
17/03/17 17:26:40 INFO util.Utils: Successfully started service on port 6066.
17/03/17 17:26:40 INFO rest.StandaloneRestServer: Started REST server for submitting applications on port 6066
17/03/17 17:26:40 ERROR actor.ActorSystemImpl: Uncaught fatal error from thread [sparkMaster-akka.actor.default-dispatcher-15] shutting down ActorSystem [sparkMaster]
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/Module
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.spark.util.Utils$.classForName(Utils.scala:172)
at org.apache.spark.metrics.MetricsSystem$$anonfun$registerSinks$1.apply(MetricsSystem.scala:190)
at org.apache.spark.metrics.MetricsSystem$$anonfun$registerSinks$1.apply(MetricsSystem.scala:186)
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
at scala.collection.mutable.HashMap$$anonfun$foreach$1.apply(HashMap.scala:98)
at scala.collection.mutable.HashTable$class.foreachEntry(HashTable.scala:226)
at scala.collection.mutable.HashMap.foreachEntry(HashMap.scala:39)
at scala.collection.mutable.HashMap.foreach(HashMap.scala:98)
at org.apache.spark.metrics.MetricsSystem.registerSinks(MetricsSystem.scala:186)
at org.apache.spark.metrics.MetricsSystem.start(MetricsSystem.scala:100)
at org.apache.spark.deploy.master.Master.onStart(Master.scala:152)
at org.apache.spark.rpc.akka.AkkaRpcEnv$$anonfun$actorRef$lzycompute$1$1$$anon$1$$anonfun$preStart$1.apply$mcV$sp(AkkaRpcEnv.scala:100)
at org.apache.spark.rpc.akka.AkkaRpcEnv.org$apache$spark$rpc$akka$AkkaRpcEnv$$safelyCall(AkkaRpcEnv.scala:197)
at org.apache.spark.rpc.akka.AkkaRpcEnv$$anonfun$actorRef$lzycompute$1$1$$anon$1.preStart(AkkaRpcEnv.scala:99)
at akka.actor.ActorCell.create(ActorCell.scala:562)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:425)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:447)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:262)
at akka.dispatch.Mailbox.run(Mailbox.scala:218)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.Module
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 26 more
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/driver/kill,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/app/kill,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/api,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/static,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/json,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/history/not-found/json,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/history/not-found,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/app/json,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/app,null}
17/03/17 17:26:40 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/,null}
17/03/17 17:26:40 WARN metrics.MetricsSystem: Stopping a MetricsSystem that is not running
17/03/17 17:26:40 ERROR akka.AkkaRpcEnv: Ignore error: null
java.lang.NullPointerException
at org.apache.spark.deploy.master.Master.onStop(Master.scala:198)
at org.apache.spark.rpc.akka.AkkaRpcEnv$$anonfun$actorRef$lzycompute$1$1$$anon$1$$anonfun$postStop$1.apply$mcV$sp(AkkaRpcEnv.scala:143)
at org.apache.spark.rpc.akka.AkkaRpcEnv.org$apache$spark$rpc$akka$AkkaRpcEnv$$safelyCall(AkkaRpcEnv.scala:197)
at org.apache.spark.rpc.akka.AkkaRpcEnv$$anonfun$actorRef$lzycompute$1$1$$anon$1.postStop(AkkaRpcEnv.scala:142)
at akka.actor.dungeon.FaultHandling$class.akka$actor$dungeon$FaultHandling$$finishTerminate(FaultHandling.scala:201)
at akka.actor.dungeon.FaultHandling$class.terminate(FaultHandling.scala:163)
at akka.actor.ActorCell.terminate(ActorCell.scala:338)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:431)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:447)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:262)
at akka.dispatch.Mailbox.run(Mailbox.scala:218)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
17/03/17 17:26:40 INFO remote.RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon.
17/03/17 17:26:40 INFO remote.RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports.
17/03/17 17:26:41 INFO Remoting: Remoting shut down
17/03/17 17:26:41 INFO remote.RemoteActorRefProvider$RemotingTerminator: Remoting shut down.
原因:CLASSPATH中缺少jackson包
解决:在spark-env.sh中再添加
for f in $HADOOP_HOME/share/hadoop/mapreduce*/lib/*.jar; do
if [ "$SPARK_CLASSPATH" ]; then
export SPARK_CLASSPATH=$SPARK_CLASSPATH:$f
else
export SPARK_CLASSPATH=$f
fi
done
并复制到其他两个从节点后再启动spark集群则一切正常。
测试(运行这个spark自带的程序可成功执行):
[hadoop@h71 spark-1.5.0-cdh5.5.2]$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://h71:7077 --executor-memory 1G --total-executor-cores 1 ./lib/spark-examples-1.5.0-cdh5.5.2-hadoop2.6.0-cdh5.5.2.jar 100
注意:在网上https://zhidao.baidu.com/question/2269421342018900708.html有看到解决报错一的另一种方法,即在spark-env.sh中添加如下内容
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.5.2
export SPARK_DIST_CLASSPATH=$(/home/hadoop/hadoop-2.6.0-cdh5.5.2/bin/hadoop classpath)
按这种方法解决报错一后再添加相应内容解决报错二后也是虽然能正常启动但过一段时间相应的进程还是会挂掉,查看日志有:
17/03/17 18:43:02 ERROR actor.ActorSystemImpl: Uncaught fatal error from thread [sparkMaster-akka.actor.default-dispatcher-7] shutting down ActorSystem [sparkMaster]
java.lang.VerifyError: (class: org/jboss/netty/channel/socket/nio/NioWorkerPool, method: createWorker signature: (Ljava/util/concurrent/Executor;)Lorg/jboss/netty/channel/socket/nio/AbstractNioWorker;) Wrong return type in function
at akka.remote.transport.netty.NettyTransport.<init>(NettyTransport.scala:282)
at akka.remote.transport.netty.NettyTransport.<init>(NettyTransport.scala:239)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$2.apply(DynamicAccess.scala:78)
at scala.util.Try$.apply(Try.scala:161)
at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:73)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
at akka.actor.ReflectiveDynamicAccess$$anonfun$createInstanceFor$3.apply(DynamicAccess.scala:84)
at scala.util.Success.flatMap(Try.scala:200)
at akka.actor.ReflectiveDynamicAccess.createInstanceFor(DynamicAccess.scala:84)
at akka.remote.EndpointManager$$anonfun$8.apply(Remoting.scala:618)
at akka.remote.EndpointManager$$anonfun$8.apply(Remoting.scala:610)
at scala.collection.TraversableLike$WithFilter$$anonfun$map$2.apply(TraversableLike.scala:722)
at scala.collection.Iterator$class.foreach(Iterator.scala:727)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
at scala.collection.TraversableLike$WithFilter.map(TraversableLike.scala:721)
at akka.remote.EndpointManager.akka$remote$EndpointManager$$listens(Remoting.scala:610)
at akka.remote.EndpointManager$$anonfun$receive$2.applyOrElse(Remoting.scala:450)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:498)
at akka.actor.ActorCell.invoke(ActorCell.scala:456)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:237)
at akka.dispatch.Mailbox.run(Mailbox.scala:219)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
17/03/17 18:43:02 INFO remote.RemoteActorRefProvider$RemotingTerminator: Shutting down remote daemon.
17/03/17 18:43:02 INFO remote.RemoteActorRefProvider$RemotingTerminator: Remote daemon shut down; proceeding with flushing remote transports.
17/03/17 18:43:02 INFO Remoting: Remoting shut down
17/03/17 18:43:03 INFO remote.RemoteActorRefProvider$RemotingTerminator: Remoting shut down.
[ERROR] [03/17/2017 18:43:12.812] [main] [Remoting] Remoting error: [Startup timed out] [
akka.remote.RemoteTransportException: Startup timed out
at akka.remote.Remoting.akka$remote$Remoting$$notifyError(Remoting.scala:129)
at akka.remote.Remoting.start(Remoting.scala:191)
at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:184)
at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:579)
at akka.actor.ActorSystemImpl._start(ActorSystem.scala:577)
at akka.actor.ActorSystemImpl.start(ActorSystem.scala:588)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:111)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:104)
at org.apache.spark.util.AkkaUtils$.org$apache$spark$util$AkkaUtils$$doCreateActorSystem(AkkaUtils.scala:121)
at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:53)
at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:52)
at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:1912)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:141)
at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:1903)
at org.apache.spark.util.AkkaUtils$.createActorSystem(AkkaUtils.scala:55)
at org.apache.spark.rpc.akka.AkkaRpcEnvFactory.create(AkkaRpcEnv.scala:253)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:53)
at org.apache.spark.deploy.master.Master$.startRpcEnvAndEndpoint(Master.scala:1074)
at org.apache.spark.deploy.master.Master$.main(Master.scala:1058)
at org.apache.spark.deploy.master.Master.main(Master.scala)
Caused by: java.util.concurrent.TimeoutException: Futures timed out after [10000 milliseconds]
at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219)
at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223)
at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:107)
at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
at scala.concurrent.Await$.result(package.scala:107)
at akka.remote.Remoting.start(Remoting.scala:173)
... 18 more
]
Exception in thread "main" java.util.concurrent.TimeoutException: Futures timed out after [10000 milliseconds]
at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:219)
at scala.concurrent.impl.Promise$DefaultPromise.result(Promise.scala:223)
at scala.concurrent.Await$$anonfun$result$1.apply(package.scala:107)
at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
at scala.concurrent.Await$.result(package.scala:107)
at akka.remote.Remoting.start(Remoting.scala:173)
at akka.remote.RemoteActorRefProvider.init(RemoteActorRefProvider.scala:184)
at akka.actor.ActorSystemImpl._start$lzycompute(ActorSystem.scala:579)
at akka.actor.ActorSystemImpl._start(ActorSystem.scala:577)
at akka.actor.ActorSystemImpl.start(ActorSystem.scala:588)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:111)
at akka.actor.ActorSystem$.apply(ActorSystem.scala:104)
at org.apache.spark.util.AkkaUtils$.org$apache$spark$util$AkkaUtils$$doCreateActorSystem(AkkaUtils.scala:121)
at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:53)
at org.apache.spark.util.AkkaUtils$$anonfun$1.apply(AkkaUtils.scala:52)
at org.apache.spark.util.Utils$$anonfun$startServiceOnPort$1.apply$mcVI$sp(Utils.scala:1912)
at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:141)
at org.apache.spark.util.Utils$.startServiceOnPort(Utils.scala:1903)
at org.apache.spark.util.AkkaUtils$.createActorSystem(AkkaUtils.scala:55)
at org.apache.spark.rpc.akka.AkkaRpcEnvFactory.create(AkkaRpcEnv.scala:253)
at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:53)
at org.apache.spark.deploy.master.Master$.startRpcEnvAndEndpoint(Master.scala:1074)
at org.apache.spark.deploy.master.Master$.main(Master.scala:1058)
at org.apache.spark.deploy.master.Master.main(Master.scala)
后来经过自己反复尝试,应该将SPARK_DIST_CLASSPATH
改为SPARK_CLASSPATH
方可好使。
我安装从spark官网下载的spark-1.6.3-bin-hadoop2.6或者spark-1.3.1-bin-hadoop2.6也没这么多的事啊,按我的这篇文章Spark-1.3.1-bin-hadoop2.6安装及RDD基本操作中的安装步骤就可以,这安装个cdh版的咋尼玛这么费事啊。。。
三、补充
参考:
Spark on Yarn和Standalone
spark中num-executors,executor-cores,executor-memory调参的艺术
Spark on yarn模式的参数设置即调优
我们需要使用spark的bin/spark-submit
来提交我们的程序,具体参数使用help命令查看:bin/spark-submit --help
Options:
--master MASTER_URL spark://host:port, mesos://host:port, yarn,
k8s://https://host:port, or local (Default: local[*]).
--deploy-mode DEPLOY_MODE Whether to launch the driver program locally ("client") or
on one of the worker machines inside the cluster ("cluster")
(Default: client).
--class CLASS_NAME Your application's main class (for Java / Scala apps).
--name NAME A name of your application.
--jars JARS Comma-separated list of jars to include on the driver
and executor classpaths.
--packages Comma-separated list of maven coordinates of jars to include
on the driver and executor classpaths. Will search the local
maven repo, then maven central and any additional remote
repositories given by --repositories. The format for the
coordinates should be groupId:artifactId:version.
--exclude-packages Comma-separated list of groupId:artifactId, to exclude while
resolving the dependencies provided in --packages to avoid
dependency conflicts.
--repositories Comma-separated list of additional remote repositories to
search for the maven coordinates given with --packages.
--py-files PY_FILES Comma-separated list of .zip, .egg, or .py files to place
on the PYTHONPATH for Python apps.
--files FILES Comma-separated list of files to be placed in the working
directory of each executor. File paths of these files
in executors can be accessed via SparkFiles.get(fileName).
--conf PROP=VALUE Arbitrary Spark configuration property.
--properties-file FILE Path to a file from which to load extra properties. If not
specified, this will look for conf/spark-defaults.conf.
--driver-memory MEM Memory for driver (e.g. 1000M, 2G) (Default: 1024M).
--driver-java-options Extra Java options to pass to the driver.
--driver-library-path Extra library path entries to pass to the driver.
--driver-class-path Extra class path entries to pass to the driver. Note that
jars added with --jars are automatically included in the
classpath.
--executor-memory MEM Memory per executor (e.g. 1000M, 2G) (Default: 1G).
--proxy-user NAME User to impersonate when submitting the application.
This argument does not work with --principal / --keytab.
--help, -h Show this help message and exit.
--verbose, -v Print additional debug output.
--version, Print the version of current Spark.
Cluster deploy mode only:
--driver-cores NUM Number of cores used by the driver, only in cluster mode
(Default: 1).
Spark standalone or Mesos with cluster deploy mode only:
--supervise If given, restarts the driver on failure.
--kill SUBMISSION_ID If given, kills the driver specified.
--status SUBMISSION_ID If given, requests the status of the driver specified.
Spark standalone and Mesos only:
--total-executor-cores NUM Total cores for all executors.
Spark standalone and YARN only:
--executor-cores NUM Number of cores per executor. (Default: 1 in YARN mode,
or all available cores on the worker in standalone mode)
YARN-only:
--queue QUEUE_NAME The YARN queue to submit to (Default: "default").
--num-executors NUM Number of executors to launch (Default: 2).
If dynamic allocation is enabled, the initial number of
executors will be at least NUM.
--archives ARCHIVES Comma separated list of archives to be extracted into the
working directory of each executor.
--principal PRINCIPAL Principal to be used to login to KDC, while running on
secure HDFS.
--keytab KEYTAB The full path to the file that contains the keytab for the
principal specified above. This keytab will be copied to
the node running the Application Master via the Secure
Distributed Cache, for renewing the login tickets and the
delegation tokens periodically.
注:以上为在 spark2 版本中执行的。
1.local单机模式:
将 spark-1.6.3-bin-hadoop2.6.tgz
解压到相应的目录后什么都不用做就可以运行local单机模式:
[hadoop@h71 spark-1.6.3-bin-hadoop2.6]$ ./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[1] \
./lib/spark-examples-1.6.3-hadoop2.6.0.jar 100
local
模式:本地单线程运行;local[k]
模式:本地K个线程运行;local[*]
模式:用本地尽可能多的线程运行。
注意:集群中提交任务时不添加参数--master
即为本地模式
2.Yarn集群模式:
(1)client模式:
注:可在SecureCRT终端中看见结果。
[hadoop@h71 spark-1.6.3-bin-hadoop2.6]$ ./bin/spark-submit \
--master yarn-client \
--num-executors 3 \
--driver-memory 1G \
--executor-memory 1G \
--executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
./lib/spark-examples-1.6.3-hadoop2.6.0.jar 100
spark2版本:
./bin/spark-submit \
--master yarn \
--num-executors 3 \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.0.2.jar 100
注意:在 spark2 版本中 --master yarn
(默认client模式)等价于--master yarn-client
(已弃用)和--master yarn --deploy-mode client
(2)cluster模式:
注:结果只能在h71:8088里面可见!
[hadoop@h71 spark-1.6.3-bin-hadoop2.6]$ ./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--num-executors 3 \
--driver-memory 1G \
--executor-memory 1G \
--executor-cores 2 \
./lib/spark-examples-1.6.3-hadoop2.6.0.jar 100
spark2版本:
./bin/spark-submit \
--master yarn \
--deploy-mode cluster \
--num-executors 3 \
--driver-memory 1g \
--executor-memory 1g \
--executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.0.2.jar 100
注:我见网上Yarn集群模式需要在spark-env.sh添加如下配置:
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop
export YARN_CONF_DIR=$HADOOP_INSTALL/etc/hadoop
export SPARK_HOME=/usr/hadoopsoft/spark-1.6.3-bin-hadoop2.6
export SPARK_JAR=/usr/hadoopsoft/spark-1.6.3-bin-hadoop2.6/lib/spark-assembly-1.6.3-hadoop2.6.0.jar
export PATH=$SPARK_HOME/bin:$PATH
可是我在h71主节点中将spark-1.6.3-bin-hadoop2.6.tgz解压后什么都没有做,Yarn集群模式却可以正常使用。。。
2022-03-30号我在安装spark-3.0.3-bin-hadoop3.2时spark-env.sh没有配置HADOOP_CONF_DIR等运行在yarn模式的时候会报错:
3.standalone集群模式:
(1)client模式:
注:可在SecureCRT终端中看见结果。
[hadoop@h71 spark-1.6.3-bin-hadoop2.6]$ ./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://h71:7077 \
--executor-memory 1G \
--total-executor-cores 1 \
./lib/spark-examples-1.6.3-hadoop2.6.0.jar 100
spark2版本:
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
--executor-memory 1G \
./lib/spark-examples-1.6.3-hadoop2.6.0.jar 100
(2)cluster模式:
注:结果只能在h71:8088里面可见!
[hadoop@h71 spark-1.6.3-bin-hadoop2.6]$ ./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://h71:7077 \
--deploy-mode cluster \
--supervise \
--executor-memory 1G \
--total-executor-cores 1 \
./lib/spark-examples-1.6.3-hadoop2.6.0.jar 100
spark2版本:
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://master:7077 \
--executor-memory 1G \
--deploy-mode cluster \
./lib/spark-examples-1.6.3-hadoop2.6.0.jar 100