티스토리 뷰

후기

Flamingo Seminar(2016/11/25) 후기

Tomining 2016. 11. 26. 21:55
2016년 11월 25일 강남토즈점에서 진행된 Flamingo Seminar 참석

1. Flamingo Project 소개

Flamingo란 Hadoop Ecosystem과 연계하여 빅데이터를 처리할 수 있는 솔류션 시스템입니다.
2016년 12월에 Flamingo 3.0(FEM)을 공개할 예정이며, 특징으로는 프로젝트의 목적에 맞게 컴포넌트가 분리되어 제공됩니다.(아래 3가지 참고)
  • Flamingo Analytics(FEA)
  • Flamingo(FL)
  • Flamingo Management(FEM)

Flamingo 개발환경은 jdk 1.8에서 개발되고 있습니다.(그 외 버전 정보들을 소개하였으나 너무 많아서 생략합니다.)
FEM에는 아래와 같은 특징이 있었습니다.(FEM 시연 영상을 보고 정리한 내용)
  • 대시보드
    • 시스템 리소스를 모니터링
    • 빅데이터를 사용자 입장에서 데이터 분석을 도와 줌
  • Hadoop Ecosystem
    • mapreduce 로그를 실시간으로 노출
    • spark event도 타임라인 방식으로 제공
    • Hive도 지원
    • hdfs gui 방식 지원
    • oozie workflow도 타임라인 방식으로 지원
  • Coordinator
    • batch_job
  • Cluster
    • 각 노드별 모니터링
      • process 및 자원 사용량 모니터링

Flamingo의 발전 방향에 대해 아래와 같이 소개하였습니다. 앞에서 언급한 것 처럼 3개의 컴포넌트로 나눠지고 오픈소스로 공개할 예정이라고 합니다.
  • FL
    Apache Incubation 프로젝트로 예정
  • FEA
    데이터 처리 및 분석을 위한 도구로 전면 재개발
  • FEM
    2016년 12월 릴리즈 예정

[질문1] 앵커스(Ankus)와의 차이는 무엇인가?
Flamingo 0.4 버전에서 파생되어 Flamingo와는 다른 방향으로 커스터마이징을 하고 있는 프로젝트입니다. 현재는 오픈소스로 공개가 되어 있습니다
프로젝트 방향성에서 차이가 있으며, Flamingo의 경우 GPL3에서 Apache 라이센스로 변경이 되었습니다.

2. Hadoop Submit 참석 후기

Hadoop Submit 2016 Tokyo

Hadoop 3.0 Alpha 1 Release 2016.10.3
GA 버전은 2017년 1Q or 2Q

주요 업데이트
  • 최소 java 버전: 1.7 -> 1.8
  • YARN Timeline Service v.2
  • Support Erasure Coding in HDFS
    기본적으로 3-way replication 대비 50% 스토리지 저장공간 사용
    • Erasure Coding
      저장되는 파일을 인코딩된 파일을 복사, 추후 데이터가 깨진 경우 디코딩을 통해 파일 복구,
      인코딩/디코딩 process가 늘어나기 때문에 접근이 많은 데이터에는 적용이 부담이지 않을까 생각됨.
  • Shell Script rewrite
    오래동안  존재하는 버그 수정을 위해 재작성
  • MapReduce Task-level native optimization
    C++ native를 JNI로 변경하면서 30% 성능 개선
  • Namenode HA가 active/standby를 2개까지 가능했으나 2개 이상 Running 지원
  • MS Azure Data Lake filesystem connector
  • 기본 포트 변경(10000번 이하로 변경)
  • Intra-datanode balancer
    hdfs diskbalancer 명령어를 통해 디시크의 교체/추가시 데이터 불균형 해결
  • HADOOP _HEAPSIZE
    deprecated된 기능, heap size를 host 메모리를 사용하며 자동으로 튜닝

Apache NiFi
  • Dataflow Engine
    • 240여가지 프로토콜을 지원
    • 파일 또는 MQ 메시지도 지원
YARN만큼의 기대를 갖고 있는 시스템

Apache Eagle
오픈 소스 기반의Hadoop Monitoring Framework
Hadoop을 모니터링을 하는 시스템
e-bay에서 개발하여 현재 0.4버전이며 Apache Incubator 프로젝트입니다.

  • Policy Engine
    • realtime: Storm + Kafka
    • Declarative Policy: SQL(CEP) On Streming + Hot Deploy
  • Declarative Policy
    from hadoop.JmxMetricEventStream

[분석사례]
  • Sega Networks
    • spark MLlib을 활용하여 사용자의 데이터를 학습하고 예측을 실시
    • 사용자 게임 포기 방지
      • 게임을 포기하기 전에 다른 서비스를 제공하는 등
  • 코카콜라
    • 55만개의 자판기의 재고관리 및 효율적인 공급루트를 산출해내기 위해 사용
      • 도시/날씨/위치정보/이벤트 등의 데이터를 활용
    • 분석을 통해 보급하기 위해 방문하는 횟수, 재고상태, 품절 현상 및 루트 최적화

