cassandra overview & spark to cassandra SuseongPark
For the presentation, Cassandra's behavior and structure are compressed. A light example is attached to help readers understand easily. Therefore, it is not 100% consistent with Cassandra's behavior.
A notable part of this article is Cassandra's Batch tuning using by SSTable.
- cassandra overview.
- spark to cassandra using by sstable.
우리가 이름만 들어도 아는 유명 IT 서비스들의 화려한 웹페이지도, 예쁜 모바일 앱도 그 뒤에는 탄탄하고 강력한 분산 시스템을 기반으로 합니다. 이러한 백엔드 시스템이 부실할 경우 서비스나 앱은 그야말로 사상누각입니다. 본 세미나에서는 이러한 시스템들을 만들때 풀어야 할, 가장 기본이 되는 문제와 이슈들 12가지에 도전해봅니다.
This material is made to educate operators, who deal with cassandra in production environment and based on cassandra version 1.1.X
이 자료는 Cassandra를 상용 환경에서 운용하기 위한, 운용자를 위한 교육 자료로 Cassandra 1.1.X를 기준으로 설명한 자료입니다.
cassandra overview & spark to cassandra SuseongPark
For the presentation, Cassandra's behavior and structure are compressed. A light example is attached to help readers understand easily. Therefore, it is not 100% consistent with Cassandra's behavior.
A notable part of this article is Cassandra's Batch tuning using by SSTable.
- cassandra overview.
- spark to cassandra using by sstable.
우리가 이름만 들어도 아는 유명 IT 서비스들의 화려한 웹페이지도, 예쁜 모바일 앱도 그 뒤에는 탄탄하고 강력한 분산 시스템을 기반으로 합니다. 이러한 백엔드 시스템이 부실할 경우 서비스나 앱은 그야말로 사상누각입니다. 본 세미나에서는 이러한 시스템들을 만들때 풀어야 할, 가장 기본이 되는 문제와 이슈들 12가지에 도전해봅니다.
This material is made to educate operators, who deal with cassandra in production environment and based on cassandra version 1.1.X
이 자료는 Cassandra를 상용 환경에서 운용하기 위한, 운용자를 위한 교육 자료로 Cassandra 1.1.X를 기준으로 설명한 자료입니다.
빅데이터 개념 부터 시작해서 빅데이터 분석 플랫폼의 출현(hadoop)과 스파크의 등장배경까지 풀어서 작성된 spark 소개 자료 입니다.
스파크는 RDD에 대한 개념과 spark SQL 라이브러리에 대한 자료가 조금 자세히 설명 되어있습니다. (텅스텐엔진, 카탈리스트 옵티마이져에 대한 간략한 설명이 있습니다.)
마지막에는 간단한 설치 및 interactive 분석 실습자료가 포함되어 있습니다.
원본 ppt 를 공개해 두었으니 언제 어디서든 필요에 따라 변형하여 사용하시되 출처만 잘 남겨주시면 감사드리겠습니다.
다른 슬라이드나, 블로그에서 사용된 그림과 참고한 자료들은 작게 출처를 표시해두었는데, 본 ppt의 초기버전을 작성하면서 찾았던 일부 자료들은 출처가 불분명한 상태입니다. 자료 출처를 알려주시면 반영하여 수정해 두도록하겠습니다. (제보 부탁드립니다!)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
빅데이터 개념 부터 시작해서 빅데이터 분석 플랫폼의 출현(hadoop)과 스파크의 등장배경까지 풀어서 작성된 spark 소개 자료 입니다.
스파크는 RDD에 대한 개념과 spark SQL 라이브러리에 대한 자료가 조금 자세히 설명 되어있습니다. (텅스텐엔진, 카탈리스트 옵티마이져에 대한 간략한 설명이 있습니다.)
마지막에는 간단한 설치 및 interactive 분석 실습자료가 포함되어 있습니다.
원본 ppt 를 공개해 두었으니 언제 어디서든 필요에 따라 변형하여 사용하시되 출처만 잘 남겨주시면 감사드리겠습니다.
다른 슬라이드나, 블로그에서 사용된 그림과 참고한 자료들은 작게 출처를 표시해두었는데, 본 ppt의 초기버전을 작성하면서 찾았던 일부 자료들은 출처가 불분명한 상태입니다. 자료 출처를 알려주시면 반영하여 수정해 두도록하겠습니다. (제보 부탁드립니다!)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Yongho Ha
요즘 Hadoop 보다 더 뜨고 있는 Spark.
그 Spark의 핵심을 이해하기 위해서는 핵심 자료구조인 Resilient Distributed Datasets (RDD)를 이해하는 것이 필요합니다.
RDD가 어떻게 동작하는지, 원 논문을 리뷰하며 살펴보도록 합시다.
http://www.cs.berkeley.edu/~matei/papers/2012/sigmod_shark_demo.pdf
AWS EMR을 사용하면서 비용을 최적화하기 위해 필요한 다양한 관점의 방안을 검토하여 정리한 자료.
비용 최적화 대상은 zeppelin/jupyter notebook과 apache spark를 활용하는 서비스를 대상으로 하였으며, 해당 작업이 aws emr에서 어떻게 동작하는지 내부 구조을 파악하여 확인함.
- AWS EMR이란?
- AWS EMR의 과금 방식은?
- 어떻게 비용을 최적화 할 것인가?
- 최적의 EMR 클러스터 구성 방안
- 가성비 높은 Instance 선정 방안
- Apache Spark 성능 개선 방안
가장 중요한 것은 실행할 job의 자원사용량/성능을 모니터링하고, 이에 맞게 자원을 최적화하는 것이 필요함.
[17.01.19] docker introduction (Korean Version)Ildoo Kim
Docker(도커) 소개를 위해 사용했던 자료입니다.
제가 속한 개발팀에서는 도커 컨테이너를 기반으로 개발부터 배포까지 가능한 환경 및 인프라를 구축하여 개발팀에서 대다수의 오퍼레이션까지 관여하면서 Devops 형태로 운영합니다.
Docker(도커)를 처음 사용하거나 개념적으로 익숙하지 않은 초보를 위해 만든 자료입니다.
슬라이드에서 사용된 스크립트/코드는 아래에 있습니다.
https://github.com/ildoonet/docker_introduction
----
김일두, Software Engineer @ Kakao
Github : https://github.com/ildoonet
Linkedin : https://www.linkedin.com/in/ildoo-kim-56962034/
2. 1. 스파크란? 02
〮 오픈소스 클러스터 컴퓨팅 프레임워크
〮 Spark = MR + interactive query + streaming
〮 하둡 API를 사용하는 저장 시스템 지원
- HDFS, S3, Cassandra, Hive, Hbase
〮 In-Memory
3. 2. Spark vs Hadoop 03
1. Disk I/O
- iteration 작업 매 job마다 HDFS 접근
2. Hadoop + RAM
- fault-tolerant X
3. Hadoop + RAM + fault-tolerant(Piccolo)
- replicating : 하는동안 멈춰야 함…
- checkpoint : disk...
-> 그냥 느리다
4. 2. RDD 04
〮 Resilient Distributed Dataset
〮 스토리지 -> RDD, RDD -> RDD
〮 Immutable, Read-Only
- 어떻게 만들어졌는지 알면 다시 만들 수 있다. -> lineage에 기록
〮 DAG(Directed Acyclic Graph)로 표현
6. 4. Narrow and Wide dependencies 06
〮 Narrow Dependencies
- 작업이 한 노드에서(네트워크X)
- 그 노드에서 복원가능
〮 Wide Dependencies
- 노드간 셔플이 필요(네트워크O)
- 부셔지면 복원이 가능하지만 비쌈
7. 5. Lazy-execution and Fault-tolerant 07
〮 Transformation : RDD -> RDD, lineage만 기록
〮 Action : lineage에 쌓인 것들 수행
-> lazy-execution
〮 RDD 망가져도 lineage를 통해 복구 가능
-> fault-tolerant
〮 DAG를 통해 Execution Plan이 만들어진 상태
-> 자원의 상황을 고려해서 최적의 코스로 수행
9. 4. Spark 실행 구조 09
〮 드라이버
1. 사용자 프로그램 -> task
- Main()이 실행되는 프로세스
- SparkContext, RDD 생성
- Transformation, action 수행
- DAG -> 물리적 실행 계획으로 변환
2. Excutor에서의 task 스케줄링
- 항상 excutor들을 살펴보고 각 task를
데이터 위치에 기반해 적절한 위치에
서 실행될 수 있도록 함.
10. 4. Spark 실행 구조 10
〮 익스큐터
- 작업들을 실행하여 결과를 드라이버에 반환
- 각 익스큐터 안에 존재하는 블록매니저를 통해 캐시하는 RDD를 저장
11. 4. Spark 실행 구조 11
1. 사용자가 spark-submit을 통해 application 제출
2. Spark-submi이 드라이버 실행, main() 호출
3. 드라이버 -> 클러스터 매니저, 익스큐터를 위한 리소스 요청
4. 클러스터 매니저가 익스큐터들 실행
5. 드라이버가 실행되고 프로그램 내용에 따라 단위 작업으로 나누어 익
스큐터들에게 보냄.
6. 단위 작업들이 익스큐터에 의해 실행
7. Main()이 끝나거나 sparkcontext.stop() 호출되면 익스큐터들 중지되고
클러스터 매니저에 사용했던 자원 반환.
12. 잠깐 12
〮 수행 중 메모리가 부족한 경우?
LRU정책으로 안쓰는 파티션 없앰
〮 수행 중 Fault가 났을 때 Recovery 비용?
Lineage가 애초에 용량이 작기때문에 부담이 없음
〮 wide dependecy의 경우 Recovery 비용?
재계산 비용이 disk i/o보다 비쌀수 있다.
Checkpoint 이용을 고려하자
-> read-only기 때문에 병렬로 async 돌리면 됨.
16. 7. 스파크 SQL 16
〮 python, java, scala의 DataFrame 다룰 수 있음.
〮 다양한 구조적 포맷의 데이터 읽고 쓰기 가능. (JSON, Hive 테이블, Parquet)
〮 스파크 내부 또는 JDBC를 제공하는 툴을 써서 쿼리 날리기 가능
18. 8. 스파크 MLlib 18
〮 Java, Scala, Python, R 모두 지원
〮 일반적인 MR보다 100배 정도 빠름
〮 Mllib은 python의 scikit-learn에 기반
〮 RDD로 표현된 분산 데이터셋에서 다양한 알고리즘을 가져다 쓸 수 있도록 함
〮 Classification, Regression, Linear methods, Decision trees, Tree Ensembles
20. 9. 스파크 streaming 20
〮 스트림을 쪼개어 RDD처럼 처리
〮 스트림 데이터에 실시간으로 map, reduce, filter, join같은 함수 적용 가능
21. 9. 스파크 streaming 21
Localhost:7777 서버
Lines
DStream
errorLines
DStream
0~1초
데이터
1~2초
데이터
2~3초
데이터
3~4초
데이터
0~1초
데이터
1~2초
데이터
2~3초
데이터
3~4초
데이터
filter