아파치 스파크 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
[[파일:아파치 스파크 로고.png|썸네일|200픽셀|'''아파치 스파크'''(Spark)]]
+
'''스파크'''(Spark)는 빅데이터 처리를 위한 [[오픈소스]] [[병렬분산처리]] [[플랫폼]]이다. 정식 이름은 '''아파치 스파크'''(Apache Spark)이다. 영어로 spark는 불꽃이 튀기는 것을 말하는데, 대용량 데이터를 마치 불꽃이 튀기는 것처럼 순식간에 처리한다는 것을 강조하기 위해 붙인 이름이다. 스파크는 [[디스크]]에 저장되어 있는 [[데이터]]를 [[메모리]]로 읽어와서 처리하기 때문에 디스크 기반으로 작동하는 [[하둡]](Hadoop)에 비해 데이터 처리 속도가 최소 10배에서 100배 정도 빠르다. 대용량 데이터를 분산 처리하기 위해 여러 개의 메모리를 묶어서 마치 하나의 메모리인 것처럼 사용할 수 있다. [[머신러닝]]을 위한 빅데이터 처리에 주로 사용된다. [[SK㈜ C&C]]는 한국의 '스파크 사용자 모임'을 후원하고 있다.  
[[파일:아파치 스파크 글자.png|썸네일|300픽셀|'''아파치 스파크'''(Spark)]]
 
 
 
'''아파치 스파크'''<!--아파치스파크-->(Apache Spark)는 [[빅데이터]] 처리를 위한 [[오픈소스]] 병렬분산처리 플랫폼이다. 간략히 '''스파크'''(Spark)라고 한다. 영어로 "spark"는 불꽃이 튀기는 것을 말하는데, 대용량 데이터를 마치 불꽃이 튀기는 것처럼 순식간에 처리한다는 것을 강조하기 위해 붙인 이름이다. 스파크는 [[디스크]]에 저장되어 있는 [[데이터]]를 [[메모리]]로 읽어와서 처리하기 때문에 디스크 기반으로 작동하는 [[하둡]](Hadoop)에 비해 데이터 처리 속도가 최소 10배에서 100배 정도 빠르다. 대용량 데이터를 분산 처리하기 위해 여러 개의 메모리를 묶어서 마치 하나의 메모리인 것처럼 사용할 수 있다. [[머신러닝]]을 위한 빅데이터 처리에 주로 사용된다. [[SK㈜ C&C]]는 한국의 '스파크 사용자 모임'을 후원하고 있다.  
 
 
 
 
==역사==
 
==역사==
 
*2009년 : 미국 [[캘리포니아 대학교 버클리 캠퍼스]](UC Berkey)의 대학원생인 [[마테이 자하리아]](Matei Zaharia)가 개발
 
*2009년 : 미국 [[캘리포니아 대학교 버클리 캠퍼스]](UC Berkey)의 대학원생인 [[마테이 자하리아]](Matei Zaharia)가 개발
11번째 줄: 7번째 줄:
 
*2014년 : 아파치 최상위 프로젝트 선정
 
*2014년 : 아파치 최상위 프로젝트 선정
 
*2016년 : Stable release 2.0.1
 
*2016년 : Stable release 2.0.1
 
 
==구조==
 
==구조==
 
===스파크의 메모리 구조===
 
===스파크의 메모리 구조===
27번째 줄: 22번째 줄:
 
*Storage Memory : Spark Memory X 0.5
 
*Storage Memory : Spark Memory X 0.5
 
#Persistence가 된 RDD를 저장<ref name="스파크"> kimsy1800, 〈https://kimsy1800.blog.me/221408518867〉, 《네이버 블로그》, 2018-11-29 </ref>
 
#Persistence가 된 RDD를 저장<ref name="스파크"> kimsy1800, 〈https://kimsy1800.blog.me/221408518867〉, 《네이버 블로그》, 2018-11-29 </ref>
 
 
==스파크 구조==
 
==스파크 구조==
 
===Spark Core===
 
===Spark Core===
56번째 줄: 50번째 줄:
 
*한개의 노드에서 여러가지 노드까지 효과적으로 성능을 확장
 
*한개의 노드에서 여러가지 노드까지 효과적으로 성능을 확장
 
*이 작업을 수행 하기 위해 스파크에서 지원하는 가벼운 구현의 단독 스케줄러 동작 가능
 
*이 작업을 수행 하기 위해 스파크에서 지원하는 가벼운 구현의 단독 스케줄러 동작 가능
 
 
==특징==
 
