16. 아쉬움1
Spark Job 간의 데이터 공유에서 생기는
병목
1. Spark Job1에서 처리를 해
서 어떤 결과를 만들어냄
(근데 이걸 공유하고 싶어
함)
2. 그래서 어딘가로 보냄
3. 어딘가에 있는 걸 Spark
Job2에서 읽음
Job1
Result
Job2
Result
Result
18. 아쉬움 해결1
메모리 속도로 데이터를 공유
1. spark Job 1번에 빠른 속도
로 분석해냄
2. 그리고 열라 빠른 Infinispan
에 내림
3. Infinispane에 있는 걸 Spark
Job 2번에 열라빨리 읽어서
분석을 시작함
Job1
Result
Job2
Result
Result
25. (infinispan.org)
언제 사용하는 거야?
● 캐쉬가 필요할 때
● 고성능의 NoSQL 데이터 저장소가 필요할 때
● 클러스터링 잘되고 고 가용성의 데이터 그리드가 필요할 때
http://infinispan.org/about/
26. Infinispan
● Disk보다는 빠른 속도를 원할 때
● Realtime 처리와 같이 빠른 처리 속도가 필요할 때
● 반복해서 사용하는 데이터를 공유해서 사용하고 싶을 때
● Object를 저장하고 싶을 때
● Primitive Type을 저장하고 싶을 때
● Spark RDD 저장하거나 빼내고 싶을 때
단, key-value로 저장할 수 있는 것들을 ...
27. Architecture
라이브러디 모드
- 그냥 Jar 파일 하나 포함시켜서 쉽게
사용하면 된다.
- 그냥 Map인데
더 많이 들어오면 옛날 넘들 지워지고
시간지나면 알아서 지워주고
동시에 두개가 같이 들어가는 것도 해
결해 주고
- Guava Cache 쓰는 곳에 이 친구 쓰
면 된다.
http://aosabook.org/en/posa/infinispan.html
28. Architecture
Infinispan as a remote data grid
- Infinispan instance 개별 실행해서
클러스터를 구성한다.
- 다양한 프로토콜 연결 가능
- Hot Rod, Memcached, REST
- Infinispan 노드는 독립적인 JVM
http://aosabook.org/en/posa/infinispan.html
33. 힘들었기 때문에 궁서체임다
이제 부터는 삽질을 시작합니다.
cluster, docker, network ….
이런 거 필요 없다
그냥 돌아가기면 해도 기쁘다
34. Spark 설치 (맥북에서)
다운로드
wget http://mirror.apache-kr.org/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.4.tgz
압축풀기
tar zxvf spark-1.5.2-bin-hadoop2.4.tgz
실행
./sbin/start-master.sh
./sbin/start-slave.sh spark://localhost:7077
확인
http://localhost:8080/
독립해서돌려보기
$SPARK_HOME/bin/spark-submit --class "패키지 포함 클래스명" --master spark://localhost:7077 jar_파일_경로
$SPARK_HOME/bin/spark-submit --class "com.ungi.spark.SimpleApp" --master spark://localhost:7077 /Users/Runner/projects/spark-programming-sample/target/spark-programming-1.0-SNAPSHOT.jar
힘들었기 때문에 궁서체임다
35. Infinispan 설치 (맥북에서)
다운로드
wget http://downloads.jboss.org/infinispan/8.1.0.Final/infinispan-server-8.1.0.Final-bin.zip
압축풀기
tar zxvf infinispan-server-8.1.0.Final-bin.zip
실행
./bin/domain.sh -b 192.168.215.239
>> 본인 PC 아이피 넣음
확인
http://localhost:9990/
관리자등록
./bin/add-user.sh
a > id > password > 한번더 password > yes > yes
힘들었기 때문에 궁서체임다
38. 이렇게 설정은 끝 이제 개발만 하면 끝(그냥 간단한 데모)
1. https://github.com/bldecide/spark_infinispan_demo
a. SimplePutGet
i. Infinispan 에 넣었다 뺐다
b. SimpleSparkJob
i. Infinispan에 데이터 넣고, RDD로 뽑아서 spark로 합구하기(reduce)
c. CreateRDD
i. Infinispan에 데이터 있는거 RDD로 뽑아서
d. WordCount
i. spark로 단어 세고 파일로 떨구기
e. WordCountInfinispan
i. spark로 단어 세고 Infinispan에 떨구기
f. WriteKeyValueRDDInfinispan
i. Key-Value RDD 만들고 Infinispan에 떨구기
g. RandomPut
i. Infinspan에 1초마다 랜덤하게넣기
h. CreatingDStream
i. Infinispan에 들어오는걸SparkStream 으로 받아보기
힘들었기 때문에 궁서체임다