我有一个Spark作业,仅在确实必要时才初始化Spark上下文:
val conf = new SparkConf()
val jobs: List[Job] = ??? //get some jobs
if(jobs.nonEmpty) {
val sc = new SparkContext(conf)
sc.parallelize(jobs).foreach(....)
} else {
//do nothing
}
如果部署模式是“客户端”,它在纱线上工作得很好
spark-submit --master yarn --deploy-mode client
然后我将部署模式切换到“集群”,它在作业的情况下开始崩溃。isEmpty
spark-submit --master yarn --deploy-mode cluster
下面是错误文本:
信息纱线。客户:申请的申请报告_1509613523426_0017(州:已接受)17/11/02 11:37:17
信息纱线。客户:申请的申请报告_1509613523426_0017(状态:失败)17/11/02 11:37:17
INFO纱线。客户端:客户端令牌:不适用诊断:应用程序application_1509613523426_0017失败2次,原因是AM容器appattempt_1509613523426_0017_000002退出exitCode:-1000有关更详细的输出,请检查应用程序跟踪
Page:http://xxxxxx.com:8088/cluster/app/application_1509613523426_0017Then,点击每个尝试日志的链接。诊断:文件不存在:hdfs://xxxxxxx/. SPARKSTING/application_1509613523426_0017/__spark_libs__997458388067724499.zipjava.io.FileNotFoundExc0019:文件不存在:hdfs://xxxxxxx/. SPARKSTING/application_1509613523426_0017/__spark_libs__997458388067724499.ziporg.apache.hadoop.hdfs.分布式文件系统$22.do调用(分布式文件ystem.java:1309)org.apache.hadoop.hdfs.分布式文件系统22.do调用(分布式文件ystem.java:1301)org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)org.apache.hadoop.hdfs.分布式文件ystem.get文件状态(分布式文件ystem.java:1301)在org.apache.hadoop.yarn.util.FSDownload.copy(FSDownload.java:253)在org.apache.hadoop.yarn.util.FSDowload。在org. apache. hadoop. yarn. util.上运行(FSDowload. java: 361)。在java. security上运行(FSDown load. java: 359)。AccessController. doPrivileged(本地方法)在javax. security. auth。主题. doAs(主题. java: 422)在org. apache. hadoop. security。UserGroupInformation. doAs(UserGroupInformation. java: 1698)at org. apache. hadoop. yarn. util.fsdowload. call(fsdowload. java: 358)at org. apache. hadoop. yarn. util。在java. util. con当前调用(FSDowload. java: 62)。FutureWork. run(FutureTasks. java: 266)at java. util. con当前。执行器$RunnableAdapter. call(Executors. java: 511)在java. util. con当前。FutureWork. run(FutureTasks. java: 266)at java. util. con当前。ThreadPoolExecutor. runWorker(ThreadPoolExecutor. java: 1142)在java. util. con当前。在java. lang上运行(ThreadPoolExecator. java: 617)。线程.运行(线程. java: 748)
这次尝试失败了。应用程序失败。ApplicationMaster主机:不适用ApplicationMaster RPC端口:-1队列:开发人员启动时间:1509622629354最终状态:跟踪URL失败:http://xxxxxx.com:8088/cluster/app/application_1509613523426_0017用户:线程“主”组织中的xxx异常。阿帕奇。火花SparkException:Application_1509613523426_0017在组织中以失败状态完成。阿帕奇。火花部署纱线客户在org上运行(Client.scala:1104)。阿帕奇。火花部署纱线客户美元。main(Client.scala:1150)位于org。阿帕奇。火花部署纱线客户sun上的main(Client.scala)。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:62)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。朗。反思。方法在org调用(Method.java:498)。阿帕奇。火花部署SparkSubmit$。org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:755)位于org。阿帕奇。火花部署SparkSubmit$。doRunMain$1(SparkSubmit.scala:180)位于org。阿帕奇。火花部署SparkSubmit$。在org上提交(SparkSubmit.scala:205)。阿帕奇。火花部署SparkSubmit$。main(SparkSubmit.scala:119)位于org。阿帕奇。火花部署SparkSubmit。main(SparkSubmit.scala)17/11/0211:37:17信息工具。ShutdownHookManager:shutdownhook称为17/11/02 11:37:17 INFO util。ShutdowHookManager:删除目录/tmp/spark-a5b20def-0218-4b0c-b9f8-fdf8a1802e95
是纱线支持中的错误还是我错过了什么?
SparkContext
负责与群集管理器通信。如果应用程序已提交到集群,但从未创建上下文,则Thread无法确定应用程序的状态-这就是为什么会出现错误。
我尝试将spark应用程序驱动程序/执行程序日志发送到kafka topic。它在Eclipse中工作 在部署群集模式时,它会显示 ClassNotFoundException。 我添加了,,,,和maven,但它仍然显示 组织。阿普切。Kafka。log4jappender类NotFoundException。 在服务器中,运行jar自身的spark程序中并没有与Kafka相关的jar。 请告诉
启动Apache Spark集群通常是通过代码库提供的spark-submit shell脚本完成的。但问题是,每次集群关闭并重新启动时,您都需要执行那些shell脚本来启动spark集群。 我也对其他解决方案持开放态度。
如何确定spark独立群集模式上的工作线程数?在独立群集模式下添加工作线程时,持续时间将缩短。 例如,对于我的输入数据3.5 G,WordCount需要3.8分钟。但是,在我添加了一个内存为4 G的工作器后,需要2.6分钟。 增加调谐火花的工人可以吗?我正在考虑这方面的风险。 我的环境设置如下:, 内存128克,16个CPU,用于9个虚拟机 输入数据信息 HDFS中的3.5 G数据文件
Redis streams是否受益于群集模式?假设您有10个流,它们是分布在集群中还是全部分布在同一个节点上?我计划使用Redis streams实现真正的高吞吐量(每秒200万条消息),因此我担心Redis streams在这种规模下的性能。 如果Redis streams不能在集群模式下进行开箱即用的扩展,那么任何关于水平扩展Redis streams的指导都会非常棒。
来自log的信息(c:\spark\logs\spark--org.apache.spark.deploy.master.master-1-xxxxxx.out: Spark命令:C:\program files\java\jdk1.8.0_72\bin\java-cp C:\Spark/conf\;C:\spark/lib/spark-assembly-1.6.0-Hadoop2.6.0.jar