遇到的问题集

问题1:streaming提交任务产生了堆积

原因 消费偏移量产生了大量的堆积 查看sparkUI界面可以得知

由于偏移量由服务端掌握,所以2天堆积的数据达到了5000万条 spark任务处理不过来 

对策:重置消费偏移量,增大运行存储(需要增加的特别大,因为堆积的数据量太多,需要想办法处理)

 

 

spark.streaming.unpersist()设置为true,可以自动回收

 

 

 

问题2:Recoverable Kafka WordCount : Could not compute split, block input-0-1449191870000 not found

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配置文件

 

问题4:org.apache.spark.SparkException: Task not serializable

map.fil使用了外部变量,但是这个变量不能序列化

 

Hive classes are not found”)?

org.apache.spark

spark-hive_2.11

2.0.0

 

 

问题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}

 

 

问题6:MySQL Plugin 'InnoDB' init function returned error

删除MySQL目录下的ib_logfile0和ib_logfile1两个文件,就可以解决问题了。

 

 

 

问题7:使用explain分析得到的结果中rows

这个数表示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文件中引入依赖

org.apache.hive

hive-hbase-handler

2.3.2

 

 

 

问题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()

 

 

问题12:部署azkaban报错:Unrecognized SSL message, plaintext connection?

使用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就解决了

 

 

 

问题19:Exception in thread “streaming-start” java.lang.NoSuchMethodError: org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(Ljava/util/Collection;)V

官方回答:https://www.cloudera.com/documentation/spark2/latest/topics/spark2_kafka.html#running_jobs

简而言之:在提交运行spark任务之前先提交 export SPARK_KAFKA_VERSION=0.10

 

 

问题20:19/01/11 23:30:06 WARN storage.BlockManagerMasterEndpoint: No more replicas available for rdd_6761_1 !

原因  数据源数据量过大,机器的内存无法满足需求

解决:增大参数内存空间

 

问题21:WARN hdfs.DFSClient: Slow ReadProcessor read fields took 

原因 :数据量过大 具体不明

解决:暂未解决

 

 

问题21:Caused by: java.lang.AssertionError: assertion failed: Failed to get records for ... after polling for 120000 

原因 :

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 ")

 

 

 

问题22:sklearn0.20移除了grid_search模块 

原因 :

sklearn0.20移除了grid_search模块

解决: 如果使用sklearn0.20版本的朋友,那么使用网格搜索(gridsearch)寻找最优参数模型的话,sklearn.grid_search.GridsearchCV类已经被移除了,只有通过sklearn.model_selection调用GridsearchCV。

 

问题23

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的节点

 

问题24:storage.BlockManagerMasterEndpoint: No more replicas available for 

原因:内存不够

解决方案:设置rdd存储模式,由rdd.cache改成rdd.persist(StorageLevel.MEMORY_AND_DISK_SER)

 

 

 

问题25:Exception in thread "main" java.lang.IllegalArgumentException: Pathname /e:/home/stage/zhangyi/temp/item.csv from hdfs://mycluster/e:/item.csv is not a valid DFS filename.

原因:sc.textFile在项目添加了core-site.xml,hdfs-site.xml,hive-site.xml这三个配置文件后已经读取不到本地C,D,E盘里面的文件了。

解决方案1.删除这3个配置文件

解决方案2.将你要读取的文件上传到HDFS或者集群所在的机器上

 

 

问题25:  spark.streaming.unpersist.

问题详情:unpersist()里面填写布尔值,默认是ture

意思是删除rdd在内存中持久化的数据

那如果填写的是false,也就是unpersist(false),意思就是不删除rdd在内存中持久化的数据,那意义何在?

解决方案:待解决

刚明白:在任务结束的时候会调用unpersist()但是有可能保存在内存中的数据是我们所需要的,所以我们通过设置false将数据保留

 

 

问题26:打包文件的大小之分

如果不需要添加其他的jar包

   
            
                org.scala-tools
                maven-scala-plugin
                2.15.2
                
                    
                        
                            compile
                            testCompile
                        
                    
                
            

            
                
                org.apache.maven.plugins
                maven-compiler-plugin
                3.3
                
                    1.8
                    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
                    1.6
                
            
        

问题27:Exception in thread "main" java.lang.OutOfMemoryError: Metaspace 

解决方案:

将参数设置调大

-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字段长度不够。

解决:修改字符串长度

 

 

你可能感兴趣的:(遇到的问题集)