SparkのサンプルをMesosの上で動作させる(REPL) → 動作せず・・・(汗
こんにちは。
ここまででSparkのローカルアプリケーションとMesosの環境構築が完了したため、
ついに実際にSparkのクラスタをMesosの上で動作させてみます。
まずはHDFSは使わず、ローカルのファイルを読み込ませる形で動作させます。
尚、分散クラスタ上で動作させる必要が出た段階で、
「Sparkの分散配置用アーカイブを生成して、HDFS等の上に配置する」ということが必要になってきます。
で、分散配置用アーカイブを生成するためにはsparkのソースコードをダウンロードした配下にある
「make-distribution.sh」が必要です。
というわけで、今回からビルドも含めて仮想マシン上で行う形になります。
そのため、改めてビルド環境から再構築します。
1.Apache Sparkの配置用アーカイブ作成
1-1.Gitインストール
「spark-0.8.0-incubating-bin-cdh4.tgz」を用いてビルドを行う場合、Gitコマンドも必要となるため、
予めインストールしておきます。
# yum install git
1-2.Apache Sparkのビルド
では、Apache Sparkのビルドを行います。
尚、今回はcdh4系ともう確定しているため、それに取得するファイルもあわせています。
# wget http://spark-project.org/download/spark-0.8.0-incubating-bin-cdh4.tgz # tar xzf spark-0.8.0-incubating-bin-cdh4.tgz # cd spark-0.8.0-incubating-bin-cdh4 # SPARK_HADOOP_VERSION=2.0.0-mr1-cdh4.4.0 sbt/sbt clean assembly (省略) [warn] Strategy 'concat' was applied to 2 files [warn] Strategy 'discard' was applied to 2 files [warn] Strategy 'first' was applied to 851 files [info] Checking every *.class/*.jar file's SHA-1. [info] SHA-1: 578ea40714bc9a79d870bf73b6db8be2e9b10b80 [info] Packaging /usr/local/src/spark-0.8.0-incubating-bin-cdh4/examples/target/scala-2.9.3/spark-examples-assembly-0.8.0-incubating.jar ... [info] Done packaging. [success] Total time: 1512 s, completed 2013/11/20 8:35:50 >
これでSparkのビルドは完了しました。次はSparkの実行アーカイブを生成します。
Sparkの実行アーカイブは「./make-distribution.sh」のコマンドで生成可能です。
# ./make-distribution.sh --hadoop 2.0.0-mr1-cdh4.4.0 → distディレクトリ配下に実行アーカイブファイル群が生成 # mv dist spark-0.8.0-2.0.0-mr1-cdh4.4.0 # tar cvzf spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz spark-0.8.0-2.0.0-mr1-cdh4.4.0 → Spark実行アーカイブが生成 # tar tvzf spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/ -rwxr-xr-x root/root 2128 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/pyspark drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/jars/ -rw-r--r-- root/root 88136092 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/jars/spark-assembly-0.8.0-incubating-hadoop2.0.0-mr1-cdh4.4.0.jar -rwxr-xr-x root/root 946 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/spark-executor -rwxr-xr-x root/root 2440 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/spark-shell drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/ -rwxr-xr-x root/root 4177 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/spark-daemon.sh -rwxr-xr-x root/root 1637 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/start-slaves.sh -rwxr-xr-x root/root 1403 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/spark-config.sh -rwxr-xr-x root/root 1292 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/stop-slaves.sh -rwxr-xr-x root/root 2158 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/slaves.sh -rwxr-xr-x root/root 1005 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/stop-master.sh -rwxr-xr-x root/root 1516 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/start-slave.sh -rwxr-xr-x root/root 1041 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/stop-all.sh -rwxr-xr-x root/root 1100 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/start-all.sh -rwxr-xr-x root/root 1190 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/spark-daemons.sh -rwxr-xr-x root/root 1901 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/start-master.sh -rw-r--r-- root/root 2620 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/compute-classpath.cmd -rwxr-xr-x root/root 2372 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/bin/compute-classpath.sh -rw-r--r-- root/root 59 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/RELEASE drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/conf/ drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/ drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/ -rw-r--r-- root/root 12866 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/context.py -rw-r--r-- root/root 2099 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/storagelevel.py -rw-r--r-- root/root 7273 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/tests.py -rw-r--r-- root/root 1931 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/shell.py -rw-r--r-- root/root 1896 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/files.py -rw-r--r-- root/root 1917 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/broadcast.py -rw-r--r-- root/root 4139 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/rddsampler.py -rw-r--r-- root/root 2650 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/java_gateway.py -rw-r--r-- root/root 34089 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/rdd.py -rw-r--r-- root/root 5913 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/daemon.py -rw-r--r-- root/root 1812 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/__init__.py -rw-r--r-- root/root 35668 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/cloudpickle.py -rw-r--r-- root/root 3782 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/worker.py -rw-r--r-- root/root 3694 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/statcounter.py -rw-r--r-- root/root 2736 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/serializers.py -rw-r--r-- root/root 6917 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/accumulators.py -rw-r--r-- root/root 3346 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/pyspark/join.py -rw-r--r-- root/root 1380 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/epydoc.conf drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/lib/ -rw-r--r-- root/root 1445 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/lib/PY4J_LICENSE.txt -rw-r--r-- root/root 41 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/lib/PY4J_VERSION.txt -rw-r--r-- root/root 191756 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/lib/py4j0.7.egg drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/ -rwxr-xr-x root/root 1382 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/pi.py -rwxr-xr-x root/root 1319 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/wordcount.py -rwxr-xr-x root/root 2307 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/transitive_closure.py -rwxr-xr-x root/root 2737 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/logistic_regression.py -rwxr-xr-x root/root 2247 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/kmeans.py -rwxr-xr-x root/root 2588 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/pagerank.py -rwxr-xr-x root/root 3049 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/examples/als.py -rwxr-xr-x root/root 1691 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/run-tests -rw-r--r-- root/root 12 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/.gitignore drwxr-xr-x root/root 0 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/test_support/ -rw-r--r-- root/root 1945 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/test_support/userlib-0.1-py2.7.egg -rwxr-xr-x root/root 13 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/test_support/hello.txt -rwxr-xr-x root/root 158 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/python/test_support/userlibrary.py -rwxr-xr-x root/root 3837 2013-11-21 08:47 spark-0.8.0-2.0.0-mr1-cdh4.4.0/spark-class
Jarファイルは全て1ファイルにまとめてビルドされるみたいですね。
1-3.Apache Sparkの実行アーカイブ配置/環境設定
次はApache Sparkの実行アーカイブをHDFSに配置します。
尚、配置する場所自体は別にHDFSでなくてもよくて、クラスタ内のどこからでも共通的にアクセスできればいいそうです。
# sudo -u hdfs hdfs dfs -mkdir /sparkarchive # sudo -u hdfs hdfs dfs -put spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz /sparkarchive
次は配置した場所とMesosのライブラリの位置の設定を行います。
REPL起動の時に必要となるようです。
このあたりはREPLではなくバッチとして起動する場合には色々事情が変わってきそうですね。
# cd ../ # mv spark-0.8.0-incubating-bin-cdh4 /opt/ # cd /opt/spark-0.8.0-incubating-bin-cdh4/ # cd conf # cp -p spark-env.sh.template spark-env.sh # vi spark-env.sh (以下の内容を追記) ===== export MESOS_NATIVE_LIBRARY=/usr/local/lib/libmesos.so export SPARK_EXECUTOR_URI=hdfs://spark1/sparkarchive/spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz export MASTER=zk://spark1:2181/mesos =====
これでREPLをクラスタ上で動作させる設定は完了です。
1-4.REPL起動
では、実際にクラスタ上でREPLを起動してみます。
前回ローカルモードでREPLを起動した時と違い、ZooKeeperに接続し、3台のmesos-masterを認識した状態になっています。
WARNメッセージが微妙に大丈夫かと気になりますが、それはおいおい。
# cd /opt/spark-0.8.0-incubating-bin-cdh4/ # ./spark-shell Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /___/ .__/\_,_/_/ /_/\_\ version 0.8.0 /_/ Using Scala version 2.9.3 (OpenJDK 64-Bit Server VM, Java 1.7.0_45) (省略) 13/11/22 07:21:52 INFO ui.SparkUI: Started Spark Web UI at http://spark1:4040 13/11/22 07:21:52 WARN spark.SparkContext: Master zk://spark1:2181/mesos does not match expected format, parsing as Mesos URL I1122 07:21:52.924057 22004 detector.cpp:234] Master detector (scheduler(1)@192.168.100.246:41629) connected to ZooKeeper ... I1122 07:21:52.924502 22004 detector.cpp:251] Trying to create path '/mesos' in ZooKeeper I1122 07:21:52.925426 22004 detector.cpp:420] Master detector (scheduler(1)@192.168.100.246:41629) found 3 registered masters I1122 07:21:52.925734 22004 detector.cpp:467] Master detector (scheduler(1)@192.168.100.246:41629) got new master pid: master@192.168.100.247:5050 13/11/22 07:21:52 INFO mesos.MesosSchedulerBackend: Registered as framework ID 201311130859-4150569152-5050-15300-0000 Spark context available as sc. Type in expressions to have them evaluated. Type :help for more information. scala>
あとはWeb UIをきちんと見てみると以下のようなSpark Propertiesも。
複数のポートで待ち受けを行っているようではありますね。
1-5.REPLからサンプル起動
では、特に依存を必要としないSpark REPLのサンプルを動作させてみます。
すると・・・
scala> val data = 1 to 100000 ※1から100000のデータセットを生成 data: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170... scala> val paraData = sc.parallelize(data) ※生成したデータをRDD化 paraData: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:14 scala> paraData.filter(_< 1000).collect() (省略) 13/11/22 07:38:55 INFO scheduler.DAGScheduler: Host gained which was in lost list earlier: spark3 13/11/22 07:38:55 INFO cluster.ClusterTaskSetManager: Starting task 0.0:1 as TID 870 on executor 201311130859-4133791936-5050-15712-0: spark3 (PROCESS_LOCAL) 13/11/22 07:38:55 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:1 as 1353 bytes in 0 ms 13/11/22 07:38:55 INFO cluster.ClusterTaskSetManager: Starting task 0.0:0 as TID 871 on executor 201311130859-4133791936-5050-15712-0: spark3 (PROCESS_LOCAL) 13/11/22 07:38:55 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:0 as 1353 bytes in 0 ms 13/11/22 07:38:56 INFO cluster.ClusterTaskSetManager: Re-queueing tasks for 201311130859-4133791936-5050-15712-2 from TaskSet 0.0 13/11/22 07:38:56 INFO cluster.ClusterTaskSetManager: Lost TID 867 (task 0.0:2) 13/11/22 07:38:56 INFO cluster.ClusterTaskSetManager: Lost TID 866 (task 0.0:4) 13/11/22 07:38:56 INFO scheduler.DAGScheduler: Executor lost: 201311130859-4133791936-5050-15712-2 (epoch 463) 13/11/22 07:38:56 INFO storage.BlockManagerMasterActor: Trying to remove executor 201311130859-4133791936-5050-15712-2 from BlockManagerMaster. 13/11/22 07:38:56 INFO storage.BlockManagerMaster: Removed 201311130859-4133791936-5050-15712-2 successfully in removeExecutor 13/11/22 07:38:56 INFO cluster.ClusterTaskSetManager: Starting task 0.0:4 as TID 872 on executor 201311130859-4133791936-5050-15712-2: spark1 (PROCESS_LOCAL) 13/11/22 07:38:56 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:4 as 1353 bytes in 0 ms 13/11/22 07:38:56 INFO cluster.ClusterTaskSetManager: Starting task 0.0:2 as TID 873 on executor 201311130859-4133791936-5050-15712-2: spark1 (PROCESS_LOCAL) 13/11/22 07:38:56 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:2 as 1353 bytes in 0 ms 13/11/22 07:38:56 INFO scheduler.DAGScheduler: Host gained which was in lost list earlier: spark1 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Re-queueing tasks for 201311130859-4133791936-5050-15712-1 from TaskSet 0.0 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Lost TID 869 (task 0.0:3) 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Lost TID 868 (task 0.0:5) 13/11/22 07:38:57 INFO scheduler.DAGScheduler: Executor lost: 201311130859-4133791936-5050-15712-1 (epoch 464) 13/11/22 07:38:57 INFO storage.BlockManagerMasterActor: Trying to remove executor 201311130859-4133791936-5050-15712-1 from BlockManagerMaster. 13/11/22 07:38:57 INFO storage.BlockManagerMaster: Removed 201311130859-4133791936-5050-15712-1 successfully in removeExecutor 13/11/22 07:38:57 INFO scheduler.DAGScheduler: Host gained which was in lost list earlier: spark2 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Starting task 0.0:5 as TID 874 on executor 201311130859-4133791936-5050-15712-1: spark2 (PROCESS_LOCAL) 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:5 as 1353 bytes in 0 ms 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Starting task 0.0:3 as TID 875 on executor 201311130859-4133791936-5050-15712-1: spark2 (PROCESS_LOCAL) 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:3 as 1353 bytes in 1 ms 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Re-queueing tasks for 201311130859-4133791936-5050-15712-0 from TaskSet 0.0 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Lost TID 871 (task 0.0:0) 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Lost TID 870 (task 0.0:1) 13/11/22 07:38:57 INFO scheduler.DAGScheduler: Executor lost: 201311130859-4133791936-5050-15712-0 (epoch 465) 13/11/22 07:38:57 INFO storage.BlockManagerMasterActor: Trying to remove executor 201311130859-4133791936-5050-15712-0 from BlockManagerMaster. 13/11/22 07:38:57 INFO storage.BlockManagerMaster: Removed 201311130859-4133791936-5050-15712-0 successfully in removeExecutor 13/11/22 07:38:57 INFO scheduler.DAGScheduler: Host gained which was in lost list earlier: spark3 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Starting task 0.0:1 as TID 876 on executor 201311130859-4133791936-5050-15712-0: spark3 (PROCESS_LOCAL) 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:1 as 1353 bytes in 0 ms 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Starting task 0.0:0 as TID 877 on executor 201311130859-4133791936-5050-15712-0: spark3 (PROCESS_LOCAL) 13/11/22 07:38:57 INFO cluster.ClusterTaskSetManager: Serialized task 0.0:0 as 1353 bytes in 0 ms 13/11/22 07:38:58 INFO cluster.ClusterTaskSetManager: Re-queueing tasks for 201311130859-4133791936-5050-15712-2 from TaskSet 0.0 13/11/22 07:38:58 INFO cluster.ClusterTaskSetManager: Lost TID 872 (task 0.0:4) 13/11/22 07:38:58 INFO cluster.ClusterTaskSetManager: Lost TID 873 (task 0.0:2) (省略)
どうやら正常に動作出来ていないようなので、一度「Ctrl+C」を押して終了させます。あらら。
その上でmesos-masterのUIを見てみると、以下のような大量のエラーが。
仕方がないのでsandboxをクリックして出力を追ってみると、以下のような標準出力/標準エラーとなっていました。
どうやら、HDFSからファイルの取得に失敗しているようです。
- stdout
Fetching resources into '/var/run/mesos/slaves/201311130859-4133791936-5050-15712-1/frameworks/201311130859-4150569152-5050-15300-0000/executors/201311130859-4133791936-5050-15712-1/runs/aa6a544e-efbc-491b-886e-e8983ec29939' Fetching resource 'hdfs://spark1/sparkarchive/spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz' Downloading resource from 'hdfs://spark1/sparkarchive/spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz' HDFS command: hadoop fs -copyToLocal 'hdfs://spark1/sparkarchive/spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz' './spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz'
- stderr
copyToLocal: Call From spark2/192.168.100.247 to spark1:8020 failed on connection exception: java.net.ConnectException: 接続を拒否されました; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused HDFS copyToLocal failed: return code 256 Failed to fetch executors
実際にローカルでコマンドを実行してみても同様の結果となり、ファイルの取得に失敗します。
# hadoop fs -copyToLocal 'hdfs://spark1/sparkarchive/spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz' './spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz' copyToLocal: Call From spark2/192.168.100.247 to spark1:8020 failed on connection exception: java.net.ConnectException: 接続 を拒否されました; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
尚、lsコマンドを実行するとファイルが表示されるあたり、HDFS自体が動いていないということもなさそうです。
# hadoop fs -ls '/sparkarchive' Found 1 items -rw-r--r-- 3 hdfs supergroup 82038600 2013-11-21 08:57 /sparkarchive/spark-0.8.0-2.0.0-mr1-cdh4.4.0.tgz
後は確認してみたところ、spark1、spark2、spark3で8020番ポートは開かれていませんでした。
# netstat -an | grep 8020 (何も表示されない)
HDFSで8020ポート(NameNodeの「Filesystem metadata operations.」)が開かれていないのが原因のようです。
どうやらHDFSの設定が誤っているようですねぇ・・・
ともあれ、長くなってきたので一度切って、設定を見直してみることにします。