초보자를 위한 Apache Spark 자습서: 예제를 통해 Apache Spark 배우기
게시 됨: 2020-03-26목차
소개
데이터는 소규모 신생 기업의 고객 로그에서 거대한 다국적 기업의 재무 시트에 이르기까지 어디에나 있습니다. 회사는 이 생성된 데이터를 사용하여 비즈니스가 어떻게 수행되고 있으며 개선할 수 있는 부분을 이해합니다. Gartner Research의 수석 부사장 Peter Sondergaard 는 정보는 21세기의 기름 이며 분석은 연소 엔진으로 간주될 수 있다고 말했습니다.
그러나 회사가 성장함에 따라 고객, 이해 관계자, 비즈니스 파트너 및 제품도 성장합니다. 따라서 처리해야 하는 데이터의 양이 방대해집니다.
이 모든 데이터는 고객을 위한 더 나은 제품을 만들기 위해 분석되어야 합니다. 그러나 초당 생성되는 테라바이트의 데이터는 엑셀 시트와 로그북으로는 처리할 수 없습니다. 거대한 데이터 세트는 Apache Spark와 같은 도구로 처리할 수 있습니다.
Apache Spark 소개를 통해 소프트웨어에 대해 자세히 알아보겠습니다 .
아파치 스파크란?
Apache Spark는 오픈 소스 클러스터 컴퓨팅 프레임워크 입니다. 기본적으로 방대한 데이터 워크로드 및 데이터 세트를 처리하는 데 사용되는 데이터 처리 시스템 입니다. 대용량 데이터 세트를 빠르게 처리하고 이러한 작업을 여러 시스템에 분산하여 워크로드를 완화할 수도 있습니다. 빅데이터 처리와 분산 컴퓨팅이라는 두 가지 용어에 압도당했을 때 개발자의 부담을 덜어주는 간단한 API가 있습니다!
Apache Spark의 개발은 Spark 의 창시자 로 여겨지는 Matei Zaharia 가 UC Berkeley의 AMPLab에서 오픈 소스 연구 프로젝트로 시작했습니다 . 2010년에 BSD 라이선스에 따라 프로젝트가 오픈 소스되었습니다. 이후 2013년 아파치 소프트웨어 재단(Apache Software Foundation) 산하 인큐베이팅 프로젝트가 됐다. 2014년 회사 최고 프로젝트 중 하나가 됐다.

2015년에 Spark는 프로젝트에 1000명 이상의 기여자가 있었습니다. 이로 인해 Apache Software Foundation 과 빅 데이터 세계에서 가장 활발한 프로젝트 중 하나가 되었습니다. 2009년부터 200개 이상의 회사가 이 프로젝트를 지원하고 있습니다.
그러나 왜 Spark에 대한 이 모든 열광적입니까?
Spark는 한 번에 수많은 데이터를 처리하고 처리할 수 있기 때문입니다. 이 데이터는 연결된 수천 대의 가상 또는 물리적 서버에 분산될 수 있습니다. Python, R, Scala 및 Java와 같은 여러 프로그래밍 언어와 함께 작동하는 방대한 API 및 라이브러리 세트가 있습니다. 데이터 스트리밍, 그래프 처리 및 기계 학습과 같은 복잡한 작업을 지원합니다. 또한 apache spark의 판도를 바꾸는 기능으로 인해 수요가 급증합니다.
Hadoop의 HDFS, Amazon S3와 같은 광범위한 데이터베이스와 MongoDB, Apache HBase, MapR 데이터베이스 및 Apache Cassandra와 같은 NoSQL 데이터베이스를 지원합니다. 또한 Apache Kafka 및 MapR 이벤트 저장소를 지원합니다.
아파치 스파크 아키텍처
Apache Spark의 도입을 살펴본 후 이제 구조에 대해 알아보겠습니다. Apache 아키텍처에 대해 자세히 알아보세요.
아키텍처는 잘 정의되어 있으며 두 가지 기본 구성 요소가 있습니다.
탄력적인 분산 데이터 세트(RDD)
Spark 클러스터의 작업자 노드에 저장되는 데이터 항목의 모음입니다. 클러스터는 Spark를 설치할 수 있는 분산된 머신 모음입니다. RDD는 장애가 발생할 경우 데이터를 수정할 수 있으므로 탄력적이라고 합니다. 클러스터의 여러 노드에 분산되어 있으므로 분산이라고 합니다.
Spark는 두 가지 유형의 RDD를 지원합니다.
- HDFS(Hadoop Distributed File System) 의 파일에서 생성된 Hadoop 데이터 세트
- Scala 컬렉션을 기반으로 하는 병렬화된 컬렉션
RDD는 다음과 같은 두 가지 유형의 작업에 사용할 수 있습니다.
- 변환 – 이러한 작업은 RDD를 생성하는 데 사용됩니다.
- 작업 – 이는 Spark에 일부 계산을 수행하고 결과를 드라이버에 반환하도록 지시하는 데 사용됩니다. 다음 섹션에서 드라이버에 대해 자세히 알아볼 것입니다.
DAG(방향성 비순환 그래프)
이것은 데이터에 대한 일련의 작업으로 간주될 수 있습니다. 정점과 모서리의 조합입니다. 각 정점은 RDD를 나타내고 각 모서리는 해당 RDD에서 수행해야 하는 계산을 나타냅니다. 이것은 RDD에 적용된 모든 연산을 포함하는 그래프입니다.
이것은 하나의 노드가 다른 노드에 연결되어 있는 방향 그래프입니다. 그래프 안에 루프나 사이클이 없기 때문에 그래프는 순환적입니다. 변형이 수행되면 원래 위치로 돌아갈 수 없습니다. Apache Spark의 변환은 데이터 파티션 상태를 A에서 B로 변환하는 작업입니다.
그렇다면 이 아키텍처는 어떻게 작동합니까? 우리에게 보여줘.
Apache Spark 아키텍처에는 두 개의 기본 데몬과 클러스터 관리자가 있습니다. 이들은 마스터 및 작업자 데몬 입니다. 데몬은 백그라운드 프로세스로 실행되는 프로그램입니다. Spark의 클러스터는 많은 슬레이브를 가질 수 있지만 단일 마스터 데몬을 가질 수 있습니다.
마스터 노드 내부에는 Spark 애플리케이션을 실행하는 드라이버 프로그램이 있습니다. 코드를 실행하는 데 사용할 수 있는 대화형 셸은 드라이브 프로그램 역할을 합니다. 드라이버 프로그램 내에서 Spark Context가 생성됩니다. 이 컨텍스트와 드라이버 프로그램은 클러스터 관리자의 도움으로 작업을 실행합니다.
그런 다음 작업은 많은 작업으로 분할된 후 작업자 노드에 배포됩니다. 작업은 작업자 노드 에 의해 RDD에서 실행 됩니다 . 결과는 Spark Context 에 다시 제공됩니다 . 작업자 수를 늘리면 작업을 여러 파티션으로 나누고 여러 시스템에서 병렬로 실행할 수 있습니다. 이렇게 하면 작업 부하가 줄어들고 작업 완료 시간이 향상됩니다.

