Wiem, że w przypadku problemów z odrzuceniem połączenia strumieniowego iskrzenia istnieje już wiele wątków. Ale większość z nich znajduje się w Linuksie lub przynajmniej wskazuje na HDFS. Używam tego na moim lokalnym laptopie z Windows.Błąd "Odmowa połączenia" podczas uruchamiania procesu Spark Streaming na komputerze lokalnym
Używam bardzo prostej, samodzielnej aplikacji do strumieniowania Spark, aby zobaczyć, jak działa transmisja strumieniowa. Nie robi nic skomplikowanego tutaj: -
import org.apache.spark.streaming.Seconds
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.SparkConf
object MyStream
{
def main(args:Array[String])
{
val sc = new StreamingContext(new SparkConf(),Seconds(10))
val mystreamRDD = sc.socketTextStream("localhost",7777)
mystreamRDD.print()
sc.start()
sc.awaitTermination()
}
}
otrzymuję następujący błąd: -
2015-07-25 18:13:07 INFO ReceiverSupervisorImpl:59 - Starting receiver
2015-07-25 18:13:07 INFO ReceiverSupervisorImpl:59 - Called receiver onStart
2015-07-25 18:13:07 INFO SocketReceiver:59 - Connecting to localhost:7777
2015-07-25 18:13:07 INFO ReceiverTracker:59 - Registered receiver for stream 0 from 192.168.19.1:11300
2015-07-25 18:13:08 WARN ReceiverSupervisorImpl:92 - Restarting receiver with delay 2000 ms: Error connecting to localhost:7777
java.net.ConnectException: Connection refused
Próbowałem przy użyciu różnych numerów portów, ale to nie pomaga. Tak więc wciąż próbuje się w pętli i ciągle otrzymuje ten sam błąd. Czy ktoś ma pomysł?
Strumieniowanie Spark znajduje się po stronie klienta, a nie na serwerze sieci Web? Myślałem, że Spark Streaming jest uruchamiany na serwerze sieciowym i to, co żąda serwer sieciowy od swoich klientów, zwraca jako "strumień". Ale czy po uruchomieniu w węźle klienta WWW dokładnie, jakie dane są zwracane do Sparka jako "strumień"? Serwer sieciowy jest agentem pasywnym (ponieważ tylko czeka na żądania klienta i zwraca odpowiedź), co oznacza, że "strumień" jest "odpowiedzią" zwracaną przez serwer WWW? Ale jeśli moduł strumieniowania iskrzenia nie wykona jakiegoś aktywnego żądania, to w jaki sposób zwróci odpowiedź? – Dhiraj
Spark Streaming nie jest przypadkiem bycia klientem lub serwerem, jest tam, aby przetworzyć strumień. Zazwyczaj wymaga odbiornika, aby rozpocząć podawanie danych do obliczeń. Istnieją różne rodzaje odbiorników. W powyższym kodzie 'socketTextStream' ustawia odbiorcę, który działa jako klient oczekujący serwera na drugim końcu. Zajrzyj na https://spark.apache.org/docs/1.2.0/api/scala/index.html#org.apache.spark.streaming.StreamingContext, możesz lepiej użyć 'textFileStream', jeśli jesteś po prostu eksperymentowanie, które rozpocznie strumień, czytając pliki w katalogu. – mattinbits