SparkTroublshooting

加班至深夜,等车回家,发觉好久没写博客了,扒拉点存货,象征性的更新一把。

TroubleShooting

1、CDH集群默认使用内嵌数据库,要改成mysql

①需要自己安装mysql;

②提示JDBC driver cannot be found.Unable to find the JDBC databases jar on host

解决方案:拷贝mysql-connector-java-5.1.38.jar到安装hive的主机的hive/lib下(/opt/cloudera/parcels/CDH-5.11.0-1.cdh5.11.0.p0.34/lib/hive/lib)

2、CDH未集成Kafka

Kafka安装需要手动与CDH进行集成kafka相关包准备

①csd包:http://archive.cloudera.com/csds/kafka/

②parcel包:http://archive.cloudera.com/kafka/parcels/ (下载自己集群合适的版本)

测试使用:

KAFKA-0.8.2.0-1.kafka1.3.2.p0.56-el6.parcel

KAFKA-0.8.2.0-1.kafka1.3.2.p0.56-el6.parcel.sha1

③将csd包放到cm安装节点下的 /opt/cloudera/csd目录下

④将parcel包放到cm安装节点下的 /opt/cloudera/parcel-repo目录下载。

⑤分配并激活percel包添加kafka服务。

⑥启动服务。

3、CDH未集成Storm

可以翻翻我的博客,手动搭建Storm集群

4、Storm集群中jar包跑不通,一直提示找不到主类

解决方案:按官网上的例子,修改porm文件;把所有依赖全部打进jar包

5Storm中java.lang.RuntimeException: java.lang.RuntimeException: org.apache.zookeeper.KeeperException$ConnectionLossException:

KeeperErrorCode = ConnectionLoss for /brokers/topics/test/partitions at org.apach

解决方案:重启ZK;最大客户端连接数maxClientCnxns调大60=>300 然后成功了

6json格式异常

数据清洗,过滤脏数据

7删除topic

①delete命令如果kafaka启动时加载的配置文件中server.properties没有配置"delete.topic.enable=true",那么此时的删除并不是真正的删除,而是把topic标记为删除:marked for deletion

②进入zk客户端,删除/brokers/topics下面的topic

8HA下Standby的NameNode无法写入数据

解决方案:进入CDH UI(ip:7180)将Standby的NameNode设置为Active。

9雪崩问题

 

10java.lang.IllegalArgumentException: HBase configuration not found using key 'hbase.conf'

java.lang.IllegalArgumentException: HBase configuration not found using key 'null'

原因及解决方案:HbaseFactory中new了config,但topology提交的时候也new了config,所以提交的config是空的。使用HbaseFactory中的config来提交拓扑

11sbt项目jar包冲突

解决方案:在冲突的依赖后面加excludeAll ExclusionRule(name = "slf4j-log4j12")

12、kafka读取本地文件报错设置配置文件server.properties 中加入auto.create.topics.enable=true

命令行:tail -F aaa.txt | ./kafka-console-producer.sh --broker-list hadoop001:9092,hadoop002:9092,hadoop003:9092 --topic xxx

13、javac在服务器上编译出现

有时候为了测试某个东东,我们直接使用javac和java命令来编译和运行我们临时写出来的测试类。如果这个测试类用到了别的jar包怎么办呢?我们可以使用-classpath或者-cp参数来导入这些需要的包。假定:测试类f:\Test.java,它用到的lib分别是c:\abc.jar和d:\efg.jar。那么我们的编译和运行命令可以这样写

javac -cp c:\abc.jar;d:\efg.jar; f:\Test.java

java -cp c:\abc.jar;d:\efg.jar; f:\Test

注意:最后一个;后面必须要用空格把这个类和lib包分开。如果是在linux下,需要把;替换成:路径当然也要替换成linux格式的。

14、spark-shell启动报错:Yarn application has already ended! It might have been killed or unable to launch application master

spark-shell不支持yarn cluster,以yarn client方式启动

spark-shell --master=yarn --deploy-mode=client

启动日志,错误信息如下

其中“Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME”,只是一个警告,官方的解释如下:

大概是说:如果 spark.yarn.jars 和 spark.yarn.archive都没配置,会把$SPAR_HOME/jars下面所有jar打包成zip文件,上传到每个工作分区,所以打包分发是自动完成的,没配置这俩参数没关系。

"Yarn application has already ended! It might have been killed or unable to launch application master",这个可是一个异常,打开mr管理页面,我的是 http://192.168.128.130/8088 ,

重点在红框处,2.2g的虚拟内存实际值,超过了2.1g的上限。也就是说虚拟内存超限,所以contrainer被干掉了,活都是在容器干的,容器被干掉了,还玩个屁。

yarn-site.xml 增加配置:

2个配置2选一即可

复制代码

 1 <!--以下为解决spark-shell 以yarn client模式运行报错问题而增加的配置,估计spark-summit也会有这个问题。2个配置只用配置一个即可解决问题,当然都配置也没问题-->

 2 <!--虚拟内存设置是否生效,若实际虚拟内存大于设置值 ,spark 以client模式运行可能会报错,"Yarn application has already ended! It might have been killed or unable to l"-->

<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

<description>Whether virtual memory limits will be enforced for containers</description>

</property>

<!--配置虚拟内存/物理内存的值,默认为2.1,物理内存默认应该是1g,所以虚拟内存是2.1g-->

<property>

<name>yarn.nodemanager.vmem-pmem-ratio</name>

<value>4</value>

<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>

</property>

ERROR o.a.k.c.p.i.Sender – Uncaught error in kafka producer I/O thread: org.apache.kafka.common.protocol.types.SchemaException: Error reading field 'throttle_time_ms': java.nio.BufferUnderflowException: kafka-clients版本不对,用0.9的clients往0.8的kafka上写数据就会有这个问题,排除方式见上。

15、情景:运行Spark程序出现报错

17/05/09 14:30:58 WARN scheduler.TaskSetManager: Lost task 28162.1 in stage 0.0 (TID 30490, 127.0.0.1): java.io.IOException: Cannot obtain block length for LocatedBlock{BP-203532773-dfsfdf-1476004795661:blk_1080431162_6762963; getBlockSize()=411; corrupt=false; offset=0; locs=[DatanodeInfoWithStorage[127.0.0.1:1004,DS-e9905a06-4607-4113-b717-709a087b8b96,DISK], DatanodeInfoWithStorage[127.0.0.1:1004,DS-a5046b43-4416-45d9-8ff6-44891bcdf3b8,DISK], DatanodeInfoWithStorage[127.0.0.1:1004,DS-f6b04bbe-9555-4ac8-b06a-3317eb229511,DISK]]}

如果文件重要,则需要修复。个一个地查看文件状态并且恢复以这个文件为例:/user/admin/data/cdn//20170508/ngaahcs-access.log.3k3.201705081700.1494234003128.gz

执行修复命令:

hdfs debug recoverLease -path <path-of-the-file> -retries <retry times>

hdfs debug recoverLease -path /user/admin/data/cdn//20170508/ngaahcs-access.log.C00.1494234003128.gz -retries 10

16、flume 通道满了报错

做以下修改

agent.channels.memoryChanne3.keep-alive = 60

agent.channels.memoryChanne3.capacity = 1000000

修改java最大内存大小

vi bin/flume-ng

JAVA_OPTS="-Xmx2048m"

 

17使用了不恰当的方法导致rdd注册成表的时候报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值