빅데이타 & 머신러닝 195

Apache Spark-Python vs Scala 성능 비교

스파크 성능이 안나오면, 우리 회사 데이타팀 팀장왈. 먼저 파이썬으로 짰는지 확인 부터 해보라길래, 파이썬과 스칼라로 만들어진 스파크 성능 차이가 얼마나 나는지 찾아봤더니 다음과 같은 수치가 나왔다. http://emptypipes.org/2015/01/17/python-vs-scala-vs-spark/ (원본 출처) 일단 스파크를 할려면 스칼라는 필수인듯 하다. 간단한 프로토타입핑등에는 파이썬을 사용할 수 있겠지만 결국 프로적션은 스칼라로 최적화해야 할듯.근데. 자바대 스칼라 성능 비교는 없네

Apache Spark - Key/Value Paris (Pair RDD)

Spark Key/Value Pairs조대협 http://bcho.tistory.com RDD에는 어떤 데이타 형식이라던지 저장이 가능한데, 그중에서 Pair RDD라는 RDD가 있다. 이 RDD는 Key-Value 형태로 데이타를 저장하기 때문에, 병렬 데이타 처리 부분에서 그룹핑과 같은 추가적인 기능을 사용할 수 있다. 예를 들어 reduceByKey 와 같이 특정 키를 중심으로 데이타 연산 (각 키 값 기반으로 합이나 평균을 구한다던가) key 기반으로 join 을 한다던가와 같은 그룹핑 연산에 유용하게 사용할 수 있다. Pair RDD를 생성하는 방법은 다음과 같다. JavamapToPair나 flatMapToPair 라는 메서드를 사용하면 된다. mapToPair등의 함수를 이용할때, 아래와 같..

Apache Spark - RDD (Resilient Distributed DataSet) Persistence