예상치 못한 곳에서 빅데이터를 활용하여 상당한 효과를 보여주고 있는 경험들을 맛볼 수 있었습니다.

3. Flamingo Management(FEM) 통한 Oozie 작업과 모니터링

Oozie란? 하둡 작업을 관리하는 워크플로우 스케줄링 시스템입니다.
Oozie의 필요성
  • XML 기반 워크플로우
  • 워크플로우의 배치작업 스케줄링
  • 워크플로우를 구성하는 다양한 작업 지원
  • 워크플로우를 구성하는 Action Job

Oozie Server는 Tomcat 위에서 동작하며, 워크플로우를 Hadoop Cluster 내의 Lauuncher Mapper를 통해 Action 실행(async)
  • 워크플로우
    • Control node
      • 워크플로우의 시작, 종료 등을 정의
    • Action node
      • 실제 실행할 작업을 정의

Oozie Job Monitoring이 불편하여 Flamingo Management(FEM)에서 기능을 제공
  • 타임라인 방식으로 일별 Job 상태를 한 눈에 확인 가능
  • 워크플로우 Job 상세 이력 확인 가능
    • 워크플로우 설정, 로그
    • 워크플로우 수정 후 재수행 가능

Coordinator Job: 워크플로우를 스케줄링 해주는 Job
날짜 설정이 GMT 기준으로 설정됨(불편한 점) - Flamingo에서 제공되는 Timezone 설정을 통해 변경 가능

Bundle: Coordinator Job의 집합
  • kick-off-time: Bundle Job이 실행되는 시점, Coordinator Job 실행시간이 먼저 설정되어 있더라도 kick-off-time 이후에 실행됨

4. R로 하는 시계열 데이터 분석

R이란? 통계적인 컴퓨팅과 그래픽을 위한 무료 소프트웨어, 통계학자가 가장 많이 사용하는 분석 소프트웨어(???)
ggplot: 데이터 시각화를 지원하는 R 패키지

시계열 데이터란? 시간의 흐름에 따라 관측되는 데이터
예를들면 날씨 정보, 금융 정보 등등이 있습니다.

시계열 분석
  • 주식 예측
  • 날씨 예측

[분석사례]

  • ARIMA(Auto-Regressive Integrated Moving Average)
    • AR모형과 MA모형이 결한한 시계열 분석 기법의 한 종류
    • 과거 관측 값과 오차를 사용해서 현 시점의 시계열 관측 값을 표현
    • 보통 단기 예측에 사용
    • 적용 조건
      • 최소 50~60개 데이터 필요
      • 정상 시계열 데이터 필요
  • Neural Network
    • 생물학적 신경망의 구조로부터 착안된 학습 알고리즘
    • 정상성을 유지하지 않아도 사용 가능
    • input/hidden/output layer로 구성


Case 1. Predication

분석 과정: 시도표 확인 -> 정상성 확인 -> 단위근 검정 -> 정상화

Case 2. Anomaly Detection

시계열을 이용한 이상 탐지는 특정 시간 주기 패턴을 파악하여 모델이나 규칙을 만들어 그 규칙에서 벗어나는 이벤트 발생시 이상현상으로 탐지
사용 패키지: AnomalyDetection(Twitter에서 만든 패키지)
단변량 시계열 자료만 사용 가능

[다른 방법]
  • EMA(Exponential Moving Average), EMS(Exponential Moving Standard Deviation)을 사용
    별도 패키지는 없음
  • tsoutilers 패키지 이용
  • Machine Learning 알고리즘 이용

[질문1] 다변량 분석인 경우 어떻게 분석하나?
여러 통계 기법들을 활용해야 합니다. Multi Layer Regression도 한 방법이 될 수 있습니다.

5. Deep Q Learning

Markov Decision Process(MDP)
  • Discounted Future Return
    미래로 갈수록 보상은 줄어든다.
  • Value Iteration
  • Policy Evaluation

일종의 길찾기 게임이라고 할 수 있습니다.
그렇다면 기존 딥러닝 알고리즘(CNN, LSTM 등)으로 게임을 만들어보면 안되나?
안됩니다… 왜?
Credit Assignment Problem
    reward를 받는 시점까지는 delay가 있다. 
    즉, 어떤 행위가 벌어지고 일정 시간이 지난 뒤에 reward가 발생한다는 것이다.
그럼 어떻게 해야 할까? Q-Learning을 사용하자.
  • Q-Learning의 문제점
    • 단일 이슈에서만 적용 가능
Deep Q-Learning을 사용하자.
  • 이미지 4장을 이용하여 Q-value(Action)를 예측
  • ReplayMemory

