튜토리얼 139

안드로이드 플랫폼 기본 아키텍쳐

안드로이드 플랫폼 기본 아키텍쳐 조대협 (http://bcho.tistory.com) 안드로이드 플랫폼의 기반 아키텍쳐를 살펴보면 다음 그림과 같다. 원본 : https://en.wikipedia.org/wiki/Android_(operating_system)#/media/File:Android-System-Architecture.svg 리눅스 커널 일단 가장 아랫단에, Linux 커널 이 올라가 있다. 일반적인 Linux 커널과 크게 다르지는 않지만, 모바일 디바이스에 최적화된 전력 관리 기능이나 안드로이드에 최적화된 Binder IPC (프로세스간 커뮤니케이션) 부분등이 포함되어 있다. 시스템 라이브러리 리눅스 커널위에는 C로 구현된 몇가지 네이티브 라이이브러리들이 올라가 있다. 3차원 그래픽을 위한..

안드로이드 프로그래밍 시작하기

안드로이드 프로그래밍 시작하기 (둘러보기) 조대협 (http://bcho.tistory.com) 요즘 서버쪽 기술은 다소 시들해진것도 같고, 하는 일이 모바일 서비스인지라 (얼마전에도 그랬지만..) 알아야할것 같아서, 안드로이드 프로그래밍을 보기 시작했다. 아무래도 서버 개발자 출신이다 보니 안드로이드 개발이라는 생소한 분야를 이 나이에 공부하면서 정리하는 내용이니 혹여나 내용이 허접하더라도.. 이해해주시기를.. (초보자 시각에서 정리한 내용입니다. ) 구글에서 안드로이드 IDE인 안드로이드 스튜디오를 다운받아서 설치하면, 통합 개발 환경을 사용할 수 있다. 이 IDE는 보니, JetBrain의 IntelliJ를 기반으로 만들어진 환경이다. (구글이 이런 투자는 잘한듯..) 그러다 보니 이클립스를 쓰면서..

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라는 프레임웍으로 분석을 하더군요. 또 누구는 메모리 기반의 하둡이라고도 합니다. 스팍의 정의를 내려보면 한마디로범..

분산 코디네이터 Zookeeper(주키퍼) 소개

ZooKeeper란 무엇인가?조대협 (http://bcho.tistory.com) 소개 분산 시스템을 설계 하다보면, 가장 문제점 중의 하나가 분산된 시스템간의 정보를 어떻게 공유할것이고, 클러스터에 있는 서버들의 상태를 체크할 필요가 있으며 또한, 분산된 서버들간에 동기화를 위한 락(lock)을 처리하는 것들이 문제로 부딪힌다. 이러한 문제를 해결하는 시스템을 코디네이션 서비스 시스템 (coordination service)라고 하는데, Apache Zookeeper가 대표적이다. 이 코디네이션 서비스는 분산 시스템 내에서 중요한 상태 정보나 설정 정보등을 유지하기 때문에, 코디네이션 서비스의 장애는 전체 시스템의 장애를 유발하기 때문에, 이중화등을 통하여 고가용성을 제공해야 한다. ZooKeeper는..

REST JWT(JSON Web Token)소개 - #1 개념 소개

JWT(JSON Web Token)을 이용한 API 인증 - #1 개념 소개조대협 (http://bcho.tistory.com) REST API에 대한 보안과 인증이 화두가 되면서 많이 언급되는 것이 OAuth인데, 근래에 들어서 화두가 되고 있는 것이 JWT (JSON Web Token)이라는 표준이다. Claim기반 토큰의 개념 OAuth에 의해서 발급되는 access_token은 random string으로 토큰 자체에는 특별한 정보를 가지고 있지 않는 일반적인 스트링 형태 이다. 아래는 페이스북에서 발급된 access_token의 형태로 일반적인 문자열 형태임을 확인할 수 있다. API나 서비스를 제공하는 서버 입장에서 그 access_token을 통해서 사용자에 연관된 권한(예를 들어 scope..