빅데이터: 13개의 글
Interactive Analysis with the Spark Shell API를 쉽게 습득하기 위해서는 spark's shell만큼 좋은게 없습니다. python과 scala를 통해서 할 수 있습니다. 이번에는 RDD를 생성하는 방법, MapReduce를 Spark에서 구현하는 방법과, caching하는 방법에 대해서 설명하려고 합니다. 마지막에는 내가 구현한 앱을 사용자들에게 배포하기 위해 sbt build tool을 이용해 배포하는 방법에 대해서 설명합니다. Resilient Distributed Dataset(RDD) 생성하기 위해서는 hadoop hdfs file을 읽거나, 기존에 있는 rdds를 transforming을 통해서 변환이 가능합니다. RDD에서 제공하는 method는 action..
RDD란? 분산되어 존재하는 데이터 요소들의 모임이라고 생각하시면 됩니다. RDD는 java의 String처럼 변경이 불가능한 객체(immutable)의 집합으로 각각의 RDD는 여러개의 파티션으로 분리가 됩니다. 변경을 하기 위해서는 새로운 RDD를 만들거나, 존재하는 RDD를 변형, 결과 계산을 위해 RDD에서 연산을 호출하여 생성을 해야 합니다. Spark는 자동으로 RDD에 있는 데이터들을 클러스터에 분배, 수행하는 연산들을 병렬화 합니다. Spark는 RDD를 lazy evaluation으로 액션을 사용하는 시점에서 처리하기 때문에, 구현할때는 transformation과 action의 operation을 확실히 이해하고 있어야 결과를 받아보는데 효율적으로 구현이 가능합니다. 예를 들어 한 라인..
들어가며 Spark를 튜닝하기 위해서는 클러스터의 구조가 어떻게 구성이 되어 있는지, 프로그램은 어떤 순서로 실행이 되는지에 대한 지식은 보유를 하고 계셔야 시스템을 설정 및 튜닝이 가능합니다. 예를 들어 설정하는 옵션에서 executor-memory의 값을 설정해야 하는데, executor가 어떤 역할을 하는지 모른다면... 아니되오 . Spark의 components를 Driver Program, SparkContext, Cluster Manager, Worker Node, Executor, Task, Cache가 있고, 각각의 역할과 어떻게 동작하는지에 대해서 알아보겠습니다. Components Driver Program main()함수를 갖고 있는 프로세스를 말합니다. 우리가 spark-submi..
Spark란? Apache Spark는 빠르고 general-purpose cluster computing system입니다. 다시 말해서 기존에는 batch processing을 하기 위해서 MapReduce를 사용하고, sql을 사용하기 위해서는 hive를 사용하는 등 다양한 플랫폼을 도입해야 했었습니다. 하지만 이제는 Spark 하나의 시스템만을 설치해도 batch, streaming, graph processing, sql 등의 처리가 가능합니다. 또한 Spark는 Java, Scala, Python, 그리고 R언어의 API를 제공하기 때문에 쉽게(?) 구현을 할 수 있습니다. 아래의 high-level tools를 제공함으로써, 위에서 언급한 범용적인 플랫폼이라고 말할 수 있습니다. High-L..
Hadoop Cluster? 노드(node)는 하나의 컴퓨터를 말합니다. 이처럼 30~40개의 노드가 모여 하나의 rack을 구성합니다. rack은 물리적으로 같은 network의 switch에 모두 연결이 되어 있습니다. 그렇기 때문에 두 노드의 badnwidth는 다른 rack에 있는 노드보다 크게 됩니다. 즉, 데이터의 이동을 할 수 있는 폭이 크기 때문에 데이터의 속도가 빠른것을 알 수 있습니다. rack이 모여서 하나의 Hadoop Cluster를 구축하게 됩니다. 이처럼 network의 다른 switch에 연결되어 있는 rack으로 인해 어떤 성능 저하가 나타는지 추후에 알아보도록 하겠습니다. Hadoop의 주요한 컴포넌트는 HDFS와 MapReduce가 있습니다. HDFS(Hadoop Dis..
검색이란 무엇인가? "책이나 컴퓨터에서 목적에 따라 필요한 자료를 찾아내는 일"검색 시스템 이란 무엇인가? "전자화된 문서로부터 사용자가 원하는 정보"를 찾는 작업을 수행하는 시스템 집합 백그라운드 작업 (수집 / 정제 / 색인): 문서가 새로 생성되고 바뀌므로, 주기적으로 계속 반복해서 일어난다. 리얼타임 작업 (서빙): 사용자가 일회성으로 검색 요청을 보냈을때 응답을 준다. 1) 수집 (전자화된 문서를 모으는 시스템) - 검색할 문서를 수집 - 다양한 문서양식 이해, 문서/사이트 품질 판단 - 수집 시스템 2) 정제 (문서를 검색에 알맞게 가공하는 시스템) - 문서에서 검색에 유효한 부분을 추출하고 가공 - 대규모 데이터 처리, 시스템 가용성 - 저장소 + 정제 플랫폼 + 문서 관리 3) 색인 (가공..
개발자로써 빅데이터를 다뤄볼 수 있는 영역은 빅데이터 엔지니어링 분야입니다. 대용량 데이터 수집이나 분석을 돕기위한 기술을 제공하는 가장 대표적인 영역이 ELK 스택으로 알고 있습니다. 개념은 익히 들어 알고 있지만 이 내용을 실제로 다뤄본적은 없는데요. IT 인터넷 강의 사이트 "인프런"에서 ELK 스택 관련 강좌를 무료로 제공하고 있습니다. 개발에 욕심있는 개발자라면 관심을 가질만한 기술 스택입니다. 강좌명은 "ELK 스택(ElasticSearch, Logstash, Kibana)으로 데이터"이며,총 19개 강의로 1시간 19분으로 구성되어 있습니다. 섹션1. 데이터과학 소개 및 환경 구축01 데이터 과학 소개 - 02:00 수강완료02 우분투에 엘라스틱서치 설치하기 - 03:00 수강완료 섹션2. ..
맵리듀스는 여러 노드에 태스크를 분배하는 방법으로 각 노드 프로세스 데이터는 가능한 경우, 해당 노드에 저장됩니다. 맵리듀스 태스크는 맵(Map)과 리듀스(Reduce) 총 두단계로 구성됩니다. 간단한 예를 들면 fork-join의 개념을 들 수 있습니다. 큰 작업에 대해 fork로 분할하고 또다시 fork로 분할합니다. 작은 작업을 다시 join하게 됩니다. 하둡에서는 큰 데이터가 들어왔을 때 64MB단위 블럭으로 분할합니다. 각각 블럭에 대한 연산을 합니다. 구글에는 많은 텍스트 파일이 존재합니다. Word1, Word2, Word3... 텍스트 안에 단어가 몇 번 나왔는가하는 것을 계산하는 작업을 수행하게 됩니다. 즉, 텍스트파일을 64MB 단위로 잘라내어 각 블럭에 대해서 특정 단어가 몇번 출현했..
HDFS 기본 컨셉HDFS는 Java로 작성된 Google의 GFS 기반의 파일 시스템입니다. 기존의 파일 시스템(ext3, ext4 or xfs)의 상위에서 동작하게 됩니다. HDFS의 file 저장 방식1) File은 block 단위로 분할됩니다. (각 block은 기본적으로 64MB 또는 128MB 크기) - 만약 데이터가 180M라면 (64+64+64 총 3개의 블럭에 나눠 들어가게 됨)2) 데이터가 로드 될 때 여러 machine에 분산되어 저장됩니다. - 같은 file의 다른 block들은 서로 다른 machine에 저장됨 - 이를 통해 효율적인 MapReduce 처리가 가능3) Block들은 여러 machine에 복제되어 Data node에 저장됩니다. - 기본 replication은 3개 ..
하둡 HDFS 기본 사용법시스템과의 상호작용은 hadoop 이라는 명령어를 통해서 합니다. 만약 터미널을 열고, 인자 없이 명령어를 실행하면 도움말이 나옵니다. 이와 같이 실행하기 위해서, 아래 명령어를 실행합니다. $hadoop hadoop 명령어는 여러개의 서브 시스템으로 세분화 되어있습니다. 예를 들어, HDFS의 파일을 처리하기 위한 서브 시스템과 MapReduce Processing Job을 관리하고 실행하기 위한 서브 시스템이 있습니다. Step 1. Exploring HDFS하둡 프로그램에서 HDFS와 관련된 서브 시스템은 FsShell 이라고 합니다. 이 서브 시스템은 hadoop fs 명령어로 실행할 수 있습니다. 1. 데스크탑의 Terminal 아이콘을 더블클릭하여 Terminal을 실..