TensorFlow
  • Tensor Board
  • 데이터를 실시간으로 확인 가능

Thread-based Deep Q-Learning
  • MemoryReplay가 없어도 됨

발표자 정보
6. Apache Spark 2.0

mapreduce 사이에 I/O 작업을 memory로 대체하면서 성능 개선을 이뤄낸 프레임워크.
하지만 너무나 큰 데이터라면 map, reduce에 소요되는 시간이 오래 걸리기 때문에 Hadoop의 mapreduce를 완전히 대체하기는 어렵다고 생각

Spark Key feature
  • RDD
    • immutable: Java의 String Object와 동일
    • transformation/action type
  • Driver/Worker
    • Driver: collect()를 호출한 경우 Driver memory를 많이 사용
    • Worker: cache()를 호출한 경우 RDD는 worker에 cache 됨
  • SparkContext
    • spark-shell: sc라는 SparkContext를 생성해 줌

Spark 2.0 Key
  • 성능 향상: Tungsten Phase
  • 자료 구조 통합: Structured Streaming
    • dataframe(테이블 같은 자료구조)
    • Spark SQL로 dataframe 내에 데이터를 조회
      • 99 TPC-DS 달성
        TPC-DS란 DB SQL의 100개 내외를 이용하여 지원 Coverage를 비교하는 벤치마크가 있음.
    • dataset
      • dataframe = dataset[row]
  • R Script를 지원(Spark-R)
    • R의 분산처리 불가 이슈를 해결
  • Spark Streaming 성능 개선
    • SparkContext를 정해진 시간동안만 유지하고 폐기
  • Aggregation
    • Batch Aggregation
      logs = ctx.read.format(“json”).open(“s3://logs”)

      logs.groupBy(logs.user_id).agg(sum(logs.time))
      .write.format(“jdbc”)
      .save(“jdbc:mysql//…”)
    • Continuous Aggregation
      logs = ctx.read.format(“json”).steam(“s3://logs”)

      logs.groupBy(logs.user_id).agg(sum(logs.time))
      .write.format(“jdbc”)
      .startStream(“jdbc:mysql//…”)
  • Volcano model VS college freshmen
    • sql을 수행할 때 날코딩으로 코드를 생성하여 수행(Compiler를 자체적으로 만들어서 구현)
    • whole stage code generation
      • spark.sql.codegen.wholeStage 속성

정리
mapreduce와 hive를 장기적으로 대체할 것이다. 다만 mapreduce가 더 빠른 경우도 있다.
scala를 꼭 배워야 한다.
Spark 2.0에서 성능 개선을 많이 이뤄냈으나 성능 튜닝 포인트 또한 많다.(Learning-Curve가 필요, 하지만 생각만큼 높진 않음)
Machine Learning 라이브러리가 Spark에 많이 들어가 있다. 아직 부족하지만 Mahout과 협의하면서 점점 발전할 것이다.


각 자료마다 EXEM이라는 회사명이 눈에 띄었습니다. Flamingo와 EXEM이라는 회사는 무슨 관계인지 그 회사에서 개발한 것인지 궁금했습니다.
저 뿐 아니라 많은 사람들이 궁금해 했는지 별도의 시간을 갖고 소개하는 시간을 가졌습니다.
  • Flamingo는 클라우다인(Cloudine)이라는 회사에서 최초 개발
  • EXEM은 클라우다인에 투자한 회사
  • 현재는 클라우다인이 EXEM에 빅데이터 본부로 흡수 합병
  • Flamingo 3.0을 오픈소스로 개발 지원하고 있음

Cloudera의 HUE와는 어떤 차별성을 어떻게 가져갈 것인지에 대한 질문이 있었습니다.
워크플로우 관리와 시스템 모니터링 측면에서 목적을 같이하나 Flamingo의 경우 Oozie와 Spark 디자이너에 더 중점을 둘 것이라고 답변하였습니다.(by 빅데이터 본부장 김병곤님)

느낀점
Flamingo를 접한지는 오래된 것 같습니다. 아직 직접적으로 사용해 본 적은 없으나, HUE와 비교하여 일부 기능에서는 더 매력적이라고 생각합니다.
요즘 Hot한 Zeppelin과는 조금 다른 분야로 보이지만 기대가 많이 되는 솔류션인 것 같습니다.
2017년 상반기 내에 FEM을 오픈소스로 공개할 것이라고 하니 곧 직접 사용해 볼 수 있는 기회가 있지 않을까 생각됩니다.
개인적으로는 마지막 세션인 Spark 2.0에 대한 소개가 제일 좋았던 것 같습니다.(Spark에 관심이 많아서…)

참고

'후기' 카테고리의 다른 글

SKP TechPlanet 2016 후기  (0) 2016.10.19
[elice]KAIST 주관 2016년 머신러닝 워크샵 후기  (0) 2016.08.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함