原因 消费偏移量产生了大量的堆积 查看sparkUI界面可以得知
由于偏移量由服务端掌握,所以2天堆积的数据达到了5000万条 spark任务处理不过来
对策:重置消费偏移量,增大运行存储(需要增加的特别大,因为堆积的数据量太多,需要想办法处理)
spark.streaming.unpersist()设置为true,可以自动回收
Spark Streaming 中此错误产生原因是streaming产生了堆积,超过了receiver可承受的内存大小,因此旧的未执行的job被删除来去接收新的job。
调大 receiver 内存
kafka 直接消费没有做rdd transform的可考虑换 direct stream ,防止堆积。
spark 1.6.x 可采用 spark.streaming.backpressure.enabled 机制回压,控制接收速率,防止爆内存。SparkConf设置 spark.streaming.backpressure.enabled=true, spark.streaming.backpressure.pid.minrate=0.001
Ref:
Spark Streaming : Could not compute split, block not found
could-not-compute-split-block-not-found
问题3:org.apache.spark.sql.analysisexception: Table or view not found: `traintext`.`train`; line 1 pos 14;
没有导入hive-size.xml配置文件
map.fil使用了外部变量,但是这个变量不能序列化
Hive classes are not found”)?
问题5:SyntaxError: (hbase):1: odd number list for Hash.scan ' fdm:dayima_user',{'LIMIT'>=2}
scan ' fdm:dayima_user',{'LIMIT'>=2} 中>=前后需要空格
scan 'fdm:dayima_user', {'LIMIT' => 10}
删除MySQL目录下的ib_logfile0和ib_logfile1两个文件,就可以解决问题了。
这个数表示mysql要遍历多少数据才能找到,在innodb上是不准确的。
问题8:Master is initializing
服务器时间不一致
问题9:found a unknown exceptionjava.lang.NoClassDefFoundError: org/apache/hadoop/hbase/util/Bytes
ERROR [main] hive.log: error in initSerDe: java.lang.ClassNotFoundException Class org.apache.hadoop.hive.hbase.HBaseSerDe not found
1 在spark-submit的时候添加参数,使用hive的库hive-hbase-handler-1.1.0-cdh5.10.0.jar
--jars /home/hadoop/app/hive-1.1.0-cdh5.10.0/lib/hive-hbase-handler-1.1.0-cdh5.10.0.jar
2 pom.xml文件中引入依赖
问题10:ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
最终在网上找到了解决方案,是因为hadoop处在安全模式下。所以hbase的操作会出现异常。具体原理我目前还不太清楚。解决方案是手动退出安全模式
./hadoop dfsadmin -safemode leave
之后重启hbase,问题解决
问题11:ERROR DiskBlockManager: Exception while deleting local spark dir
对获取到的数据进行cache()
使用https://ip:8443访问
问题13:Error parsing arguments for list-databases:
–
-
连接符是中文格式 换成英文格式
问题14:from wordcloud import WordCloud
python -m pip install wordcloud
下载 https://www.microsoft.com/en-us/download/confirmation.aspx?id=44266
问题15:75000 millis timeout while waiting for channel to be ready for read. ch : java.nio.channels.SocketChannel[connected local=/10.10.10.131:28517 remote=/10.10.10.131:50010]
出现以上错误是因为datanode的服务线程连接数都被占用,导致Spark等待超时。可以通过以下方法解决:
根据datanode的资源情况适当增加的服务线程数:在hdfs-default.xml配置文件里面新增或修改dfs.datanode.handler.count,默认是10
增加客户端的超时时间dfs.client.socket-timeout,默认是60000ms,注意,旧版本的Hadoop用的是dfs.socket.timeout,可参考http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/DeprecatedProperties.html
例如以下Java代码设置超时时间为300000ms=300s=5分钟:
try (JavaSparkContext context = new JavaSparkContext(new SparkConf().setMaster("local[*]").setAppName("test"))) {
context.sc().hadoopConfiguration().set("dfs.client.socket-timeout", "300000");
问题16:Cannot truncate non-managed table
hive不能删除外部表 在创表语句设置的外部表 external
要清空表或者删除数据
方法一:直接删除hdfs上面的分区数据
方法二:将表改为内部表
ALTER TABLE 表名 SET TBLPROPERTIES('EXTERNAL'='False');
问题17:return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
这个坑不算大,因为通过查找hive,spark日志发现原来spark找不到org.apache.hadoop.hive.contrib.serde2.RegexSerDe
这个网上解决方法就多了,就是加上hive.aux.jars.path 这个属性里面你这个jar包地址如果是本地的记住前面要加file://哦不然找不到
问题18:Exception in thread "main" java.lang.NoSuchMethodError: scala.runtime.VolatileByteRef.create(B)Lscala/runtime/VolatileByteRef;
经排查,引用的org.apache.kafka下的kafka_2.11与设定的scala版本(2.10)有冲突,所以调整为kafka_2.10就解决了
官方回答:https://www.cloudera.com/documentation/spark2/latest/topics/spark2_kafka.html#running_jobs
简而言之:在提交运行spark任务之前先提交 export SPARK_KAFKA_VERSION=0.10
原因 数据源数据量过大,机器的内存无法满足需求
解决:增大参数内存空间
原因 :数据量过大 具体不明
解决:暂未解决
原因 :
https://issues.apache.org/jira/browse/SPARK-19275
spark中的一个batch处理时间(注意是batch中数据的处理时间,不是一个batch的窗口时间,我的batch窗口时间是5s,但由于kafka挤压了很多数据,所以处理时间要几分钟)大于kafka的session的默认心跳时间(30s),导致连接断掉
解决:
.set(
"spark.streaming.kafka.consumer.poll.ms"
, "
140000 ")
原因 :
sklearn0.20移除了grid_search模块
解决:
如果使用sklearn0.20版本的朋友,那么使用网格搜索(gridsearch)寻找最优参数模型的话,sklearn.grid_search.GridsearchCV类已经被移除了,只有通过sklearn.model_selection调用GridsearchCV。
org.apache.hadoop.hbase.generated.master.table_jsp._jspService(table_jsp.java:236)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)javax.servlet.http.HttpServlet.service(HttpServlet.java:820)org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)org.apache.hadoop.hbase.http.lib.StaticUserWebFilter$StaticUserFilter.doFilter(StaticUserWebFilter.java:113)org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)org.apache.hadoop.hbase.http.ClickjackingPreventionFilter.doFilter(ClickjackingPreventionFilter.java:48)org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)org.apache.hadoop.hbase.http.HttpServer$QuotingInputFilter.doFilter(HttpServer.java:1354)org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)org.apache.hadoop.hbase.http.NoCacheFilter.doFilter(NoCacheFilter.java:49)org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)org.apache.hadoop.hbase.http.NoCacheFilter.doFilter(NoCacheFilter.java:49)org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:767)org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)org.mortbay.jetty.Server.handle(Server.java:326)org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
原因:hbase节点选择错误
解决:更换hbase的节点
原因:内存不够
解决方案:设置rdd存储模式,由rdd.cache改成rdd.persist(StorageLevel.MEMORY_AND_DISK_SER)
原因:sc.textFile在项目添加了core-site.xml,hdfs-site.xml,hive-site.xml这三个配置文件后已经读取不到本地C,D,E盘里面的文件了。
解决方案1.删除这3个配置文件
解决方案2.将你要读取的文件上传到HDFS或者集群所在的机器上
问题详情:unpersist()里面填写布尔值,默认是ture
意思是删除rdd在内存中持久化的数据
那如果填写的是false,也就是unpersist(false),意思就是不删除rdd在内存中持久化的数据,那意义何在?
解决方案:待解决
刚明白:在任务结束的时候会调用unpersist()但是有可能保存在内存中的数据是我们所需要的,所以我们通过设置false将数据保留
如果不需要添加其他的jar包
org.scala-tools
maven-scala-plugin
2.15.2
compile
testCompile
org.apache.maven.plugins
maven-compiler-plugin
3.3
1.8
UTF-8
maven-assembly-plugin
jar-with-dependencies
如果需要用到其他的jar包
net.alchim31.maven
scala-maven-plugin
3.2.2
compile
testCompile
-dependencyfile
${project.build.directory}/.scala_dependencies
org.apache.maven.plugins
maven-shade-plugin
2.4.3
package
shade
*:*
META-INF/*.SF
META-INF/*.DSA
META-INF/*.RSA
org.apache.maven.plugins
maven-compiler-plugin
1.6
解决方案:
将参数设置调大
-XX:MetaspaceSize=1G -XX:MaxMetaspaceSize=1G
问题28:Data truncation: Out of range value for column 'monthly_sales' at row 4
sqoop导入到mysql的过程中 mysql的monthly_sales字段长度不够。
解决:修改字符串长度