==특징==
스파크는 여러가지의 기술과 특징이 있다. 스파크는 데이터를 읽으면서 변형, 합계 등 작업을 여러가지로 할수 있으며 통계모델을 쉽게 학습하고 배포할 수 있다. 그리고 [[유연성]]과 [[맵리듀스]]에 대한 [[확장성]]을 훨씬 빠른 속도로 제공한다. 스파크 [[API]]는 [[자바]], [[스칼라]], [[파이썬]], [[R]], [[SQL]]을 이용해 접근할 수 있다. [[애플리케이션]]을 빌드하는데 쓰일 수 있고, 여러 애플리케이션을 [[라이브러리]]로 묶어서 [[클러스터]]에 배포할 수도 있으며 파이썬 노트북을 통해 대화식으로 빠른 분석을 수행할 수 있다.<ref name="스파크"></ref>
+
스파크는 여러가지의 기술과 특징이 있다. 스파크는 데이터를 읽으면서 변형, 합계 등 작업을 여러가지로 할수 있으며 통계모델을 쉽게 학습하고 배포할 수 있다. 그리고 [[유연성]]과 [[맵리듀스]]에 대한 [[확장성]]을 훨씬 빠른 속도로 제공한다. 스파크 [[API]]는 [[자바]], [[스칼라]], [[파이썬]], [[R]], [[SQL]]을 이용해 접근할 수 있습니다. [[애플리케이션]]을 빌드하는데 쓰일 수 있고, 여러 애플리케이션을 [[라이브러리]]로 묶어서 [[클러스터]]에 배포할 수도 있으며 파이썬 노트북을 통해 대화식으로 빠른 분석을 수행할 수 있습니다.<ref name="스파크"></ref>
 
스파크는 여러 애플리케이션을 쓸 수 있다. 이를 통해 과학자나 연구원들에게 많고 좋은 라이브러리를 제공한다. 스파크에 익숙한 사람들은 좋은 라이브러리를 통해 애플리케이션을 쓸 때  더 좋은 방식으로 접근을 할 수 있다. 스파크는 과학자 연구원뿐만 아니라 일반 사용자들이 어려운 작업을 할 때도 쉬운 방식으로 작업을 원활히 수행이 가능하다. 마지막으로 스파크는 데이터 작업을 할 경우에 다양한 소스를 읽고 쓰기가 가능하다. [[하둡(Hadoop)]]이랑 스파크랑 같이 사용을 할 시에 작업 수행이 더 쉽고 빠르게 할 수 있다.
 
스파크는 여러 애플리케이션을 쓸 수 있다. 이를 통해 과학자나 연구원들에게 많고 좋은 라이브러리를 제공한다. 스파크에 익숙한 사람들은 좋은 라이브러리를 통해 애플리케이션을 쓸 때  더 좋은 방식으로 접근을 할 수 있다. 스파크는 과학자 연구원뿐만 아니라 일반 사용자들이 어려운 작업을 할 때도 쉬운 방식으로 작업을 원활히 수행이 가능하다. 마지막으로 스파크는 데이터 작업을 할 경우에 다양한 소스를 읽고 쓰기가 가능하다. [[하둡(Hadoop)]]이랑 스파크랑 같이 사용을 할 시에 작업 수행이 더 쉽고 빠르게 할 수 있다.
 
===다양한 라이브러리를 제공===
 
===다양한 라이브러리를 제공===
86번째 줄: 79번째 줄:
  
 
==버전==
 
==버전==
스파크의 버전은 다음과 같다.<ref>아파치 스타크 공식홈페이지 뉴스  -http://spark.apache.org/news/ </ref>
 
