'하용호' 라고 합니다. kth 클라우드연구소 분산기술랩에서 즐겁게 일하고 있습니다. '프리즘 파일 시스템'이라는 분산파일 시스템, 'iLock'이라 이름 붙 인 분산 동기화 서비스, 그리고 새로운 검색엔진을 만들고 있습니다. 분산처 리, 데이터마이닝을 연구해 왔습니다. 대량의 자료를 다루는 것을 좋아합니 다. Data Scientist를 지향합니다. 파이썬은 쉬운 구조와 빠른 작성 속도를 강점으로 하여 이미 주류언어로 대 중화 되었습니다. 과거에 비교적 간단한 작업에 많이 쓰였던 파이썬을 분산 처리, 병렬처리를 사용하여 큰 문제들을 풀어내는 데 활용하는 방법들을 알 아봅니다. 멀티코어를 이용하고, 수십 대의 컴퓨터로 병렬처리하고, Hadoop과 아마존 클라우드를 사용하여 분산 처리하는 방법들까지 알아봅 니다. 하용호 파이썬으로 클라우드 하고 싶어요. @yonghosee
파이썬으로 멀티코어, 멀티노드, 클라우드를 활용하는 방법에 대해 살펴봅니다. 파이썬으로 어떻게 하면 분산처리 병렬처리를 잘 할 수 있을까요?
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
'하용호' 라고 합니다. kth 클라우드연구소 분산기술랩에서 즐겁게 일하고
있습니다. '프리즘 파일 시스템'이라는 분산파일 시스템, 'iLock'이라 이름 붙
인 분산 동기화 서비스, 그리고 새로운 검색엔진을 만들고 있습니다. 분산처
리, 데이터마이닝을 연구해 왔습니다. 대량의 자료를 다루는 것을 좋아합니
다. Data Scientist를 지향합니다.
파이썬은 쉬운 구조와 빠른 작성 속도를 강점으로 하여 이미 주류언어로 대
중화 되었습니다. 과거에 비교적 간단한 작업에 많이 쓰였던 파이썬을 분산
처리, 병렬처리를 사용하여 큰 문제들을 풀어내는 데 활용하는 방법들을 알
아봅니다. 멀티코어를 이용하고, 수십 대의 컴퓨터로 병렬처리하고,
Hadoop과 아마존 클라우드를 사용하여 분산 처리하는 방법들까지 알아봅
니다.
하용호
파이썬으로 클라우드 하고 싶어요.
@yonghosee
분산기술Lab I 하용호
파이썬으로 클라우드 하고 싶어요!
하
3
용 호 용 호
위치 : 창원시 의창구 용호동
위치 : 강화도 선두리 어시장(우리집 아님)
우리의 주제 파이썬으로 분산처리도 해보고 병렬처리도 해보고 클라우드도 써보자.
응=_=?
2011/11/21/월요일 프로그램 테이블 발표
구석!
구석!
이럴 수가! 우리가 마이너라니!!
하지만 시대는 멀티코어
심지어 휴대폰도 쿼드코어
하지만 시대는 빅데이터
대강 이정도
그렇다!
우리가
쎈타 오브 유니버스
여기쯤
쫄지마세요!
걱정 말아요
우리는 잘될 겁니다. 일확천금을 노리세^^;;
본론을 시작합니다.
& 시대는 다시 강조 빅데이터
분산처리
MULTI CORE
MANY MACHINES
CLOUD
하지만 분산프로그래밍은 어렵습니다.
to LEARN
to WRITE
to RUN Hard
원인은
의외로 반복 사용이 되지 않는다.
작성하는데 굉장히 어렵다.
네트워크나 디스크가 병목점일 때가 많다.
관련되어 많은 라인을 써야 한다.
조금씩 고쳐야 되는 일은 많다.
해답은
해답은 Md5 해쉬값을 구하고 싶어요?
파일을 압축하고 싶어요?
웹페이지를 긁어오고 싶어요?
REST 웹서버를 만들고 싶어요?
hashlib.md5(“python is so powerful").hexdigest() 그건 일도 아니죠. import gzip f = gzip.open('example.txt.gz', 'wb') f.write('Contents of the example go here.\n') f.close() 그건 일도 아니죠.
import urllib2 response = urllib2.urlopen('http://google.com/') data = response.read() print data
그건 일도 아니죠.
from flask import Flask app = Flask(__name__) @app.route("/“, methods=[‘GET’]) def hello(): return "Hello World!" if __name__ == "__main__": app.run()
그건 일도 아니죠.
JAVA
PYTHON
Perl, Ruby
마이너 아님(아마도)
해답은
해답은
의외로 반복 사용이 되지 않는다.
작성하는데 굉장히 어렵다.
네트워크나 디스크가 병목점일 때가 많다.
관련되어 많은 라인을 써야 한다.
조금씩 고쳐야 되는 일은 많다.
작성 완전 쉬워요
쉽게 가져다 쓸 라이브러리가 많아요
계산이 느린 것은 상쇄됩니다.
한번 쓸 코드 짜기 딱 좋죠
인터프리터 좋다는 게 뭔가요^^
to LEARN
to WRITE
to RUN Easy
파이썬으로 하는 분산프로그래밍은 쉽습니다(?)
자 그러면
멀티코어를 써보자!
처음 떠 오르는 것?
쓰레드
쓰레드
프로세스
쓰레드(Thread) !!!
간단한 덧셈 프로그램
from threading import Thread def do_work(start, end, result): sum = 0 for i in range(start, end): sum += i result.append(sum) return if __name__ == "__main__": START, END = 0, 20000000 result = list() th1 = Thread(target=do_work, args=(START, END, result)) th1.start() th1.join() print "Result : ", sum(result)
start부터 end까지 더해요
쓰레드 1개를 써봅시다.
real 0m3.523s
$ time python 1thread.py Result : 199999990000000
쓰레드 1개
2개 쓰면 더 빨라지겠지?
from threading import Thread def do_work(start, end, result): sum = 0 for i in range(start, end): sum += i result.append(sum) return if __name__ == "__main__": START, END = 0, 20000000 result = list() th1 = Thread(target=do_work, args=(START, END/2, result)) th2 = Thread(target=do_work, args=(END/2, END, result)) th1.start() th2.start() th1.join() th2.join() print "Result : ", sum(result)
from mrjob.job import MRJob class MRWordCounter(MRJob): def mapper(self, key, line): for word in line.split(): yield word, 1 def reducer(self, word, occurrences): yield word, sum(occurrences) if __name__ == '__main__': MRWordCounter.run()