Operation category READ is not supported in state standby是什么原因导致的?org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.StandbyException): Operation
解析:
category READ is not supported in state standby 答:此时请登录Hadoop的管理界⾯查看运⾏节点是否处于standby
如登录地址是:http://xx.xx.xx.xx:50070/dfshealth.html#tab-overview
www.aboutyun.com/thread-24246-1-1.html 40/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发
如果是,则不可在处于StandBy机器运⾏spark计算,因为该台机器为备分机器
不配置spark.deploy.recoveryMode选项为ZOOKEEPER,会有什么不好的地⽅
解析:
如果不设置spark.deploy.recoveryMode的话,那么集群的所有运⾏数据在Master重启是都会丢失,可参考BlackHolePersistenceEngine的实现。
解析:
因为涉及到多个Master,所以对于应⽤程序的提交就有了⼀点变化,因为应⽤程序需要知道当前的Master的IP地址和端⼝。这种HA⽅案处理这种情况很简单,只需要在SparkContext指向⼀
个Master列表就可以了,如spark://host1:port1,host2:port2,host3:port3,应⽤程序会轮询列表。
No Space Left on the device(Shuffle临时⽂件过多)
解析:
由于Spark在计算的时候会将中间结果存储到/tmp⽬录,⽽⽬前linux⼜都⽀持tmpfs,其实就是将/tmp⽬录挂载到内存当中。
那么这⾥就存在⼀个问题,中间结果过多导致/tmp⽬录写满⽽出现如下错误
No Space Left on the device
解决办法
第⼀种:修改配置⽂件spark-env.sh,把临时⽂件引⼊到⼀个⾃定义的⽬录中去即可
export SPARK_LOCAL_DIRS=/home/utoken/datadir/spark/tmp
第⼆种:偷懒⽅式,针对tmp⽬录不启⽤tmpfs,直接修改/etc/fstab
java.lang.OutOfMemory, unable to create new native thread
解析:
Caused by: java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:640)
上⾯这段错误提⽰的本质是Linux操作系统⽆法创建更多进程,导致出错,并不是系统的内存不⾜。因此要解决这个问题需要修改Linux允许创建更多的进程,就需要修改Linux最⼤进程数。
[utoken@nn1 ~]$ulimit -a
临时修改允许打开的最⼤进程数
[utoken@nn1 ~]$ulimit -u 65535
临时修改允许打开的⽂件句柄
[utoken@nn1 ~]$ulimit -n 65535
永久修改Linux最⼤进程数量
www.aboutyun.com/thread-24246-1-1.html 41/57
2019/4/24 spark相关的⾯试题跟答案,带着问题学习效果更佳哟。?)-⾯试区-about云开发
[utoken@nn1 ~]$ vim /etc/security/limits.d/90-nproc.conf
soft nproc 60000
root soft nproc unlimited
永久修改⽤⼾打开⽂件的最⼤句柄数,该值默认1024,⼀般都会不够,常⻅错误就是not open file
[utoken@nn1 ~]$ vim /etc/security/limits.conf
bdata soft nofile 65536
bdata hard nofile 65536