1、spark程序停-启,实时数据量一下子太多,如何处理
2、spark程序数据丢失,如何处理?duration是多少?
Checkpointing
一个流应用程序必须全天候运行,所有必须能够解决应用程序逻辑无关的故障(如系统错误,JVM崩溃等)。为了使这成为可能,Spark Streaming需要checkpoint足够的信息到容错存储系统中, 以使系统从故障中恢复。
Metadata checkpointing:保存流计算的定义信息到容错存储系统如HDFS中。这用来恢复应用程序中运行worker的节点的故障。元数据包括
Configuration :创建Spark Streaming应用程序的配置信息
DStream operations :定义Streaming应用程序的操作集合
Incomplete batches:操作存在队列中的未完成的批
Data checkpointing :保存生成的RDD到可靠的存储系统中,这在有状态transformation(如结合跨多个批次的数据)中是必须的。在这样一个transformation中,生成的RDD依赖于之前 批的RDD,随着时间的推移,这个依赖链的长度会持续增长。在恢复的过程中,为了避免这种无限增长。有状态的transformation的中间RDD将会定时地存储到可靠存储系统中,以截断这个依赖链。
元数据checkpoint主要是为了从driver故障中恢复数据。如果transformation操作被用到了,数据checkpoint即使在简单的操作中都是必须的。
3、kafka的consume group概念,kafka工作原理
4、spark去重
5、hbase读写流程
6、乐观锁,悲观锁,并发
7、命令行查看java进程
8、java程序崩溃,没有日志,如何排查问题
启动java时把输出重定向到文件,java xxx >> logfile 2>&1; echo $? >> logfile。另外有时java退出是coredump了,ulimit -c 把core打开
9、hbase,hive,hadoop调优
10、hadoop小文件处理,spark小文件处理
11、jvm内存
12、hbase模糊查询
惰性操作/延迟计算(Lazy Evaluation)
RDD的创建和转换方法都是惰性操作,并不会立即执行
例如,当使用SparkContext的textFile方法从HDFS中读取文件时,Spark并不会马上从硬盘中读取文件,数据只有在必要时才会被加载
Spark仅仅记录了这个RDD是怎么创建的,在它上面进行操作又会创建怎样的RDD等信息,为每个RDD维护其血统信息,在需要时创建或重建RDD
Spark对RDD的计算,在第一次使用action操作的时候才会执行
Spark通过内部记录metadata表,以表明transformations操作已经被响应了
缓存
回顾RDD的创建有两种方法,可以从存储系统中读取数据,也可以从现有RDD(集合)的转换操作而来
默认每次在RDDs上面进行action操作时,Spark都遍历这个调用者RDD的血统关系图,执行所有的转换来创建它重新计算RDDs
如果想要重复利用一个RDD(直接利用之前计算出的某个RDD结果),可以使用cache()/persist()
cache
把RDD存储在集群中执行者的内存中,实际上是将RDD物化在内存中
persist
是一个通用版的cache方法,通过传参的方法告知,缓存级别、缓存在哪:
网友评论