我在OSX上安装了spark和hadoop。我成功地完成了一个示例,其中hadoop在本地运行,文件存储在hdfs中,我使用spark运行
spark-shell --master yarn-client
在壳牌内部与hdfs合作。我有问题,但是,试图让Spark运行没有hdfs,只是在本地我的机器上。我看了这个答案,但在spark文档中说,在环境变量上乱搞是不对的
在一台机器上本地运行很容易—您只需要在系统路径上安装java,或者在指向java安装的java\u home环境变量中安装java即可。
如果我运行基本的 SparkPi
我得到了正确的输出。
如果我再次尝试运行他们提供的示例java应用程序,我会得到输出,但是这次出现了与端口9000相关的连接拒绝错误,这听起来像是在尝试连接到hadoop,但我不知道为什么,因为我没有指定这一点
$SPARK_HOME/bin/spark-submit --class "SimpleApp" --master local[4] ~/study/scala/sampleJavaApp/target/simple-project-1.0.jar
Exception in thread "main" java.net.ConnectException: Call From 37-2-37-10.tssg.org/10.37.2.37 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
...
...
...
org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:604)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:699)
at org.apache.hadoop.ipc.Client$Connection.access(Client.java:367)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1462)
at org.apache.hadoop.ipc.Client.call(Client.java:1381)
... 51 more
15/07/31 11:05:06 INFO spark.SparkContext: Invoking stop() from shutdown hook
15/07/31 11:05:06 INFO handler.ContextHandler: stopped o.s.j.s.ServletContextHandler{/metrics/json,null}
...
...
...
15/07/31 11:05:06 INFO ui.SparkUI: Stopped Spark web UI at http://10.37.2.37:4040
15/07/31 11:05:06 INFO scheduler.DAGScheduler: Stopping DAGScheduler
15/07/31 11:05:06 INFO spark.MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!
15/07/31 11:05:06 INFO util.Utils: path = /private/var/folders/cg/vkq1ghks37lbflpdg0grq7f80000gn/T/spark-c6ba18f5-17a5-4da9-864c-509ec855cadf/blockmgr-b66cc31e-7371-472f-9886-4cd33d5ba4b1, already present as root for deletion.
15/07/31 11:05:06 INFO storage.MemoryStore: MemoryStore cleared
15/07/31 11:05:06 INFO storage.BlockManager: BlockManager stopped
15/07/31 11:05:06 INFO storage.BlockManagerMaster: BlockManagerMaster stopped
15/07/31 11:05:06 INFO scheduler.OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!
15/07/31 11:05:06 INFO spark.SparkContext: Successfully stopped SparkContext
15/07/31 11:05:06 INFO util.Utils: Shutdown hook called
15/07/31 11:05:06 INFO util.Utils: Deleting directory /private/var/folders/cg/vkq1ghks37lbflpdg0grq7f80000gn/T/spark-c6ba18f5-17a5-4da9-864c-509ec855cadf
任何关于我错在哪里的提示/解释都将不胜感激!
更新
似乎我有一个环境变量 HADOOP_CONF_DIR
set导致了一些问题。在那个目录下,我有 core-site.xml
包含以下内容
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
如果我改变值,例如。 <value>hdfs://localhost:9100</value>
然后,当我尝试运行spark作业时,连接被拒绝错误引用了这个更改的端口
Exception in thread "main" java.net.ConnectException: Call From 37-2-37-10.tssg.org/10.37.2.37 to localhost:9100 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
因此出于某种原因,尽管指示它在本地运行,但它仍在尝试连接到hdfs。如果我移除 HADOOP_CONF_DIR
环境变量,工作正常。
3条答案
按热度按时间kzmpq1sx1#
我认为您之前为hadoop相关示例定义的环境变量仍然会干扰您的测试。
假设您使用的是官方的spark java示例:
我建议您明确地设置主控形状,否则会使用默认值。
有关详细信息,请查看sparkconf文档:
67up9zun2#
我也有同样的错误,hadoop\u conf\u dir被定义,所以我只是取消设置环境变量。
nhhxz33t3#
apachespark使用hadoop客户机库进行文件访问
sc.textFile
. 这使得使用hdfs://
或者s3n://
例如路径。也可以使用本地路径作为file:/home/robocode/foo.txt
.如果指定的文件名没有架构,
fs.default.name
已使用。它默认为file:
,但您显式地将其重写为hdfs://localhost:9000
在你的core-site.xml
. 因此,如果不指定模式,它将尝试从hdfs读取。最简单的解决方案是指定模式: