2016-06-22 8 views
0

Spark 1.6.1を使用したAWS Elastic MapReduce(EMR)で動作するHadoopクラスタがあります。クラスタマスタにスローガンしてSparkジョブを送信することは問題ありませんが、別の独立したEC2インスタンスから送信できるようにしたいと考えています。外部からEMRクラスタマスターからのスパーク送信を使用

他の「外部」EC2インスタンスには、EMRインスタンスマスタ&スレーブインスタンスとの間のすべてのTCPトラフィックを許可するセキュリティグループが設定されています。 Apacheのサイトから直接ダウンロードしたSparkのバイナリインストールがあります。

は、このインスタンスにマスターからの/ etc/Hadoopの/ confフォルダをコピーして試みがSparkPi例を提出する際に、それに応じて$ HADOOP_CONF_DIRを設定したので、私は以下のアクセス許可の問題に遭遇:

$ /usr/local/spark/bin/spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi /usr/local/spark/lib/spark-examples-1.6.1-hadoop2.6.0.jar 
16/06/22 13:58:52 INFO spark.SparkContext: Running Spark version 1.6.1 
16/06/22 13:58:52 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
16/06/22 13:58:52 INFO spark.SecurityManager: Changing view acls to: jungd 
16/06/22 13:58:52 INFO spark.SecurityManager: Changing modify acls to: jungd 
16/06/22 13:58:52 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions:  Set(jungd); users with modify permissions: Set(jungd) 
16/06/22 13:58:52 INFO util.Utils: Successfully started service 'sparkDriver' on port 34757. 
16/06/22 13:58:52 INFO slf4j.Slf4jLogger: Slf4jLogger started 
16/06/22 13:58:52 INFO Remoting: Starting remoting 
16/06/22 13:58:53 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:39241] 
16/06/22 13:58:53 INFO util.Utils: Successfully started service 'sparkDriverActorSystem' on port 39241. 
16/06/22 13:58:53 INFO spark.SparkEnv: Registering MapOutputTracker 
16/06/22 13:58:53 INFO spark.SparkEnv: Registering BlockManagerMaster 
16/06/22 13:58:53 INFO storage.DiskBlockManager: Created local directory at /tmp/blockmgr-300d738e-d7e4-4ae9-9cfe-4e257a05d456 
16/06/22 13:58:53 INFO storage.MemoryStore: MemoryStore started with capacity 511.1 MB 
16/06/22 13:58:53 INFO spark.SparkEnv: Registering OutputCommitCoordinator 
16/06/22 13:58:53 INFO server.Server: jetty-8.y.z-SNAPSHOT 
16/06/22 13:58:53 INFO server.AbstractConnector: Started [email protected]:4040 
16/06/22 13:58:53 INFO util.Utils: Successfully started service 'SparkUI' on port 4040. 
16/06/22 13:58:53 INFO ui.SparkUI: Started SparkUI at http://172.31.61.189:4040 
16/06/22 13:58:53 INFO spark.HttpFileServer: HTTP File server directory is /tmp/spark-5e332986-ae2a-4bde-9ae4-edb4fac5e1d7/httpd-e475fd1b-c5c8-4f31-9699-be89fff4a69c 
16/06/22 13:58:53 INFO spark.HttpServer: Starting HTTP Server 
16/06/22 13:58:53 INFO server.Server: jetty-8.y.z-SNAPSHOT 
16/06/22 13:58:53 INFO server.AbstractConnector: Started [email protected]:43525 
16/06/22 13:58:53 INFO util.Utils: Successfully started service 'HTTP file server' on port 43525. 
16/06/22 13:58:53 INFO spark.SparkContext: Added JAR file:/usr/local/spark/lib/spark-examples-1.6.1-hadoop2.6.0.jar at http://172.31.61.189:43525/jars/spark-examples-1.6.1-hadoop2.6.0.jar with timestamp 1466603933454 
16/06/22 13:58:53 INFO client.RMProxy: Connecting to ResourceManager at ip-172-31-60-166.ec2.internal/172.31.60.166:8032 
16/06/22 13:58:53 INFO yarn.Client: Requesting a new application from cluster with 2 NodeManagers 
16/06/22 13:58:53 INFO yarn.Client: Verifying our application has not requested more than the maximum memory capability of the cluster (11520 MB per container) 
16/06/22 13:58:53 INFO yarn.Client: Will allocate AM container, with 896 MB memory including 384 MB overhead 
16/06/22 13:58:53 INFO yarn.Client: Setting up container launch context for our AM 
16/06/22 13:58:53 INFO yarn.Client: Setting up the launch environment for our AM container 
16/06/22 13:58:53 INFO yarn.Client: Preparing resources for our AM container 
16/06/22 13:58:54 ERROR spark.SparkContext: Error initializing SparkContext. 
org.apache.hadoop.security.AccessControlException: Permission denied: user=jungd, access=WRITE, inode="/user/jungd/.sparkStaging/application_1466437015320_0014":hdfs:hadoop:drwxr-xr-x 
at   org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319) 
at  org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:292) 
at  org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:213) 

それは、クラスタ展開モードを使用して送信しても差はありません。問題のユーザーは、クラスタのマスタまたはスレーブに存在しない(外部のEC2インスタンスの複数の開発者アカウントを持つローカルユーザーです(ローカルでも、ホームディレクトリは/ homeではなく/ユーザー)。

私は何が起こっているのかわかりません。どんな助けでも大歓迎です。

+0

アップデート:ローカルの「hadoop」ユーザーを作成し、そのユーザーとしてspark-submitまたはpysparkを実行すると、期待どおりに動作するように見えますが、これは必要ではありません。 – DavidJ

答えて

0

カップルの事をマスター以外のマシンから火花提出実行するために必要とされる:色相を使用して、例えばHDFS に

  • を作成する必要性を提出するユーザーをマッチング

    • ユーザーコンソール、または直接/ user/NAMEフォルダを作成し、マスタ上のhadoop fsコマンドラインツールを使用してアクセス許可を設定することによって直接設定することができます。
  • 外部マシンとクラスタマスター&スレーブは、(あるいは、すべてのTPCトラフィック)の両方向でにオープンする必要があります。
    • AWS EC2 EMR環境内では、マシンのセキュリティグループであるマスターとスレーブは、他のグループから明示的に許可することができます。

また、Linuxがマスター上でアカウントとしてユーザーを作成する必要があるかもしれません。

関連する問題