【问题标题】:Spark I/O error constructing remote block构建远程块的 Spark I/O 错误
【发布时间】:2017-07-25 17:48:04
【问题描述】:

我想用同一网络中的两台计算机创建一个自制的火花集群。设置如下:

A) 安装了 hadoop hdfs 的 192.168.1.9 spark master

Hadoop 有这个 core-site.xml

<configuration>
<property>
    <name>hadoop.tmp.dir</name>
    <value>/app/hadoop/tmp</value>
</property>
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://0.0.0.0:9000</value>
</property>
</configuration>

B) 192.168.1.6 仅带火花(从属)

从 B 我想使用 spark 命令访问 A 的 hadoop hdfs 中的文件:

...
# Load files
file_1 = "input_1.pkl"
file_2 = "input_2.pkl"
hdfs_base_path = "hdfs://192.168.1.9:9000/folderx/" 
sc.addFile(hdfs_base_path + file_1)
sc.addFile(hdfs_base_path + file_2)

# Get files back
with open(SparkFiles.get(file_1), 'rb') as fw:
    // use fw

但是,如果我想测试B中的程序,当我使用命令执行B中的程序时:

./spark-submit --master local program.py

输出如下:

17/07/25 19:02:51 INFO SparkContext: Added file hdfs://192.168.1.9:9000/bigdata/input_1_new_grid.pkl at hdfs://192.168.1.9:9000/bigdata/input_1_new_grid.pkl with timestamp 1501002171301
17/07/25 19:02:51 INFO Utils: Fetching hdfs://192.168.1.9:9000/bigdata/input_1_new_grid.pkl to /tmp/spark-838c3774-36ec-4db1-ab01-a8a8c627b100/userFiles-b4973f80-be6e-4f2e-8ba1-cd64ddca369a/fetchFileTemp1979399086141127743.tmp
17/07/25 19:02:51 WARN BlockReaderFactory: I/O error constructing remote block reader.
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)

后来:

    17/07/25 19:02:51 WARN DFSClient: Failed to connect to /127.0.0.1:50010 for block, add to deadNodes and continue. java.net.ConnectException: Connection refused
java.net.ConnectException: Connection refused
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

程序尝试访问 127.0.0.1:50010,结果出错。我也应该在B中安装hadoop吗?如果没有必要,正确的配置是什么?谢谢!

【问题讨论】:

  • 你能修复它吗?我使用 webhdfs 并且一切正常,但 hdfs 对我来说似乎是个问题。
  • @sernle 抱歉,我帮不上忙 :( 。最后我在 Microsoft Azure 上部署了我的项目。

标签: hadoop apache-spark cluster-computing


【解决方案1】:

顺便说一句,以防万一有人来寻找某种解决方案,我通过将 quickstart.cloudera 指向真实 IP 地址而不是 127.0.0.1 来解决我的问题。 默认的 /etc/hosts 是 127.0.0.1 quickstart.cloudera quickstart localhost localhost.domain

你想要的是 127.0.0.1 本地主机 localhost.domain xxxIP_Address_oF_YOUR_VM quickstart.cloudera quickstart

您可能还需要修改 /usr/bin/cloudera-quickstart-ip,因为每次重新启动 VM 时,hosts 文件可能会再次重置。

【讨论】:

    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    • 2014-10-26
    • 2012-08-28
    相关资源
    最近更新 更多