(Chapter 1) 04. Spark Streaming

Spark 2015/01/30 15:54 용비

Spark Streaming


Spark Streaming live stream data 처리를 위한 Spark component이다. 예를 들어 live stream data 서버에 의해 만들어지는 log file이나 서비스의 사용자에 의해 post되는 상태 업데이트 정보를 담고 있는 message queue 의미한다.


Spark Streaming Spark Core RDD API 밀접하게 매칭되는 data stream 다룰 있는 API 제공한다. 프로그래머는 API 통해 메모리나 디스크에 저장된 데이터나 실시간 데이터를 다루는 프로젝트나 application 쉽게 개발할 있다.


Spark Streaming Spark Core에서 제공하는 fault tolerance, throughput,  scalability 동일한 수준으로 제공하도록 설계되어 있다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/650

(Chapter 1) 03. Spark Core, SQL

Spark 2015/01/30 15:29 용비

Spark Core


Spark Core task scheduling, memory management, fault recovery, storage system interacting등을 담당하는 component 포함하여 Spark 기본 기능을 제공한다.


또한 Spark Core Spark main programming abstraction RDD (Resilient Distributed Dataset) 정의한 API 홈이기도 하다. RDD 병렬 처리할 있는 많은 computing node 분산되어 있는 아이템들의 집합을 나타낸다.


Spark Core에서는 이런 collection들을 다룰 있는 많은 API 제공한다.


Spark SQL


Spark SQL Apache Hive SQL 변형하여 제공하는 Hive Query Language (HiveQL)처럼 SQL 통해 Spark interacting하는 것을 지원한다. Spark SQL Spark RDD database table 표현하고, Spark operation으로 SQL query 변환한다.


Spark SQL interface 제공하는 것을 넘어, Spark SQL 개발자가 하나의 application안에서 SQL query 섞어서 Python, Java, Scala RDD 지원하는 데이터 처리 프로그램을 개발할 있게 한다.


Spark stack 나머지 부분에 의해 제공되는 풍부하고 유연한 computing environment 밀접한 통합은 다른 오픈 소스 data warehouse tool과는 다른 부분이다. Spark SQL 버전 1.0 이후로 포함되어 있다.


Shark Spark SQL보다 먼저 만들어진 UC 버클리 프로젝트이다. Spark SQL 위에서 동작하도록 포팅되었다. Shark Spark Apache Hive 대체하여 동작하도록 추가 기능을 제공한다. 외부 graphing and data exploration tool 쉽게 연결하도록 하는 JDBC 서버 뿐만 아니라 HiveQL shell 포함하고 있다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/649

(Chapter 1) 02. Unified Stack

Spark 2015/01/29 14:18 용비

1. Spark 이용한 Data Analytics 대한 소개


여기서는 Apache Spark 대해서 간단하게 살펴보고자 한다. Apache Spark 익숙하다면 다음 장으로 건너 뛰어도 된다.


Apache Spark이란?

Apache Spark 빠르고 범용적인 목적으로 디자인된 Cluster Computing Platform이다.


속도측면에서 Spark Interactive Query Streaming Processing 포함하여 다양한 형태의 계산을 효율적으로 수행할 있도록 MapReduce Model 확장했다. 거대한 데이터를 처리하는데 있어서 속도는 중요하다. Spark 연산을 메모리에서 수행하기 때문에 Disk 기반으로 수행하는 MapReduce보다 훨씬 빠르다.


범용성 측면에서 Spark 예전 분산 시스템에서 요구되었던 여러 기능들 - Batch Application, Iterative Algorithm, Interactive Query, Streaming - 모두 수용했다. 하나의 엔진에서 모든 기능들을 지원함으로써 Spark Data Analysis Pipeline Production에서 요구하는 서로 다른 Processing Type 쉽고 싸게 결합할 있다. 그리고 서로 다른 Tool 유지/관리하는 비용을 줄일 있다.


Spark Python이나 Java, Scala, SQL 통해서 쉽게 접근할 있도록 API 제공한다. Hadoop Cluster상에서 Spark 구동할 수도 있고, 어떤 형태의 Hadoop Data Source에도 접근할 있다.


Unified Stack

Spark Project 여러 개의 component 밀접한 관계가 있다. Spark Core "Computational Engine"이다. Spark Core는 많은 worker machine 혹은 computation cluster상의 computational task 이루어진 Scheduling, Distributing, Monitoring Application들을 관리한다.

Spark Core Engine 빠르고 범용적이기 때문에 SQL이나 Machine Learning 같은 강력한 component들을 제공한다.

이런 component들은 Project에서 Spark 라이브러리로 추가되어 밀접하게 연동하도록 디자인 되어 있다.


서로 밀접하게 연관되어 연동하는 것에는 가지 유익한 점이 있다.


첫째, 모든 라이브러리들은 하위 layer에서 개선이 가능하다. 예를 들면 Spark Core Engine Optimization 추가되면, SQL Machine Learning 라이브러리의 성능이 자동적으로 좋아진다.


둘째, 운영비용이 적게 든다. 개별적으로 있을 때는 5~10개의 서버를 운영해야 하지만, 밀접하게 엮여 있는 시스템은 하나만 운영하면 된다. 비용에는 유지, 테스트, 지원 등이 포함된다. 새로운 component Spark 추가될 , 즉시 새로운 component 사용할 있다.


끝으로, 밀접한 연관관계로 엮어 놓은 것의 가장 장점은 서로 다른 처리를 요구하는 기능들을 결합하여 즉시 Application 반영할 있다는 것이다. 예를 들어, Streaming Source로부터 데이터를 받아서 real time으로 데이터를 구분하는 machine learning 이용하여 Spark에서 Application 개발할 있다. 동시에 analyst real time으로 비구조적인 log file로부터 SQL 통해 결과를 조회할 있다. 숙련된 data engineer 거기에 더해 특정 분석을 수행하기 위하여 Python Shell 같은 데이터에 접근할 수도 있다. 다른 사람들은 standalone batch application 통해 데이터 접근이 가능하다. 무엇이건 간에, IT team 하나의 software stack 관리하면 된다.

받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.yongbi.net/rss/response/648