遇到的问题集

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

 

 

 

问题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”)?

<dependency>

<groupId>org.apache.spark</groupId>

<artifactId>spark-hive_2.11</artifactId>

<version>2.0.0</version></dependency>

 

 

问题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文件中引入依赖

<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-hbase-handler -->

<dependency>

<groupId>org.apache.hive</groupId>

<artifactId>hive-hbase-handler</artifactId>

<version>2.3.2</version>

</dependency>

 

 

 

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

   <plugins>
            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!-- MAVEN 编译使用的JDK版本 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>

 

如果需要用到其他的jar包

 <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <args>
                                <arg>-dependencyfile</arg>
                                <arg>${project.build.directory}/.scala_dependencies</arg>
                            </args>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass></mainClass>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>

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

解决:修改字符串长度

 

 

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值