Apache Spark: 이점
다음은 Apache Spark 사용의 장점입니다 .
속도
작업을 실행하는 동안 데이터는 먼저 RDD에 저장됩니다. 따라서 이 데이터는 메모리에 저장되므로 빠르게 액세스할 수 있고 작업이 더 빠르게 실행됩니다. 메모리 내 캐싱과 함께 Spark는 쿼리 실행을 최적화했습니다. 이를 통해 분석 쿼리를 더 빠르게 실행할 수 있습니다. 매우 높은 데이터 처리 속도를 얻을 수 있습니다. 대규모 데이터를 처리할 때 Hadoop보다 100배 더 빠를 수 있습니다.
여러 워크로드 처리
Apache Spark는 한 번에 여러 워크로드를 처리할 수 있습니다. 여기에는 대화형 쿼리, 그래프 처리, 기계 학습 및 실시간 분석이 포함될 수 있습니다. Spark 애플리케이션은 많은 워크로드를 쉽게 통합할 수 있습니다.
사용의 용이성
Apache Spark에는 대규모 데이터 세트를 처리하기 위한 사용하기 쉬운 API가 있습니다. 여기에는 병렬 애플리케이션을 구축하는 데 사용할 수 있는 100개 이상의 연산자가 포함됩니다. 이러한 연산자는 데이터를 변환할 수 있으며 반구조화된 데이터는 데이터 프레임 API를 사용하여 조작할 수 있습니다.
언어 지원
Spark는 Java, Python, Scala 및 R과 같은 여러 프로그래밍 언어를 지원하므로 개발자가 가장 좋아하는 도구입니다. 이를 통해 응용 프로그램 개발을 위한 여러 옵션을 사용할 수 있습니다. API는 또한 필요한 코드의 양을 줄이는 데 도움이 되는 고급 연산자 뒤에 복잡한 분산 처리 기술을 숨기는 데 도움이 되므로 매우 개발자 친화적입니다.
능률
Lazy 평가는 Spark에서 수행됩니다. 이것은 RDDS를 통해 이루어진 모든 변환이 본질적으로 게으른 것임을 의미합니다. 따라서 이러한 변환의 결과가 바로 생성되지 않고 기존 RDD에서 새 RDD가 생성됩니다. 사용자는 Apache 프로그램을 여러 개의 작은 작업으로 구성하여 프로그램의 관리성을 높일 수 있습니다.
게으른 평가는 시스템의 속도와 효율성을 높입니다.
커뮤니티 지원
가장 큰 오픈 소스 빅 데이터 프로젝트 중 하나이기 때문에 다른 회사의 200명 이상의 개발자가 작업하고 있습니다. 2009년에 커뮤니티가 시작되었으며 그 이후로 계속 성장해 왔습니다. 따라서 기술적인 오류가 발생하면 개발자가 게시한 온라인 솔루션을 찾을 수 있습니다.
Spark 프로젝트를 지원할 준비가 된 많은 프리랜서 또는 정규직 개발자를 찾을 수도 있습니다.
실시간 스트리밍
Spark는 실시간 데이터 스트리밍 으로 유명 합니다 . 이는 핵심 Spark API의 확장인 Spark Streaming을 통해 가능합니다. 이를 통해 데이터 과학자는 Amazon Kinesis 및 Kafka 와 같은 다양한 소스의 실시간 데이터를 처리할 수 있습니다 . 그런 다음 처리된 데이터를 데이터베이스, 파일 시스템 및 대시보드로 전송할 수 있습니다.
이 프로세스는 Spark Streaming 이 데이터 오류를 빠르게 복구할 수 있다는 점에서 효율적입니다. 더 나은 로드 밸런싱을 수행하고 리소스를 효율적으로 사용합니다.
아파치 스파크의 애플리케이션
Apache Spark 및 그 이점을 소개 한 후 다양한 애플리케이션에 대해 자세히 알아보겠습니다.
머신 러닝
데이터를 인메모리에 저장하고 쿼리를 반복적으로 실행하는 Apache Spark의 기능은 ML 알고리즘 교육에 좋은 옵션이 됩니다. 유사한 쿼리를 반복적으로 실행하면 최상의 솔루션을 결정하는 데 필요한 시간이 줄어들기 때문입니다.
Spark의 기계 학습 라이브러리(MLlib) 는 예측 분석, 분류, 감정 분석, 클러스터링 및 차원 축소와 같은 고급 분석 작업을 수행할 수 있습니다.
데이터 통합
조직 내의 여러 시스템에서 생성된 데이터가 항상 깨끗하고 조직적인 것은 아닙니다. Spark는 이 데이터에 대해 ETL 작업을 수행하는 데 매우 효율적인 도구입니다. 즉, 다양한 소스에서 데이터를 가져와 정리 및 구성하는 작업을 실행, 추출, 변환 및 로드합니다. 그런 다음 이 데이터는 분석을 위해 다른 시스템에 로드됩니다.
대화형 분석
이것은 사용자가 라이브 데이터에 대한 데이터 분석을 수행할 수 있는 프로세스입니다. Spark 의 구조적 스트리밍 기능을 사용하여 사용자는 라이브 데이터에 대해 대화형 쿼리를 실행할 수 있습니다. 웹 분석을 향상시킬 라이브 웹 세션에서 대화형 쿼리를 실행할 수도 있습니다. 머신 러닝 알고리즘은 이러한 라이브 데이터 스트림에도 적용될 수 있습니다.
포그 컴퓨팅
IoT(사물 인터넷)는 센서가 있는 다양한 장치에서 발생하는 많은 데이터를 처리한다는 것을 알고 있습니다. 이것은 상호 연결된 장치와 사용자의 네트워크를 만듭니다. 그러나 IoT 네트워크가 확장되기 시작하면서 분산 병렬 처리 시스템이 필요합니다.

