热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark遇到的问题

本人spark小白一枚,最开始使用spark时遇到过许多问题,现在把它们都记录下来,希望给后人一个参考。大神不要嘲笑哦~~~1.清除mac缓存:rm-rfetcudev

本人spark小白一枚,最开始使用spark时遇到过许多问题,现在把它们都记录下来,希望给后人一个参考。大神不要嘲笑哦~~~


1.清除mac缓存:rm -rf /etc/udev/rules.d/70-persistent-net.rules


2.spark-submit \

--class main.scala.SparkWordCount \

--master spark://192.168.109.130:7077 \

/home/yingying/SparkTest.jar \

file:///usr/spark/spark-1.5.1-bin-hadoop2.6/README.md


3.出错Error: Could not find or load main class org.apache.spark.launcher.Main时,把spark重新装一遍即可= =

 

 

4. 出现"*** is already defined as object ***"错误

 

编写好SogouResult后进行编译,出现"Sogou is already as object SogouResult"的错误,

 

出现这个错误很可能不是程序代码的问题,很可能是使用Scala JDK版本问题,作者在使用scala-2.11.4遇到该问题,换成scala-2.10.4后重新编译该问题得到解决,需要检查两个地方配置:LibrariesGlobal Libraries分别修改为scala-2.10.4

 

 

  def main(args:Array[String]){

    val cOnf= new SparkConf().setAppName("Spark Pi")

    val spark = new SparkContext(conf)

    val data = spark.textFile("data")

 

    val mappeddata = data.map(num => {(num % 10 , num)})

    val count = mappeddata.reduceByKey((a,b) => {a+b}).collect()

 

    val sum_count = count.map(data => {data._2}).sum

 

    var temp = 0

    var index = 0

    val mid = sum_count/2

    for(i <- 0 to 10) {

      temp = temp + count(i)

      if(temp >= mid) {

        index = i

        break

      }

    }

 

    val offset = temp -mid

 

    val result = mappeddata.filter(num => num._1 == index).takeOrdered(offset)

    println("Median is "+ result(offset))

    spark.stop()

  }


5.WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

 

解决方法:因为我的集群环境,每个节点只剩下500MB内存了,由于我没有配置SPARK_EXECUTOR_MEMORY参数,默认会使用1G内存,所以会出现内存不足,从而出现上面日志报的警告信息。

所以解决办法是添加如下参数:

export SPARK_EXECUTOR_MEMORY=100M

 

转自:http://blog.csdn.net/jiangshouzhuang/article/details/48844859

 

6.集群启动spark-shell,即MASTER=spark://SparkMaster:7077 ./spark-shell出错,解决方法:把MASTER改成master==简直不能再无语。。)相关链接:http://bbs.csdn.net/topics/390941085

 

7.hadoopdatanode启动不起

 

例如:

NameNodeDataNodenamespaceID不一致,这个错误是很多人在安装时会遇到的,日志信息为:

java.io.IOException: Incompatible namespaceIDs in/root/tmp/dfs/data:

NameNode namespaceID = 1307672299; DataNode namespaceID =389959598

HDFS一直没有启动,读者可以查询日志,并通过日志进行分析,以上提示信息显示了NameNodeDataNodenamespaceID不一致。

这个问题一般是由于两次或两次以上的格式化NameNode造成的,有两种方法可以解决,第一种方法是删除DataNode的所有资料(及将集群中每个datanode/hdfs/data/current中的VERSION删掉,然后执行hadoopnamenode-format重启集群,错误消失。<推荐>);第二种方法是修改每个DataNodenamespaceID(位于/hdfs/data/current/VERSION文件中)<优先>或修改NameNodenamespaceID(位于/hdfs/name/current/VERSION文件中),使其一致。

参考:http://kisuntech.blog.51cto.com/8003773/1304629

 

8.

ERROR util.SparkUncaughtExceptionHandler: Uncaught exception in thread Thread[appclient-registration-retry-thread,5,main]

spark-submit RECEIVE SIGNAL 15

解决方法:提交任务时,把Master7077改成192.168.109.130:7077

 

9.某个datanode突然连不上namenode时,先把这个datanodetmp目录里面的VERISON删掉,然后在namonode上执行hadoop dfsadmin -refreshNodes ,再在死掉的datanode上面执行hadoop-daemon.sh start datanode,然后ok

相关链接:http://zhousheng29.iteye.com/blog/1667101(跟他的错误原因不一样,但是解决方法一样)

 

10.spark-submit提交作业时,读取本地文件明明路径是对的但是报错file doesn exists

至今不知道解决方法,换了个文件就好了,无语==

 

11.

代码一:object WorldCount {

  def main(args:Array[String]){

    val master = args(0)

    val sc = new SparkContext(master,"WordCount",System.getenv("SPARK_HOME"))

    val input = sc.textFile(args(1))

    val words = input.flatMap(_.split(" "))

    val count = words.map((_,1)).reduceByKey(_+_)

    count.saveAsTextFile(args(2))

  }

}

 

代码二:object WordCount2 {

  def main(args:Array[String]){

    val master = args(0)

    val sc = new SparkContext(master,"WordCount2",System.getenv("SPARK_HOME"))

    val input = sc.textFile(args(1))

    val wordcount = input.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_)

    wordcount.collect

    wordcount.saveAsTextFile(args(2))

  }

}

 

代码一不能执行成功但是代码二可以,因为。。。。代码二多了一个collect。。。。哎呦我去,折腾了一下午,宝宝心里苦

 

12.scala程序打包:

(0)最最首先要在projectStruture里面把spark的库添加进去,添加好的时候如图


 

1scr目录下面建目录main,再在main下面建一个目录scala(不知道这两个目录是不是必需的)

2projectStruture里面,Artifacts--->添加上,然后把没用的包都删掉,弄好之后如图

 

(3)Bulid--->bulid Artifacts--->bulid

(4)完活,去工程的文件夹--->out--->artifacts里面就可以找到啦


13.以指定executor-memory的方式启动spark-shell:

 

14.slave机器用jps查看进程的时候有DataNode,但是用web查看的话或者用bin/hadoop dfsadmin -reportlive nodes0. 这说明datanode没有正常启动。看了datanodelog,显示一直在连接master但是一直retry,我查过所有的hosts,并且无论用ping还是ssh都是通的。

解决办法:是配置文件core-site.xml出了问题,sparkslave1的里面的core-site.xml

fs.defaultFS

hdfs://Master:9000

其中master的端口与Master相应配置文件的端口不一致。。。。。

查出bug的一瞬间想手刃自己。。。


 



推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 设计模式——模板方法模式的应用和优缺点
    本文介绍了设计模式中的模板方法模式,包括其定义、应用、优点、缺点和使用场景。模板方法模式是一种基于继承的代码复用技术,通过将复杂流程的实现步骤封装在基本方法中,并在抽象父类中定义模板方法的执行次序,子类可以覆盖某些步骤,实现相同的算法框架的不同功能。该模式在软件开发中具有广泛的应用价值。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
author-avatar
余陈辉syllabear
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有