某人在企业中遇到的Spark问题记录[持续更新]

https://github.com/ssg-7max/ssg

  1. 目前 ssg内公司内部 spark streaming 处理数据源是kafka
  2. 目前遇到最大的问题是,会延迟,例如我们配置1分钟让窗口计算一次,很有可能随着数据量大,我们计算时间会超过1分钟,这样就会导致卡死在哪里,streaming一直累计算出不了结果,而且从监控还看不出有问题,只有从结果监控发现结果出不来。 解决方案:增加kafka的partition配置,配合streaming的线程数,可以加快执行速度
  3. 使用createStream接受消息,升级kafka的API后遇到receiver无声无色地死掉的情况 解决方案:改为KafkaUtils.createDirectStream 要配置kafka的参数:metadata.broker.list val kafkaParams = MapString, Stringauto.offset.reset,这个参数是,切换groupid之后,重头开始获取数据 val registerDS = KafkaUtils.createDirectStreamString, String, StringDecoder, StringDecoder.map(_._2)
  4. yarn分配executor时,会比较集中在一些机器上,如下面的图,集中到026上面了。 

    解决方案:目前还没有找问题解决方案,属于yarn的分配策略
  5. 对于连接池,为了提高效率,方面复用,可以通过广播变量方式 解决方案:广播变量不可以实现,在streaming中,而且executor之间传递这个,是需要序列化的,序列化一个已经连接的东西,是不行的,实际上是每个executor都去连接一下db, 最后结果不大,产生的连接数也不会多, 这样每个RDD都要去建立连接,insert DB。如果rdd过多,每次去连接是很浪费资源的,那缩减RDD的数量,当结果集很小的时候,通过reparation来处理,这样的话,就只有一个RDD在连接db。连接池解决资源复用的问题,根本上还是要控制发起连接的RDD数量,建议参考:http://blog.csdn.net/kntao/article/details/45364761
  6. kafka的partition数量和什么有关系? 解决方案:kafka的partition数量跟broker ×每个broker中的partition 有关 ,默认 不配置 每个broker partition是1
  7. spark streming运行时候报错“DStream checkpointing has been enabled but the DStreams with their functions are not serializable” 代码截图:解决方案:通过跟群里面人讨论,发现getFilterEachUserData(),第一个参数sqlContext是没有序列化的,去掉第一个参数后,不再包此错误
  8. spark streaming 不能toDF? 代码截图: 解决方案:filter 方法中,p不是rdd,要想转成rdd需要使用transform这个方法 修改后代码截图: 
  9. 群中有人说spark streaming中不能同时使用广播变量和checkpoint? 解决方案:这个问题需要有待核实
  10. Couldn‘t find leader offsets for Set ([luwc_test,0],[luwc_test,1]) 异常问题截图: 解决方案:要在kafka集群的hosts要配到spark的Driver的hosts里面去,用zk管kafka的话,是可以获取到Partition信息的,但是解析地址会失败,把hosts配成一致就可以了,直接用domain是不行的
  11. spark 编译源码 增加hive模块 解决方案:export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m" mvn -Pyarn -Phadoop-2.3 -Dhadoop.version=2.3.0-cdh5.1.0 -Phive -Dhive-version=0.12.0-cdh5.1.0 -Phive-thriftserver -Pspark-ganglia-lgpl -DskipTests clean package OR ./make-distribution.sh --name 2.3.0 --tgz -Phadoop-2.3 -Dhadoop.version=2.3.0-cdh5.1.0 -Pyarn -Phive -Dhive-version=0.12.0-cdh5.1.0 -Phive-thriftserver -Pspark-ganglia-lgpl -DskipTests clean package
时间: 2024-10-13 14:19:23

某人在企业中遇到的Spark问题记录[持续更新]的相关文章

学习中遇到的c++问题,持续更新

向上取整 使用ceil函数.ceil(x)返回的是大于x的最小整数.如: ceil(2.5) = 3 ceil(-2.5) = -2 学习中遇到的c++问题,持续更新

php中自己总结的函数(持续更新)

每一种编程语言在用的过程中都会发现有时候要一种特定需求的功能函数,结果没有内置这样的函数,这个时候就需要自己根据已有函数编写尽可能简单的函数,下面是我在做php相关工作时积累下的函数,会持续更新,您要是有好的也可以推荐给我,我在这里统一展示给大家. 第一,生成随机字符串 代码如下面所示,要注意以下,查看手册可以看到,php在版本4.2.0以前生成随机数时,需要先给随机数发生器播种,PHP_VERSION>4.2.0的版本,系统自动完成播种工作,所以这里要做下判断. <?php function

SDUT中大数实现的题目,持续更新(JAVA实现)

SDUT2525:A-B (模板题) import java.util.Scanner; import java.math.*; public class Main { public static void main(String[] args) { Scanner ci = new Scanner(System.in); BigInteger a; BigInteger b; while(ci.hasNext()) { a=ci.nextBigInteger(); b=ci.nextBigIn

2D游戏中常见的碰撞检测处理【持续更新】

~写在前面~ 嗯...打算开始每天写点啥了,不知道能坚持多久. 打算每天写一点或是技术或是应用或是设计或是什么的乱七八糟的有用的“干货”,所以起名叫“大杂烩”.以一周为单位来进行更新,周一~周三写一些图形方面的内容,四~六是和图形没有什么太大关联的内容(大家意会就好),周日作为一个更新重点试着写一些和paper有关的东西.打算做到“paper a week”不过感觉似乎有点不太现实总之先试试吧w 这篇里面用到的大部分图片应该都是用 http://editor.method.ac/ 这个东西做的,

HTML 与 CSS 中值得注意的要点(持续更新)

HTML <button> 元素 元素名称 属性 属性可选值 属性默认值 button type button ? reset ? submit ? <button> 元素 的 type 属性取值可以是 button.reset.submit:在IE8及更新版本和其他现代浏览器中该属性默认值为 submit. 可以观察如下代码及其最终效果: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q

OpenStack搭建企业私有云 一:认证服务(持续更新...)

云计算介绍 云计算是一种模型,能够提供无论在何时何地都可以便捷获取所需资源的模型,这些资源可以是网络资源.存储资源.服务器资源,甚至是服务器或者应用软件资源等. 云计算模型中有三种基本服务模型可用: IaaS:将硬件设备等基础资源封装成服务供用户使用.在IaaS环境中,用户相当于在使用裸机和磁盘,既可以让它运行Windows,也可以让它运行Linux. IaaS最大优势在于它允许用户动态申请或释放节点,按使用量计费.而IaaS是由公众共享的,因而具有更高的资源使用效率. PaaS:提供用户应用程

项目中常用的linux命令(持续更新)

1. du -sm * | sort -n 把当前目录下的文件(或目录)按大小排序,看下哪个地方占用最多: 2. pwd                     获取当前目录路径 3. tail -f $file_path    显示文件最后几行内容 4. pgrep $process_name 获取进程ID 5. ps -ef|grep $process_name 获取进程信息 ps -aux|grep $process_name 获取进程信息 6. kill $process_id 杀死进程

UVA+POJ中大数实现的题目,持续更新(JAVA实现)

UVA10494:If We Were a Child Again 大数除法加取余 import java.util.Arrays; import java.util.Scanner; import java.math.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); BigInteger a,b; String s; while(cin.ha

HDU中大数实现的题目,持续更新(JAVA实现)

HDU1002:大数加法,PE了N次 import java.util.Scanner; import java.math.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int T; T=cin.nextInt(); for(int z=1;z<=T;z++) { if(z!=1) System.out.println(); BigInte