스탠드얼론 클러스터 미 구성시

이전글 참조 - 스탠드얼론 클러스터 구성

데이테셋 다운로드

https://grouplens.org/datasets/movielens
데이터셋 다운로드(저 같은 데이터셋이 큰 ml-latest.zip을 선택함)

ml-latest.zip

테스트 소스

import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}
import org.apache.spark.sql.functions._

//스파크 세션 설정
val spark = SparkSession.builder
  .appName("standAlone-cluster-test")
  .getOrCreate
import spark.implicits._

// csv파일 읽기
val preview = spark
  .read
  .csv("/Users/lee/Downloads/ml-latest/ratings.csv")
preview.show

// option값 설정
val parsed = spark.read
  .option("header", "true") // 파일의 첫 줄을 필드 명으로 사용
  .option("nullValue", "?") // 필드 데이터를 변경( "?" => null )
  .option("inferSchema", "true") // 데이터 타입을 추론한다.
  .csv("/Users/lee/Downloads/ml-latest/ratings.csv")
parsed.show

parsed.count
parsed.cache
parsed
  .groupBy("movieId")
  .count
  .orderBy($"count".desc)
  .show

// createOrReplaceTempView(): 사용중인 DataFrame의 하나의 뷰를 생성한다.
val createView = parsed.createOrReplaceTempView("parks")
spark.sql("""
  SELECT movieId, COUNT(*) cnt
  FROM parks
  GROUP BY movieId
  ORDER BY cnt DESC
""").show

// describe() : numeric columns, including count, mean, stddev, min, and max의 통계를 리턴해준다.
val summary = parsed.describe()
summary.show



스탠드얼론 (싱글 머신)

1. spark-shell 실행: $SPARK_HOME/bin/spark-shell --master local

ui-Executor

스탠드얼론 클러스터 (싱글 머신)

1. spark-shell 실행: $SPARK_HOME/bin/spark-shell --master spark://localhost:7077
2. spark-shell 웹 UI 접속: http://localhost:4040
3. executors 카테고리 선택

ui-Executor

스탠드얼론 (싱글 머신) - 결과(1core)

standAlone-local-jobs


standAlone-local-stages


standAlone-local-executors



스탠드얼론 (싱글 머신) - 결과(6core)

1. 로직 변경 : appName(“standAlone-cluster-test”).master("local[6]")

2. bin/spark-submit \
--master local \
--class ch2.StandAloneTest \
 배포파일.jar

standAlone-local-6core-jobs


standAlone-local-6core-stages


standAlone-local-6core-executors



스탠드얼론 클러스터 (싱글 머신) - 결과

특정 Stage에서 non 클러스터에 비해 클러스터로 실행한 시간이 상당히 감소했다.(jobs에 빨간색으로 찍힌 점 )
하지만 전체 실행 시간으로 봤을땐 큰 차이가 없어 메모리/코어를 증설해야 성능 향상이 될 것 같다.

standAlone-cluster-jobs


standAlone-cluster-stages


standAlone-cluster-executors




SoftWare Developer

IT 기술 정리 및 공유를 위한 블로그 입니다.