{{다단4|
 
 
*2012-10-15 : 스파크 버전 0.6.0  
 
*2012-10-15 : 스파크 버전 0.6.0  
 
*2013-02-27 : 스파크 버전 0.7.0
 
*2013-02-27 : 스파크 버전 0.7.0
103번째 줄: 94번째 줄:
 
*2014-11-26 : 스파크 버전 1.1.1
 
*2014-11-26 : 스파크 버전 1.1.1
 
*2014-12-18 : 스파크 버전 1.2.0
 
*2014-12-18 : 스파크 버전 1.2.0
|
 
 
*2015-02-09 : 스파크 버전 1.2.1
 
*2015-02-09 : 스파크 버전 1.2.1
 
*2015-04-17 : 스파크 버전 1.2.2
 
*2015-04-17 : 스파크 버전 1.2.2
117번째 줄: 107번째 줄:
 
*2016-06-15 : 스파크 버전 1.6.2
 
*2016-06-15 : 스파크 버전 1.6.2
 
*2016-11-17 : 스파크 버전 1.6.3
 
*2016-11-17 : 스파크 버전 1.6.3
|
 
 
*2016-07-26 : 스파크 버전 2.0.0
 
*2016-07-26 : 스파크 버전 2.0.0
 
*2016-10-03 : 스파크 버전 2.0.1
 
*2016-10-03 : 스파크 버전 2.0.1
128번째 줄: 117번째 줄:
 
*2017-12-01 : 스파크 버전 2.2.1
 
*2017-12-01 : 스파크 버전 2.2.1
 
*2018-07-02 : 스파크 버전 2.2.2
 
*2018-07-02 : 스파크 버전 2.2.2
|
 
 
*2019-01-11 : 스파크 버전 2.2.3
 
*2019-01-11 : 스파크 버전 2.2.3
 
*2018-02-28 : 스파크 버전 2.3.0
 
*2018-02-28 : 스파크 버전 2.3.0
137번째 줄: 125번째 줄:
 
*2019-03-31 : 스파크 버전 2.4.1
 
*2019-03-31 : 스파크 버전 2.4.1
 
*2019-04-23 : 스파크 버전 2.4.2
 
*2019-04-23 : 스파크 버전 2.4.2
*2019-05-08 : 스파크 버전 2.4.3
+
*2019-05-08 : 스파크 버전 2.4.3 <ref> 아파치 스타크 공식홈페이지 뉴스  -http://spark.apache.org/news/ </ref>
}}
 
 
 
 
==장점==
 
==장점==
 
===메모리 기반 → 속도===
 
===메모리 기반 → 속도===
*특히 Spark 은 메모리 하둡 이라고도 불리는데, 기존의 하둡이 MapReduce 작업을 디스크 기반으로 수행하기 때문에 느려지는 성능을 메모리 기반으로 옮겨서 고속화 하고자 하는데서 출발했다.
+
*특히 Spark 은 메모리 하둡 이라고도 불리는데, 기존의 하둡이 MapReduce 작업을 디스크 기반으로 수행하기 때문에 느려지는 성능을 메모리 기반으로 옮겨서 고속화 하고자 하는데서 출발했습니다.
 
===속도 비교===
 
===속도 비교===
*스파크의 메모리 내 데이터 엔진은 다중 스테이지 작업(스테이지 간에 다시 디스크에 상태를 써야하는)과 비교할 때 맵리듀스에 비해 최대 100배 더 빠르다.
+
*스파크의 메모리 내 데이터 엔진은 다중 스테이지 작업(스테이지 간에 다시 디스크에 상태를 써야하는)과 비교할 때 맵리듀스에 비해 최대 100배 더 빠릅니다.
*데이터가 메모리 내에 완전히 들어갈 수 없는 아파치 스파크 작업도 맵리듀스에 비해 약 10배 더 빠르다.
+
*데이터가 메모리 내에 완전히 들어갈 수 없는 아파치 스파크 작업도 맵리듀스에 비해 약 10배 더 빠릅니다.
*서버에 메모리를 다는 경우가 많아지면서, 굳이 디스크를 사용하지 않고 인메모리 상에서 스트림처리, 병렬처리를 쉽게 하는 Spark가 인기를 얻게 되었다.
+
*서버에 메모리를 다는 경우가 많아지면서, 굳이 디스크를 사용하지 않고 인메모리 상에서 스트림처리, 병렬처리를 쉽게 하는 Spark가 인기를 얻게 되었습니다.
 
===개발자 친화적인 Spark API===
 
===개발자 친화적인 Spark API===
 
*아파치 스파크는 파이썬, R과 같은 데이터 분석용으로 인기 있는 언어와 기업 친화적인 자바, 스칼라에 대한 바인딩을 제공함으로써
 