Apache Spark(스파크) - RDD Persistence (스토리지 옵션에 대해서) 조대협 (http://bcho.tistory.com) Spark Persistence에 대해서 앞에 글에서 Spark RDD가 메모리에 상주 되는 방법에 대해서 간략하게 언급했는데, 다시 되 짚어 보면 Spark의 RDD는 filter() 등. 여러 Transformation Operation을 실행하더라도 Transformation 단계가 아니라 Action이 수행되는 단계에 로드된다고 설명하였다. 그리고, 매번 해당 RDD가 Action으로 수행될 때마다 다시금 소스에서 부터 다시 로드되서 수행된다고 했는데, 그렇다면 매번 로드 해서 계산하여 사용하는 것이 아니라, 저장해놓고 사용 하는 방법이 무엇이 있을까? ..

Apache Spark - RDD (Resilient Distributed DataSet) 이해하기 - #2

Apache Spark RDD 이해하기 #2 스파크에서 함수 넘기기 (Passing function to Spark) 조대협 (http://bcho.tistory.com) Passing function스파크는 개발자가 비지니스 로직을 함수로 정의한 후에, 이 함수를 스파크 클러스의 노드들로 보내서 수행할 수 있다. 스파크가 지원하는 프로그래밍 언어에 따라서, 이 함수를 넘기는 방법이나 특성이 다른데, 여기서는 Python을 이용하는 방법에 대해서 설명한다. (스칼라는 아직 공부를 못해서) 파이썬으로 함수 넘기기 파이썬으로 함수를 넘기는 방법은 크게 3가지가 있다. 람다 표기법을 이용하는 방식모듈 상의 탑레벨 함수(Top-level function)파이썬 클래스 안에서 함수를 정의하여, 클래스 안에서 그 ..

Apache Spark - RDD (Resilient Distributed DataSet) 이해하기 - #1

Spark RDD 이해하기 #1조대협(http://bcho.tistory.com) 기본 개념 잡기 RDD 는 여러 분산 노드에 걸쳐서 저장되는 변경이 불가능한 데이타(객체)의 집합으로 각각의 RDD는 여러개의 파티션으로 분리가 된다. (서로 다른 노드에서 분리되서 실행되는). 쉽게 말해서 스파크 내에 저장된 데이타를 RDD라고 하고, 변경이 불가능하다. 변경을 하려면 새로운 데이타 셋을 생성해야 한다. RDD의 생성은 외부로 부터 데이타를 로딩하거나 또는 코드에서 생성된 데이타를 저장함으로써 생성할 수 있다. RDD에서는 딱 두 가지 오퍼레이션만 지원한다. Transformation : 기존의 RDD 데이타를 변경하여 새로운 RDD 데이타를 생성해내는 것. 흔한 케이스는 filter와 같이 특정 데이타만..

Apache Spark 소개 - 스파크 스택 구조

Spark의 전체적인 스택 구조 조대협 (http://bcho.tistory.com) 스파크의 전체적인 스택 구조를 보면 다음과 같다. 인프라 계층 : 먼저 스파크가 기동하기 위한 인프라는 스파크가 독립적으로 기동할 수 있는 Standalone Scheudler가 있고 (그냥 스팍만 OS위에 깔아서 사용한다고 생각하면 된다). 또는 하둡 종합 플랫폼인 YARN 위에서 기동될 수 있고 또는 Docker 가상화 플랫폼인 Mesos 위에서 기동될 수 있다.스파크 코어 : 메모리 기반의 분산 클러스터 컴퓨팅 환경인 스팍 코어가 그 위에 올라간다. 스파크 라이브러리 : 다음으로는 이 스파크 코어를 이용하여 특정한 기능에 목적이 맞추어진 각각의 라이브러리가 돌아간다. 빅데이타를 SQL로 핸들링할 수 있게 해주는 S..

Apache Spark 클러스터 구조

Apache Spark Cluster 구조 스팍의 기본 구조는 다음과 같다. 스팍 프로그램은 일반적으로 “Driver Program”이라고 하는데, 이 Driver Program 은 여러개의 병렬적인 작업으로 나뉘어져사 Spark의 Worker Node(서버)에 있는 Executor(프로세스)에서 실행된다. 1. SparkContext가 SparkClusterManager에 접속한다. 이 클러스터 메니져는 스팍 자체의 클러스터 메니져가 될 수 도 있고 Mesos,YARN 등이 될 수 있다. 이 클러스터 메니저를 통해서 가용한 Excutor 들을 할당 받는다 2. Excutor를 할당 받으면, 각각의 Executor들에게 수행할 코드를 보낸다. 3. 다음으로 각 Excutor 안에서 Task에서 로직을 수..

Apache Spark 설치 하기

Apache Spark 설치 하기 조대협 (http://bcho.tistory.com) Spark 설치 하기 1. 스팍 홈페이지에서 다운로드. 다운로드시 Pre-built in Spark을 골라야 함. 여기서는 Hadoop 2.6용으로 빌드된 스팍을 선택한다. 2. 스팍 쉘을 실행 해보자 인스톨 디렉토리에서, %./bin/pyspark 을 실행하면, 위와 같이 파이썬 기반의 스팍 쉘이 실행됨을 확인할 수 있다. 3. 로깅 레벨 조정 및 간단한 스팍 예제 디폴트 로깅은 INFO 레벨로 되어 있기 때문에, 쉘에서 명령어를 하나라도 실행하면 INFO 메세지가 우루루 나온다. (몬가 할때 결과 값보다, 오히려 INFO 메세지가 많이 나온다.)그래서, conf/log4j.properties 파일을 conf/log..

Apache Spark이 왜 인기가 있을까?

스팍에 대한 간단한 개념과 장점 소개 조대협 (http://bcho.tistory.com) 스팍의 개념과 주요 기능 요즘 주변에서 아파치 스팍을 공부하는 사람도 많고, 스팍을 기반으로한 Zeppelin을 이용하여 데이타 분석을 하는 경우도 많아서, 오늘부터 다시 Spark을 들여다 보기 시작했습니다. 스팍은 예전에도 몇번 관심을 가진적이 있는데, Storm과 같은 데이타 스트리밍 프레임웍에서 Storm과 같이 언급 되기도 하고, 머신 러닝 프레임웍을 볼때도 스팍 ML 라이브러리 기능이 언급 되기도 하고, 예전 모 회사의 데이타 분석 아키텍쳐를 보니, 카산드라에 저장된 데이타를 스팍/Shark라는 프레임웍으로 분석을 하더군요. 또 누구는 메모리 기반의 하둡이라고도 합니다. 스팍의 정의를 내려보면 한마디로범..

Zepplin (제플린) 설치하기

제플린 설치하기 (맥북 기준 - Darwin 커널 기준) 1. 선행 설치 git 설치maven 3.3 설치JDK 설치 (1.8 설치) 2. 소스코드 다운로드% git clone https://github.com/NFLabs/zeppelin 위와 같이 코드가 다운로드됨을 확인할 수 있음 3. 컴파일코드가 다운되면 컴파일을 해야 하는데, 여기서는 간단한 테스트를 위해서 클러스터 모드가 아닌 로컬 모드로 설치를 진행한다.% mvn install -DskipTests 이때 주의할점은 맥에서는 mvn으로 설치할때, 몇몇 의존성 모듈 설치시 루트 권한을 필요로 하는 것이 있기 때문에 % sudo mvn install -DskipTests 를 이용하여 루트 권한으로 설치한다. 설치시 다음과 같은 에러가 나올 수 있다..