我无法从sparkshell(spark版本是1.2.1)读取hdfs(intel发行版hadoop,hadoop版本是1.0.3)。我用这个命令建立了spark mvn -Dhadoop.version=1.0.3 clean package
,启动spark shell并使用 sc.textFile()
例外情况是:
warn hdfs.dfsclient:无法连接到/10.xx.xx.xx:50010,添加到deadnodes和continuejava.net.sockettimeoutexception:等待通道准备好读取时超时120000毫秒。ch:java.nio.channels.socketchannel[connected local=/10.xx.xx.xx:44264 remote=/10.xx.xx.xx:50010]。。。error executor.executor:阶段0.0(tid 1)中任务1.0出现异常java.io.ioexception:无法获取块:blk_file=/research/files/readme.md
这里也有同样的问题:http://mail-archives.us.apache.org/mod_mbox/spark-user/201309.mbox/%3cf97adee4fba8f6478453e148fe9e2e8d3cca37a9@hasmsx106.ger.corp.intel.com%3e
这是建议的解决方案:
“除了在./project/sparkbuild.scala文件中指定hadoop\u version=1.0.3之外,还需要指定库依赖项和名称”“spark core”“解析器。否则,sbt将从apache而不是intel获取hadoopcore的1.0.3版本。您可以设置自己指定的本地或远程存储库“
有谁能详细说明一下如何指定sbt从intel获取hadoop内核(可以在我们的内部存储库中找到)?
1条答案
按热度按时间eufgjt7s1#
试着看看这一页的文档
spark正在使用一些我不太了解的sbt/maven集成,但似乎存储库是在中指定的
pom.xml
在根里如果不起作用,您可以探索sbt文件指定的位置
resolvers
.为了记录在案,这是链接文档的摘录
将应用程序链接到hadoop版本
除了根据正确的版本编译spark本身之外,还需要向运行的任何spark应用程序添加对该版本hadoop客户机的maven依赖,这样它们也可以与集群上的hdfs版本进行通信。如果您使用的是cdh,那么还需要添加clouderamaven存储库。在sbt中如下所示:
或者在maven: