Spark Streaming:连接被拒绝

时间:2018-10-25 16:33:41

标签: apache-spark spark-streaming

我有一个简单的Spark Streaming代码,我想尝试一下:

import org.apache.spark.SparkConf
import org.apache.spark.streaming.{Seconds, StreamingContext}

object WordCountStreamingWithFlume {
  def main(args: Array[String]) {

    val ssc = new StreamingContext(new SparkConf().setMaster("local[2]").setAppName("socketstream"), Seconds(10))
    val hostname = "localhost"

    val mystreamRDD = ssc.socketTextStream(hostname, 7777)
    mystreamRDD.print()
    ssc.start()
    ssc.awaitTermination()
  }
}

我正在使用sbt对其进行编译和打包。

在控制台(我正在使用Manjaro Linux)中,运行以下命令: cat file.txt | nc localhost 7777来将数据发送到机器中的端口7777

要运行编译后的Spark Streaming代码,我在Intellij IDEA中打开终端并执行以下操作:

spark-submit target/scala-2.11/simplesparkflumeexample_2.11-0.1.jar

但是出现以下错误:

WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
WARN Utils: Your hostname, ... resolves to a loopback address: 127.0.1.1; using <some_ip> instead (on interface enp2s0)
WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
WARN ReceiverSupervisorImpl: Restarting receiver with delay 2000 ms: Error connecting to localhost:7777
java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
...

我也尝试过:

首先,检查sshd服务,它正在运行。

然后,检查7777端口,但我不确定如何确认这一点。我执行的唯一操作是打开两个控制台,并使用netcat将数据从一个发送到另一个。结果是成功的,因为我可以看到我在控制台中键入的数据出现在另一个屏幕上。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

在控制台(我使用的是Manjaro Linux)中,运行以下命令:cat file.txt | nc localhost 7777可以将数据发送到我机器中的端口7777。

它不是以这种方式运行,而是在我执行此操作时(添加-l-p)起作用:

cat file.txt | nc -l localhost -p 7777