热门标签 | 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的一瞬间想手刃自己。。。


 



推荐阅读
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • Spring框架中的面向切面编程(AOP)技术详解
    面向切面编程(AOP)是Spring框架中的关键技术之一,它通过将横切关注点从业务逻辑中分离出来,实现了代码的模块化和重用。AOP的核心思想是将程序运行过程中需要多次处理的功能(如日志记录、事务管理等)封装成独立的模块,即切面,并在特定的连接点(如方法调用)动态地应用这些切面。这种方式不仅提高了代码的可维护性和可读性,还简化了业务逻辑的实现。Spring AOP利用代理机制,在不修改原有代码的基础上,实现了对目标对象的增强。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • JavaScript XML操作实用工具类:XmlUtilsJS技巧与应用 ... [详细]
  • 在IIS上运行的WebApi应用程序在开发环境中能够正常进行文件的读写操作。然而,在尝试通过FTP访问实时服务器上的文件列表时,遇到了无法显示的问题,尽管服务器配置与开发环境相同。这可能涉及权限设置、FTP服务配置或网络连接等方面的问题。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • 在分析Socket服务器程序接收中文数据时出现的乱码问题时,我们发现客户端使用C#编写的数据在返回时能够正常显示。本文详细探讨了该问题的成因,并提出了一种有效的解决方案。通过调整字符编码设置和优化数据传输格式,确保了中文数据在传输过程中的完整性与正确性。具体实现代码包括对Socket读取事件的处理,确保数据以正确的编码格式进行解析和显示。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
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社区 版权所有