加班至深夜,等车回家,发觉好久没写博客了,扒拉点存货,象征性的更新一把。
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包
5、Storm中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 然后成功了
6、json格式异常
数据清洗,过滤脏数据
7、删除topic
①delete命令如果kafaka启动时加载的配置文件中server.properties没有配置"delete.topic.enable=true",那么此时的删除并不是真正的删除,而是把topic标记为删除:marked for deletion
②进入zk客户端,删除/brokers/topics下面的topic
8、HA下Standby的NameNode无法写入数据
解决方案:进入CDH UI(ip:7180)将Standby的NameNode设置为Active。
9、雪崩问题
10、java.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来提交拓扑
11、sbt项目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
2
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
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注册成表的时候报错