Kimuksung
Kimuksung 안녕하세요. 분산처리에 관심이 많은 생각하는 주니어 Data Enginner입니다.

1-1. Spark 설치 with Aws

1-1. Spark 설치 with Aws

EMR

AWS EMR Spark Zeppelin 설치 방법을 소개합니다.

Create pem


  • AWS → EC2 → Network and Security → Key pair → create Key Pair

    https://ifh.cc/g/8kpH04.png



Create Cluster


  • AWS → EMR 검색 →Cluster → Create Cluster

    https://ifh.cc/g/SBmkYG.png



빠르게 하는 법


  • Spark
  • Memory
  • Security

https://ifh.cc/g/XFsQMr.jpg



상세하게 하는 법


  • AWS → EMR 검색 →Cluster → Create Cluster → Go to Advanced Option https://ifh.cc/g/cxw3z2.jpg

  • Enter configuration → 필요한 Jar 파일등이나 Config 옵션을 추가하여 줍니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
      [
        {
          "classification": "spark-defaults",
          "properties": {
            "spark.jars": "s3://mongo-spark-connector_2.11-2.4.3_final.jar,s3://tech-platform/spark/spark-jar/mongo-java-driver-3.12.8.jar"
          },
          "configurations": [
              
          ]
        }
      ]
    
  • 각 노드 별 사양과 몇개의 노드를 생성할 것인지 설정

    https://ifh.cc/g/Xc3pVa.jpg

    https://ifh.cc/g/8qroBD.png

  • Cluster 이름을 설정하여 줍니다.

    https://ifh.cc/g/FlVdC2.jpg

  • 차후에 연결을 위하여 위에서 세팅한 PEM 키를 설정하여 줍니다. 링크
  • EMR role은 Default 옵션으로 설정하였습니다.

    https://ifh.cc/g/SaArLB.jpg

  • 생성하면 아래와 같이 보여야 정상입니다.

    결과



Enable an SSH Connection

step1. Open Tunnel


  • 접속할 PC에서 Enable an SSH Connection 눌러 줍니다.
  • 아래 그림과 같이 링크의 값을 복사하여 줍니다.
  • local의 pem 파일 위치에서 커맨드 날려줍니다.
1
2
# Open an SSH Tunnel EMR
$ ssh -i ~/wclub-server.pem -ND 8157 hadoop@ec2-52-79-228-53.ap-northeast-2.compute.amazonaws.com

https://ifh.cc/g/MGs6SZ.jpg https://ifh.cc/g/qAS69O.jpg https://ifh.cc/g/4zkBBl.png



Step2. Access Zeppelin


  • https://chrome.google.com/webstore/category/extensions
  • Install Proxy SwitchyOmega https://ifh.cc/g/ojV9SW.jpg

  • New profile → profile name, pac profile 선택 → pac script → 아래 코드 포트 번호 맞추어 입력
  • AWS → EMR → Cluster → Application → User interface URL → Zepplin → URL 복사
  • URL → 우측 상단 Proxy 설정 → 접속

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
      function FindProxyForURL(url, host) {
          if (shExpMatch(url, "*ec2*.amazonaws.com*")) return 'SOCKS5 localhost:8157';
          if (shExpMatch(url, "*ec2*.compute*")) return 'SOCKS5 localhost:8157';
          if (shExpMatch(url, "http://10.*")) return 'SOCKS5 localhost:8157';
          if (shExpMatch(url, "*10*.compute*")) return 'SOCKS5 localhost:8157';
          if (shExpMatch(url, "*10*.amazonaws.com*")) return 'SOCKS5 localhost:8157';
          if (shExpMatch(url, "*.compute.internal*")) return 'SOCKS5 localhost:8157';
          if (shExpMatch(url, "*ec2.internal*")) return 'SOCKS5 localhost:8157';
          return 'DIRECT';
      }
    

    https://ifh.cc/g/vvbqGc.png

    https://ifh.cc/g/WngyK9.png

    https://ifh.cc/g/FvDgxl.jpg

참조