빅데이타 & 머신러닝 148

구글 빅데이타 플랫폼 빅쿼리(BIGQUERY)에 소개

구글 빅데이타 플랫폼 빅쿼리 소개 조대협 (http://bcho.tistory.com) 구글의 클라우드 관련 기술중 무엇이 좋은게 있을까 살펴 보면서 기술을 하나하나씩 보다 보니, 구글 클라우드의 특징은 여러가지가 있겠지만, 데이타 회사 답게 빅데이타 및 머신 러닝 플랫폼이 상당히 강하다. 그중에서 빅데이타 플랫폼의 중심에 BIG QUERY라는 빅데이타 플랫폼이 있어서, 몇 회에 걸쳐서 빅쿼리에 대해서 소개해보고자 한다.구글 빅데이타 분석의 역사구글은 빅데이타를 다루면서, 그 근간이 되는 기술들의 논문들을 공개했다. 하둡 파일 시스템의 시초가 되는 GFS나, 하둡의 시초인 MapReduce 논문, 그리고 Hive를 통해 오픈소스화가 된 Big Table등의 논문들이 있다. 구글의 빅쿼리는 Dremel 이..

BI 툴 태블로(Tableau)

AdHoc BI 리포팅 도구 태블로 (Tableau) 조대협 (http://bcho.tistory.com) 근래에 들어서 빅데이타 관련해서 태블로 라는 도구가 이름이 꽤나 들려오고, 아시는 분이 태블로 관련 파트너사 관련 창업을 하셨길래 시간이 나면 봐야지 하다가 오늘 퀵하게 한번 쓰윽 훝어 보았다. 한마디로 BI 리포팅 도구이다. http://get.tableau.com/campaign/business-intelligence.htmlMySQL,MS SQL, ORACLE등의 OLAP 데이타 백앤드에 연결해서 AD HOC 방식으로 리포트를 뽑아낼 수 있는 도구이다.AD HOC방식이란, OLAP의 필드를 가지고, X,Y,Z 측으로 지정하여 분석하고 리포트나 그래프등을 표현할 수 있는 툴이다.비교하자면 엑셀의..

구글 클라우드 비젼 API 사용하기 (Google Cloud Vision API)

Google Cloud Vision API 사용하기 구글 클라우드 비젼 API 사용하기조대협 (http://bcho.tistory.com) 빅데이타와 머신러닝과 같은 기술이 요즘 인터넷을 매우고 있는 시대에, 구글이 얼마전 이미지 디텍션 (Image detection)이 가능한, Cloud Vision API라는 오픈 API를 발표하였다. 현재는 베타버전 상태인데, 호기심에 빠르게 한번 테스트를 해봤다. node.js를 이용하여, 간단한 테스트 프로그램을 만들어서 테스트를 해봤는데, 구현에 걸리는 시간은 불과 10분이 안된듯... (node.js는 역시 프로토타이핑용으로는 정말 좋은듯) Cloud Vision API 억세스 권한 얻기 Cloud Vision API는 현재 베타 상태이다. 접근을 하려면 별..

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에서 로직을 수..