HOT cluster computing framework 인 SPARK에 대한 사용 경험을 바탕으로,
최근 spark summit 2015에 소개된 Netflix 개선 사례 모의 구현을 목표로 지속 갱신할 문서를 만든다.
필자가 참고한 architecture 문서는 다음과 같다.
https://spark-summit.org/2015/events/spark-and-spark-streaming-at-netflix/
빅(BIG)한 message event들이 발생하는 Neflix, LinkIn에서 검증된 메세지 브로커(message broker) Kafka와,
AWS(Amazon Web Service)의 HOT Storage Service S3 그리고 Spark Streaming에 대한 모의 기능 구현을 예상한다.
추가할 내용으로 다음을 주제를 구상 중에 있다.
* Kafka 와 Spark Streaming 의 처리 소개
* AWS의 S3 와 EMR 의 처리 소개
* Netflix 의 모의 구현을 바탕으로 실 데이터 분석 사례
최근 spark summit 2015에 소개된 Netflix 개선 사례 모의 구현을 목표로 지속 갱신할 문서를 만든다.
필자가 참고한 architecture 문서는 다음과 같다.
https://spark-summit.org/2015/events/spark-and-spark-streaming-at-netflix/
빅(BIG)한 message event들이 발생하는 Neflix, LinkIn에서 검증된 메세지 브로커(message broker) Kafka와,
AWS(Amazon Web Service)의 HOT Storage Service S3 그리고 Spark Streaming에 대한 모의 기능 구현을 예상한다.
1. Kafka 의 message event 처리하기.
Producer를 통한 메세지 전송하기
In [1]:
from kafka import SimpleProducer, KafkaClient
# 생산자를 생성한다.
kafka = KafkaClient('cook:9092')
producer = SimpleProducer(kafka)
# 메세지를 바이트 코드로 던진다.
point = producer.send_messages(b'frog', b'fall in well.')
producer.send_messages(b'frog', '우물에 빠지다.'.encode('utf-8'))
Out[1]:
Consumer를 통한 메세지 수신하기
In [2]:
from kafka import KafkaConsumer
# 소비자를 만든다.
consumer = KafkaConsumer('frog',
bootstrap_servers=['cook:9092'],consumer_timeout_ms=10000)
consumer.set_topic_partitions(("frog", 0, point[0].offset))
for i in consumer.fetch_messages():
print(i.value.decode('utf-8'))
2. AWS S3 Bucket 사용하기
boto API를 위한 사전 정보 저장하기
In [3]:
!ls ~/.aws
버킷 만들기
In [4]:
import boto3
client = boto3.client('s3')
# 버켓 생성
client.create_bucket(Bucket='frog1nwell')
Out[4]:
In [5]:
# 버켓 리스트 보기
client.list_buckets()
Out[5]:
오브젝트 추가하기
파일 오브젝트를 버킷으로 업로드 하기.
In [6]:
%%writefile quote_file.txt
You make me to be complete.
당신은 나를 완성시켜요.
In [7]:
with open('quote_file.txt', 'rb') as f:
client.put_object(Bucket='frog1nwell',Key='quote_file.txt',Body=f)
스트링을 ByteIO를 이용해서, 오프젝트처럼 처리 하기
In [8]:
from io import BytesIO
bs = BytesIO('You make me to be complete.\n당신은 나를 완성시켜요.'.encode('utf-8'))
In [9]:
client.put_object(Bucket='frog1nwell',Key='quote_byteIO.txt',Body=bs)
Out[9]:
오프젝트 읽기.
In [10]:
c1 = client.get_object(Bucket='frog1nwell',Key='quote_file.txt')
c2 = client.get_object(Bucket='frog1nwell',Key='quote_byteIO.txt')
In [11]:
print('File:\n',c1['Body'].read().decode('utf-8'))
print('ByteIO:\n',c2['Body'].read().decode('utf-8'))
추가할 내용으로 다음을 주제를 구상 중에 있다.
* Kafka 와 Spark Streaming 의 처리 소개
* AWS의 S3 와 EMR 의 처리 소개
* Netflix 의 모의 구현을 바탕으로 실 데이터 분석 사례