따라서 데이터 처리 및 분산 스토리지는 Spark와 함께 Fog Computing을 통해 수행됩니다 . 이를 위해 Spark는 Spark Streaming, GraphX 및 MLlib와 같은 강력한 구성 요소를 제공합니다. Apache Spark의 응용 프로그램에 대해 자세히 알아보십시오.
결론
우리는 Apache Spark가 빠르고 효과적이며 기능이 풍부하다는 것을 배웠습니다. 이것이 Huawei, Baidu, IBM, JP Morgan Chase, Lockheed Martin 및 Microsoft와 같은 회사가 비즈니스를 가속화하기 위해 이를 사용하는 이유입니다. 이제 소매, 비즈니스, 금융 서비스, 의료 관리 및 제조와 같은 다양한 분야에서 유명합니다.
세상이 점점 더 데이터에 의존하게 됨에 따라 Apache Spark는 앞으로도 계속해서 데이터 처리를 위한 중요한 도구가 될 것입니다.
빅 데이터에 대해 더 알고 싶다면 PG 디플로마 빅 데이터 소프트웨어 개발 전문화 프로그램을 확인하세요. 이 프로그램은 실무 전문가를 위해 설계되었으며 7개 이상의 사례 연구 및 프로젝트를 제공하고 14개 프로그래밍 언어 및 도구, 실용적인 실습을 다룹니다. 워크샵, 400시간 이상의 엄격한 학습 및 최고의 기업과의 취업 지원.
세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.