Spark开发中遇到的问题及解决方法

本文主要介绍了在Spark开发中遇到的一些问题及其解决方法,包括Windows环境下winutils的配置,访问HDFS文件系统,引入第三方Jar包的问题,以及HDFS在分布式环境下遇到的文件系统卡顿问题和解决步骤。通过这些解决方案,可以更好地应对Spark开发中遇到的实际问题。
摘要由CSDN通过智能技术生成

1.Windows下运行spark产生的Failed to locate the winutils binary in the hadoop binary path异常
解决方法:

1.下载winutils的windows版本
  GitHub上,有人提供了winutils的windows的版本,项目地址是:https://github.com/srccodes/hadoop-common-2.2.0-bin,直接下载此项目的zip包,下载后是文件名是hadoop-common-2.2.0-bin-master.zip,随便解压到一个目录
  2.配置环境变量
  增加用户变量HADOOP_HOME,值是下载的zip包解压的目录,然后在系统变量path里增加$HADOOP_HOME\bin 即可。  
  再次运行程序,正常执行。

原文链接:http://blog.csdn.net/shawnhu007/article/details/51518879

2.在Spark中,要访问hdfs文件系统上的文件,需要将hadoop的core-site.xml和hdfs-site.xml两个文件拷贝到spark的conf目录下

3.Spark引入第三方Jar包的问题
①可以使用maven的assembly插件将第三方Jar包全部打入生成的Jar中,存在的问题是Jar生成慢,生成的Jar包很大
②在spark-submit时添加–jars参数,问题是引入的Jar包比较多时,命令行比较长

spark-submit --jars ~/lib/hanlp-1.5.3.jar  --class "www.bdqn.cn.MyTest" --master spark://hadoop000:7077 ~/lib/SparkTechCount-1.0.jar

③配置spark的spark-defaults.conf设置第三方Jar包的目录,不过此种情况下集群上的每台机器都需要配置并上传Jar包

spark.executor.extraClassPath=/home/hadoop/app/spark-1.6.3-bin-hadoop2.6/external_jars/*
spark.driver.extraClassPath=/home/hadoop/app/spark-1.6.3-bin-hadoop2.6/external_jars/*

④在spark on yarn(cluster)模式下,可以将Jar包放到hdfs上,由于没有亲自测试,只是在此记录下。

3.Spark的文件系统在分布式环境下也使用的是HDFS,我的实验机在经过了1个周末后使用Xshell登录服务器后,发现在命令行模式下输入都卡顿。原因在网上查了下是因为hdfs的问题,先记录解决办法:
①此时使用stop-all.sh脚本已经无法停止hdfs了
②使用命令行查找Hadoop相关的进程号:

ps -ef | grep java | grep hadoop

然后使用kill xxxx把对应的进程一个一个的杀掉,我杀进程是从上到下挨个杀的,网上找到的资料有写杀进程的顺序应按照以下顺序,可以参考:

停止顺序: job 、task、namenode、datanode、secondarynode

③杀完进程后,再使用start-all.sh和stop-all.sh就可以了。
④在网上找到的永久解决方案,尝试效果待验证

出现这个问题的最常见原因是hadoop在stop的时候依据的是datanode上的mapred和dfs进程号。而默认的进程号保存在/tmp下,linux默认会每隔一段时间(一般是一个月或者7天左右)去删除这个目录下的文件。因此删掉hadoop-hadoop-jobtracker.pid和hadoop-hadoop-namenode.pid两个文件后,namenode自然就找不到datanode上的这两个进程了。
另外还有两个原因可能引起这个问题:
①:环境变量 $HADOOP_PID_DIR 在你启动hadoop后改变了
②:用另外的用户身份执行stop-all
解决方法:
①:永久解决方法,修改$HADOOP_HOME/conf/hadoop-env.sh里边,去掉export HADOOP_PID_DIR=/var/hadoop/pids的#号ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值