spark

1.persist:

默认cache()过程是将RDD persist在内存里,persist()操作可以为RDD重新指定StorageLevel.

RDD的persist()和unpersist()操作,都是由SparkContext执行的(SparkContext的persistRDD和unpersistRDD方法)。

Persist过程是把该RDD存在上下文的TimeStampedWeakValueHashMap里维护起来。也就是说,其实persist并不是action,并不会触发任何计算。

Unpersist过程如下,会交给SparkEnv里的BlockManager处理。

 

2. standalone模式和yarn模式,mesos模式:

 

 

3.如何在yarn cluster开启spark的history server:

(1) 在spark的conf中:spark.eventLog.enabled 设置为true

设置spark.eventLog.dir,可以是local,也可以是hdfs的地址

(2) 在ip:18080打开histroy server的web ui

可能出现的问题:

a. 无history信息展示

b. web ui 上的路径和 conf中设置的不一致, 请check路径

c. 启动sbin/start-history-server.sh脚本的时候,出现address bind的问题,一般的因为起了多个history server,特别是在container里面,很容易在外面起了,在里面再起history的时候就会报这个warning.

d.出来evenlog directory,有时还需要在spark-defaults.conf中配置spark.history.fs.logDirectory,表示history server读取日志的位置

e.使用--master yarn时,可能会出现

When running with master 'yarnt' either HADOOP_CONF_DIR or YARN_CONF_DIR must be set in the environment.

如上错误是因为: 没有指定hadoop的配置文件目录,所以可以执行
export HADOOP_CONF_DIR=/home/hadoop/etc/hadoop

4. spark 中colease和repartition的差别

一般需要减少partiontion数量的时候,可以直接调用colease,默认是不做shuffle的,而repartition,会做shuffle。

5. 在提交spark任务时,注意设置参数,--executor-cores --total-executor-cores

 

一般:18080是history server的端口,50070是hadoop webui的端口, 8080 是spark standalone webui的端口,8188(perhaps)是hadoop yarn webui的端口

 

6. java.lang.IllegalStateException: Please initialize AllReduceParameter first 

spark.speculation: default false,If set to "true", performs speculative execution of tasks. This means if one or more tasks are running slowly in a stage, they will be re-launched.

spark.scheduler.executorTaskBlacklistTime: 默认为0,如果某台worker节点出现了故障,task执行失败后,该executor进入黑名单,然后在executorTaskBlacklistTime时间内不会往该executor上分发任务。而刚失败的任务会在其它节点重试

使用BIgDL开源框架,同时开启这两项,可能会遇到错误:

java.lang.IllegalStateException: Please initialize AllReduceParameter first

 7.配置日志

Spark使用log4j记录日志. 你可以在conf增加一个log4j.properties文件. 其文件夹下有一个log4j的模版.

8. blockmanager

每个Driver和Executor都有自己的BlockManager,它管理RDD缓存、Shuffle计算结果、Broadcast存储等.

当executor 的 blockManager启动创建后会向blockManagerMaster注册,其中blockManagerMaster位于driver上,管理者数据的元数据,比如包含了blockmanagerInfo,blockStatus,当blockManager进行了增删改操作,blockManager会通知blockManagerMaster,blockManagerMaster通过blockManagerInfo内的blockStatus进行元数据的操作。

blockManager中管理的几种存储级别:内存,磁盘,tachyon,每种存储级别会有对应的类进行数据的操作,分别是memoryStore,diskStore,tachyonStore

 

 

 

 

 

 

spark 常见错误总结:http://blog.csdn.net/sdujava2011/article/details/51018507

posted @ 2017-05-09 13:45  大球和二憨  阅读(838)  评论(0编辑  收藏  举报