2016-06-22 3 views
0

Google은 Spark 1.6.1을 사용하는 AWR Elastic MapReduce (EMR)에서 Hadoop 클러스터를 실행합니다. 클러스터 마스터에 들어가서 Spark 작업을 제출하는 데 문제는 없지만 다른 독립 EC2 인스턴스에서 제출할 수 있기를 바랍니다.EMR 클러스터 마스터에서 외부로 스파크 제출 사용

다른 '외부'EC2 인스턴스는 EMR 인스턴스 마스터 & 슬레이브 인스턴스로 들어오고 나가는 모든 TCP 트래픽을 허용하는 보안 그룹을 설정합니다. Apache의 사이트에서 직접 다운로드 한 Spark의 바이너리 설치가 있습니다. 시도가 SparkPi 예를 제출할 때

이 인스턴스에 마스터에서의/etc/하둡/conf 폴더를 복사하고 그에 따라 $ 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 폴더를 만들고 사용 권한을 설정하려면
  • 외부 시스템과 클러스터 마스터 & 슬레이브는 방향 (또는 모든 TPC 트래픽)에서 으로 열려 있어야합니다.
    • AWS EC2 EMR 환경 내에서 시스템의 보안 그룹 인 마스터와 슬레이브가 다른 그룹을 명시 적으로 허용 할 수 있습니다.

또한 리눅스는 마스터 계정으로 사용자를 생성 할 필요가있다.

관련 문제