목록Data/Spark (41)
우노

Spark gemm Spark의 gemm 함수는 SparseMatrix * DenseMatrix를 지원합니다. 즉, Sparse Matrix와 Dense Matirx 간 곱셈을 지원하는 함수입니다. github https://github.com/apache/spark/blob/fc182f7e7f9ff55a6a005044ae0968340cf6f30d/mllib/src/main/scala/org/apache/spark/mllib/linalg/BLAS.scala#L478 알고리즘 순서 우측행렬 컬럼 기준으로 좌측행렬 컬럼이 이중포문을 이루며 곱해집니다. 우측행렬 컬럼은 Dense하게 모든 요소를 곱셈에 사용하지만, 좌측행렬 컬럼은 존재하는 요소만 곱셈에 사용합니다. 곱셈 결과값은 아래와 같은 형태로 결과 데이..

Breeze canMulM_DM Breeze의 canMulM_DM 함수는 CSCMatrix * DenseMatrix를 지원합니다. 즉, Sparse Matrix와 Dense Matirx 간 곱셈을 지원하는 함수입니다. github https://github.com/scalanlp/breeze/blob/b965a1c36e955a87fdffa1b9f5b3f44e3a5f191c/math/src/main/codegen/breeze/linalg/operators/CSCMatrixOps.scala#L647 알고리즘 순서 우측행렬 컬럼 기준으로 좌측행렬 컬럼이 이중포문을 이루며 곱해집니다. 우측행렬 컬럼은 Dense하게 모든 요소를 곱셈에 사용하지만, 좌측행렬 컬럼은 존재하는 요소만 곱셈에 사용합니다. 곱셈 결과값은..
Breeze canMulM_M Breeze의 canMulM_M 함수는 CSCMatrix * CSCMatrix를 지원합니다. 즉, Sparse Matrix 간 곱셈을 지원하는 함수입니다. github https://github.com/scalanlp/breeze/blob/b965a1c36e955a87fdffa1b9f5b3f44e3a5f191c/math/src/main/codegen/breeze/linalg/operators/CSCMatrixOps.scala#L708 Code implicit def canMulM_M[@expand.args(Int, Float, Double, Long) T] : breeze.linalg.operators.OpMulMatrix.Impl2[CSCMatrix[T], CSCMatri..
Spark SparseMatrix를 CSC format으로 생성 시, 매개변수 순서 행크기(rows) 열크기(cols) 열 압축 정보 배열(colPtrs) 열 순서대로 데이터의 행 인덱스 배열(rowIndices) 열 순서대로 데이터 배열(values) Breeze CSCMatrix를 CSC format으로 생성 시, 매개변수 순서 열 순서대로 데이터 배열(values) 행크기(numRows) 열크기(numCols) 열 압축 정보 배열(colPtrs) 열 순서대로 데이터의 행 인덱스 배열(rowIndices) Spark SparseMatrix를 Breeze CSCMatrix로 변환하는 코드 import org.apache.spark.mllib.linalg.SparseMatrix import breeze...
log4j Apache Spark 작업을 실행할 때, 작업이 어떻게 진행되는지 로그를 찍어가며 확인하고 싶다면 Apache log4j을 사용해 Log를 확인할 수 있다. log4j는 Scala에서도 사용할 수 있는 인기있는 Java 기반 로깅 유틸리티이다. 사용 예제 import org.apache.log4j.LogManager val log = LogManager.getRootLogger log.warn("test")
Matrix를 일정 단위로 slice 한 뒤 각각의 nnz, density 구하기 Input Matrix data Matrix data의 행 크기 Matrix data의 열 크기 Slice 하고자하는 행 크기 Slice 하고자하는 열 크기 Output Slice 별 nnz Slice 별 density Slice 별 nnz의 평균 Slice 별 density의 평균 코드 해당 코드는 (317080,317080) 행렬을 (40000,50000) 단위로 자른것이며 총 42개의 Slice가 발생합니다. import scala.collection.mutable.ArrayBuffer import scala.math.BigDecimal // inputfile val input = sc.textFile("s3://sn..
에러 DenseMatrix를 생성하는 경우 import org.apache.spark.mllib.linalg.DenseMatrix val a = DenseMatrix.ones(46341,46341) java.lang.IllegalArgumentException: requirement failed: 46341 x 46341 dense matrix is too large to allocate at scala.Predef$.require(Predef.scala:224) at org.apache.spark.mllib.linalg.DenseMatrix$.ones(Matrices.scala:473) SparseMatrix를 생성한 후 toDense를 하는 경우 import org.apache.spark.mllib...

우선 YARN Resource의 개념에 대해 간단하게 알고 넘어가자 YARN Resource 개념 클러스터에 있는 노드 하나의 물리적 자원이 다음과 같다고 가정했을 때 CPU : 24 Memory : 128GB 다음 그림과 같이 YARN 리소스를 할당할 수 있다. yarn.nodemanager.resource.memory-mb nodemanager의 메모리 크기 한 노드의 물리 메모리가 128GB이므로, OS를 위한 8GB 정도를 제외해 120GB로 설정 yarn.scheduler.maximum-allocation-mb ResourceManager가 하나의 컨테이너 할당에 필요한 최대 메모리 크기 따라서, "yarn.scheduler.maximum-allocation-mb" 값은 "yarn.nodeman..
다음 명령을 통해, yarn 환경에서 각 Worker 노드에 할당된 Executor 수를 확인할 수 있다. yarn node -list

간단한 Spark 구조 및 용어 설명 하나의 중앙 조정자(master, Driver)와 하나 또는 여러 개의 분산 작업 노드(slave, Executor)로 이루어져있으며, Driver와 Executor를 합쳐서 Spark application이라고 부릅니다. 분산 모드에서는, 하나의 Spark application은 Cluster Manager라고 불리는 외부 서비스를 통해 여러 개의 머신에서 실행됩니다. https://wooono.tistory.com/58?category=914839 Spark local mode와 deploy mode(client, cluster)란? Spark 사용시 Cluster를 사용하는가? Cluster 사용 안한다. Spark local mode Cluster 사용 한다...