*아파치 스파크는 파이썬, R과 같은 데이터 분석용으로 인기 있는 언어와 기업 친화적인 자바, 스칼라에 대한 바인딩을 제공함으로써
애플리케이션 개발자부터 데이터 사이언티스트까지 그 확장성과 속도를 편리하게 이용할 수 있다.
+
애플리케이션 개발자부터 데이터 사이언티스트까지 그 확장성과 속도를 편리하게 이용할 수 있습니다.
*분산 처리 엔진의 복잡성 대부분을 간단한 메소드 호출 뒤로 숨긴다. → 간단해지는 코드
+
*분산 처리 엔진의 복잡성 대부분을 간단한 메서드 호출 뒤로 숨깁니다. → 간단해지는 코드
*예시 : 고전적인 예는 문서의 단어 수를 세는 50줄에 가까운 맵리듀스 코드를 겨우 몇 줄의 아파치 스파크로 줄이는 코드이다.
+
*예시 : 고전적인 예는 문서의 단어 수를 세는 50줄에 가까운 맵리듀스 코드를 겨우 몇 줄의 아파치 스파크로 줄이는 코드입니다.
 
===DB 호환===
 
===DB 호환===
*Spark는 하둡의 HDFS뿐 아니라 많은 DB와 호환이 된다.
+
*Spark는 하둡의 HDFS뿐 아니라 많은 DB와 호환이 됩니다.
*Hive, HBase, PostgreSQL, MySQL, MariaDB, CSV 등의 DB 및 파일을 읽을 수 있다.<ref> 왈왈이, 〈https://real-programmer.tistory.com/10〉, 《티스토리》, 2019-01-07 </ref>
+
*Hive, HBase, PostgreSQL, MySQL, MariaDB, CSV 등의 DB 및 파일을 읽을 수 있습니다.
 +
===오픈소스===   
 +
<ref> 왈왈이, 〈https://real-programmer.tistory.com/10〉, 《티스토리》, 2019-01-07 </ref>
  
 
==단점==
 
==단점==
데이터 셋이 적어서 단일 노드로 충분한 애플리케이션에서 스파크는 분산 아키텍처로 인해 오히려 성능이 떨어집니다. 또한 대량의 트랜잭션을 빠르게 처리해야 하는 애플리케이션은 스파크가 온라인 트랜잭션 처리를 염두에 두고 설계되지 않았기 때문에 유용하지 않다. <ref name="크크"></ref>
+
데이터 셋이 적어서 단일 노드로 충분한 애플리케이션에서 스파크는 분산 아키텍처로 인해 오히려 성능이 떨어집니다. 또한 대량의 트랜잭션을 빠르게 처리해야 하는 애플리케이션은 스파크가 온라인 트랜잭션 처리를 염두에 두고 설계되지 않았기 때문에 유용하지 않습니다. <ref name="크크"></ref>
  
 
{{각주}}
 
{{각주}}
 
+
==참고 자료==
==참고자료==
+
*아파치 스파크 공식홈페이지 - https://spark.apache.org/
* 아파치 스파크 공식홈페이지 - https://spark.apache.org/
+
*Jacob, 〈https://blog.naver.com/topchae91/221574921909〉, 《네이버 블로그》, 2018-07-01
* Jacob, 〈https://blog.naver.com/topchae91/221574921909〉, 《네이버 블로그》, 2018-07-01
+
*kimsy1800, 〈https://kimsy1800.blog.me/221408518867〉, 《네이버 블로그》, 2018-11-29
* kimsy1800, 〈https://kimsy1800.blog.me/221408518867〉, 《네이버 블로그》, 2018-11-29
+
*꽃경남, 〈https://kkn1220.tistory.com/124〉, 《티스토리》, 2017-04-07
* 꽃경남, 〈https://kkn1220.tistory.com/124〉, 《티스토리》, 2017-04-07
+
*Eric Han's IT Blog Powered by Hexo, 〈[https://futurecreator.github.io/2018/08/14/apache-spark-basic/〉, 《IT BLOG》, 2018-08-14
* Eric Han's IT Blog Powered by Hexo, 〈[https://futurecreator.github.io/2018/08/14/apache-spark-basic/〉, 《IT BLOG》, 2018-08-14
+
*데프홍,〈https://deafjwhong.tistory.com/84〉, 《티스토리》, 2019-03-18
* 데프홍,〈https://deafjwhong.tistory.com/84〉, 《티스토리》, 2019-03-18
+
*왈왈이, 〈https://real-programmer.tistory.com/10〉, 《티스토리》, 2019-01-07
* 왈왈이, 〈https://real-programmer.tistory.com/10〉, 《티스토리》, 2019-01-07
 
  
 
== 같이 보기 ==
 
== 같이 보기 ==
176번째 줄: 163번째 줄:
 
* [[빅데이터]]
 
* [[빅데이터]]
  
{{솔루션|검토 필요}}
+
{{프로그래밍|토막글}}

위키원에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 위키원:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)