2016-06-13 9 views
0

Apache Spark(v1.6.1)は、./start-all.shを使用してUbuntu(10.10.0.102)マシンでサービスとして開始されました。リモートApacheスパークサーバーにジョブを送信

Java APIを使用してリモートからこのサーバーにジョブを送信する必要があります。

以下は、異なるマシン(10.10.0.95)から実行されるJavaクライアントコードです。コード1として

String mySqlConnectionUrl = "jdbc:mysql://localhost:3306/demo?user=sec&password=sec"; 

    String jars[] = new String[] {"/home/.m2/repository/com/databricks/spark-csv_2.10/1.4.0/spark-csv_2.10-1.4.0.jar", 
      "/home/.m2/repository/org/apache/commons/commons-csv/1.1/commons-csv-1.1.jar", 
      "/home/.m2/repository/mysql/mysql-connector-java/6.0.2/mysql-connector-java-6.0.2.jar"}; 
    SparkConf sparkConf = new SparkConf() 
      .setAppName("sparkCSVWriter") 
      .setMaster("spark://10.10.0.102:7077") 
      .setJars(jars); 

    JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf); 

    SQLContext sqlContext = new SQLContext(javaSparkContext); 

    Map<String, String> options = new HashMap<>(); 
    options.put("driver", "com.mysql.jdbc.Driver"); 
    options.put("url", mySqlConnectionUrl); 
    options.put("dbtable", "(select p.FIRST_NAME from person p) as firstName"); 

    DataFrame dataFrame = sqlContext.read().format("jdbc").options(options).load(); 

    dataFrame.write() 
     .format("com.databricks.spark.csv") 
     .option("header", "true") 
     .option("delimiter", "|") 
     .option("quote", "\"") 
     .option("quoteMode", QuoteMode.NON_NUMERIC.toString()) 
     .option("escape", "\\") 
     .save("persons.csv"); 

    Configuration hadoopConfiguration = javaSparkContext.hadoopConfiguration(); 
    FileSystem hdfs = FileSystem.get(hadoopConfiguration); 

    FileUtil.copyMerge(hdfs, new Path("persons.csv"), hdfs, new Path("\home\persons1.csv"), true, hadoopConfiguration, new String()); 

スパークを使用して、CSV/JSONにRDBMSデータを変換する必要があります。しかし、エラー、次の受信時に、私は、リモート・スパークサーバーに接続することができ、このクライアントアプリケーションを実行しますが、コンソールで連続的にアプリケーションを実行するにはスパークUIにメッセージ

WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 

とサーバ側でのWARN、次の受信>エグゼキュータの概要>標準エラーログ、 。

Exception in thread "main" java.io.IOException: Failed to connect to /192.168.56.1:53112 
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:216) 
    at org.apache.spark.network.client.TransportClientFactory.createClient(TransportClientFactory.java:167) 
    at org.apache.spark.rpc.netty.NettyRpcEnv.createClient(NettyRpcEnv.scala:200) 
    at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:187) 
    at org.apache.spark.rpc.netty.Outbox$$anon$1.call(Outbox.scala:183) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.net.ConnectException: Connection refused: /192.168.56.1:53112 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) 
    at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:224) 
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:289) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:528) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
    at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111) 
    ... 1 more 

しかし、192.168.56.1として設定されたIPアドレスはありません。したがって、設定が欠落しています。

答えて

-1

実際には、クライアントマシン(10.10.0.95)はWindowsマシンです。別のUbuntuマシン(10.10.0.155)を使用してSparkジョブを送信しようとしたところ、同じJavaクライアントコードを正常に実行することができました。私が表示されたログ、次の火花ジョブを送信したとき、私は、Windowsクライアント環境でデバッグしたよう

、ログ行番号2、192.168.56.1とのレジスタクライアントごととして

INFO Remoting: Starting remoting 
INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:61552] 
INFO Utils: Successfully started service 'sparkDriverActorSystem' on port 61552. 
INFO MemoryStore: MemoryStore started with capacity 2.4 GB 
INFO SparkEnv: Registering OutputCommitCoordinator 
INFO Utils: Successfully started service 'SparkUI' on port 4044. 
INFO SparkUI: Started SparkUI at http://192.168.56.1:4044 

。実際のIPアドレスと同じ10.10.0.155を持つログ行番号2、そのレジスタのクライアントごととして

他の場所で、Ubuntuのクライアントで

INFO Remoting: Starting remoting 
INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:42786] 
INFO Utils: Successfully started service 'sparkDriverActorSystem' on port 42786. 
INFO MemoryStore: MemoryStore started with capacity 511.1 MB 
INFO SparkEnv: Registering OutputCommitCoordinator 
INFO Utils: Successfully started service 'SparkUI' on port 4040. 
INFO SparkUI: Started SparkUI at http://10.10.0.155:4040 

誰かがWindowsクライアントの問題を見つけた場合は、コミュニティに知らせてください。

[UPDATE]

私はバーチャルボックスでこの全体の環境を実行しています。 Windowsマシンは私のホストで、Ubuntuはゲストです。そしてSparkはUbuntuマシンにインストールされています。仮想ボックス環境の仮想ボックスに、Ethernet adapter VirtualBox Host-Only NetwotkとIPv4アドレス:192.168.56.1をインストールします。実際のIPアドレス10.10.0.95ではなく、このIPをクライアントIPとして登録します。

関連する問題