오늘의 인기 글
최근 글
최근 댓글
Today
Total
12-30 13:56
관리 메뉴

우노

[AWS EMR] Spark, Breeze 서브 모듈 빌드해서 사용하기 본문

AWS/EMR

[AWS EMR] Spark, Breeze 서브 모듈 빌드해서 사용하기

운호(Noah) 2021. 2. 23. 18:18

Spark 서브 모듈 빌드

  • spark 다운로드

    • 사이트

    • download

        wget https://mirror.navercorp.com/apache/spark/spark-3.1.1/spark-3.1.1.tgz
        tar -xvzf spark-3.1.1.tgz
  • 간단한 코드 수정 (오류 시 출력하는 문구 변경)

  • 유효성 검사 false로 수정

      vi /home/hadoop/spark/pom.xml
    
      # 검색
      /scalastyle-maven-plugin
      # 수정
      # <failOnViolation>true</failOnViolation> --> <failOnViolation>false</failOnViolation>
      <plugin>
              <groupId>org.scalastyle</groupId>
              <artifactId>scalastyle-maven-plugin</artifactId>
              <version>1.0.0</version>
              <configuration>
                <verbose>false</verbose>
                <failOnViolation>true</failOnViolation>
                <includeTestSourceDirectory>false</includeTestSourceDirectory>
                <failOnWarning>false</failOnWarning>
                <sourceDirectory>${basedir}/src/main/scala</sourceDirectory>
                <testSourceDirectory>${basedir}/src/test/scala</testSourceDirectory>
                <configLocation>scalastyle-config.xml</configLocation>
                <outputFile>${basedir}/target/scalastyle-output.xml</outputFile>
                <inputEncoding>${project.build.sourceEncoding}</inputEncoding>
                <outputEncoding>${project.reporting.outputEncoding}</outputEncoding>
              </configuration>
              <executions>
                <execution>
                  <goals>
                    <goal>check</goal>
                  </goals>
                </execution>
              </executions>
      </plugin>
  • Spark library 상위 디렉토리에서 Maven을 통해 spark-mllib 서브모듈만 jar 파일로 빌드

      cd /home/hadoop/spark-3.1.1
      ./build/mvn -pl :spark-mllib_2.12 -DskipTests clean install
  • 빌드한 jar 파일을 EMR jar 디렉토리(/usr/lib/spark/jars)로 복사

      sudo cp /home/hadoop/spark-3.1.1/mllib/target/spark-mllib_2.12-3.1.1.jar /usr/lib/spark/jars
    • 복사 이후 /usr/local/spark/jars 내부에, 이전 버전의 spark jar 파일이 있다면 제거

        cd /usr/lib/spark/jars
        sudo rm -rf spark-mllib_2.12-3.1.1-amzn-0.jar
  • EMR spark-shell 실행 후 코드 변경 확인

      spark-shell
      >> import org.apache.spark.mllib.linalg.SparseMatrix
    
      >> val sm = new SparseMatrix(2,3,Array(0,1,2,3), Array(0,1,0), Array(1.0,7.0,3.0))
    
      // SparseMatrix * DenseMatrix 를 진행하지만
      // 왼쪽 행렬의 열과 오른쪽 행렬의 행이 맞지 않아 오류가 발생하므로
      // 오류 시 출력하는 문구가 정상적으로 변경되었는지 확인 가능
      >> sm.multiply(sm.toDense)

Breeze library 빌드

  • breeze library clone

  • 간단한 코드 수정 (오류 시 출력하는 문구 변경)

  • breeze library 상위 디렉토리에서 sbt를 통해 jar 파일 빌드

      # sbt 설치
      sudo rm -f /etc/yum.repos.d/bintray-rpm.repo
      curl -L https://www.scala-sbt.org/sbt-rpm.repo > sbt-rpm.repo
      sudo mv sbt-rpm.repo /etc/yum.repos.d/
      sudo yum install sbt -y
      cd /home/hadoop/breeze
      sbt package
  • 빌드한 jar 파일을 EMR jar 폴더(/usr/local/spark/jars)로 복사

      sudo cp /home/hadoop/breeze/math/target/scala-2.12/breeze_2.12-1.1.jar /usr/lib/spark/jars
    • 복사 이후 /usr/local/spark/jars 내부에, 이전 버전의 breeze jar 파일이 있다면 제거

        cd /usr/lib/spark/jars
        sudo rm -rf breeze_2.12-1.0.jar
  • EMR spark-shell 실행 후 코드 변경 확인

      spark-shell
      >> import breeze.linalg.CSCMatrix
    
      >> val sm = CSCMatrix((1,0),(11,0),(0,1))
    
      // SparseMatrix * SparseMatrix 를 진행하지만
      // 왼쪽 행렬의 열과 오른쪽 행렬의 행이 맞지 않아 오류가 발생하므로
      // 오류 시 출력하는 문구가 정상적으로 변경되었는지 확인 가능
      >> sm * sm

Comments