Pig 개념 맵과 리듀스를 사용하지 않고 데이터를 처리하지 않아도 됨. 맵리듀스는 프로그래밍하는데 시간이 많이 걸림 간단한 스크립트 언어를 통해 더 쉽고 간결하게 가능 (SQL) 맵리듀스와 테즈를 기반으로 하기 때문에 10배 정도는 더 빠르다. 피그 스크립트 실행 방법 Grunt Script Ambari Pig 스크립트 ratings = LOAD ‘/user/maria_dev/ml-100k/u.data’ AS (userID:int, movieID:int, rating:int, ratingTime:int); metadata = LOAD ‘/user/maria_dev/ml-100k/u.item’ USING PigStorage(’|’) AS (movieID:int, movieTitle:chararray, re..
HDFS HDFS 개요 큰 파일을 다루기 위한 도구 블록으로 분할하여 저장 - 128MB 블록들은 여러 대의 컴퓨터에 저장된다. 또한 각 블록의 복사본을 하나만 저장하는 것이 아니다. → 실패에 대처 HDFS 아키텍처 네임노드: 모든 블록이 어디에 있는지 추적 편집 로그를 통해 새로운 파일의 추가나 이동 등을 추적 데이터 노드: 궁극적으로 클라이언트와 통신 클라이언트 노드가 네임노드에 연락하여 어떤 블록이 어떤 데이터 노드에 있는지 물어보고 데이터 노드에서 실제로 블록을 찾는다. Write File 클라이언트 노드가 네임 노드에 새 항목 생성을 의뢰하고, 네임 노드의 정보가 클라이언트 노드를 통해 데이터 노드 간데이터를 복제한다. 그리고 성공했다면 성공 사실을 다시 네임노드로 전송한다. Read File..
빅데이터 연합 동아리 BOAZ에 데이터 엔지니어링 부문에 최종합격하였다! BOAZ 자체는 굉장히 유명한 동아리이지만 데이터 엔지니어링 파트는 개설된지 얼마 되지 않았기에 정보가 많이 없는 것 같아 합격 수기를 남기려고 한다. 대략 선발 과정을 살펴보면 먼저 지원서를 통해 1차 합격자들을 선별한다. 최종 합격자의 1.5배수 정도를 뽑는다고 하는데 엔지니어링 파트는 대략 15명 정도를 뽑는 것 같다. 부문마다 경쟁률은 천차만별이겠지만 내가 전에 있었던 빅데이터 동아리의 경쟁률이 27:1이었던 걸 생각해보면 BOAZ와 같이 더 인기있는 동아리는 경쟁률이 어마어마 할 것으로 보인다. 혹시 다른 파트도 궁금할 수 있어 적어보자면 분석 파트는 대략 50명, 시각화는 30명, 엔지니어링은 20명 정도를 1차에서 선발..
하둡 설치 VirtualBox 가상머신에 설치 Hortonworks 배포판을 사용 처음 Ambari를 초기화할 때 굉장히 느렸음. → RAM 용량이 너무 작은걸까? 하둡 개요 하둡의 정의와 탄생, 역사를 알아봄 하둡 생태계 안의 기술 종류와 각각의 정의 → 아직까지 직접 툴들을 다뤄보지 않아서 정의가 와닿지 않았음.
네이버 커넥트 재단에서 진행하는 부스트캠프 AI tech 분야에 추가 합격하였다! 최종 선발에서 불합격하였는데 이렇게 갑작스럽게 추가합격 소식을 전달받게 되어 얼떨떨하고 기분이 이상했다... 추가합격 기회가 있다는 것은 들었지만 그게 내가 되리라고는 상상하지 못했기에 예상못한 선물을 받은 것 같아 굉장히 신났다. 사실 아예 떨어졌다고 생각하고 방학동안의 계획을 짜두었는데 다시 또 수정을 해야할 것 같다 ㅎㅎ 부스트캠프를 준비하면서 전 기수 수료생 분들의 블로그 글이 많이 도움이 되기도 하였고, 나 또한 다음 기수를 준비하시는 분들에게 조금이나마 도움이 되고 싶어 글을 남기려고 한다. 비록 추가합격이지만 최대한 내가 했던 과정을 적어본다. (나처럼 문닫고 들어오시는 분들에게는 더 큰 도움이 될 수 있으리라..
Mass Storage Structure Mass Storage란 Mass Storage: 비휘발성, 세컨더리 스토리지라고 불리고 HDD, SSD가 여기에 해당한다. HDD 스케줄링 - seek time(헤드가 특정 섹터를 찾아가는데 걸리는 시간)을 최소화 - bandwidth(시간당 한 번에 전송할 수 있는 용량)을 최대화 FIFO 스케줄링 가장 기본적인 스케줄링으로 선입선출 구조를 따르며, 효율적이지는 않다. SCAN 스케줄링 양방향으로 탐색하는 방법. 즉, 왕복으로 탐색하는 방법. C-SCAN 스케줄링 SCAN 방식을 개선한 방법으로 단방향으로만 탐색한다. 끝까지 탐색을 마치면 다시 처음으로 돌아가는데 그때는 데이터를 탐색하지 않는다. 부트 블록 - 부트스트랩 프로그램: 각각의 장치에 이르는 시스템..
개념 가상 메모리란 프로세스를 메모리에 완전히 다 올리지 않아도, 즉 프로그램이 실제 메모리 용량보다 더 커도 실행될 수 있게 하는 기술으로 필요할 때마다 물리 메모리에 매핑시켜 사용한다. 가상 메모리 공간 논리적인 관점으로 프로세스가 메모리에 저장되는 공간. 실제로는 아니지만 연속적인 메모리로써 표현하게끔 하여 프로그램 실행이 굉장히 간편해진다. page sharing 가상 메모리는 여러 개의 프로세스가 파일이나 메모리를 공유할 수 있게끔 한다. 이를 page sharing이라 한다. Demand Paging Demand Paging 기본 개념 1. 하드 디스크에서 메모리에 프로세스를 로드한다. 2. 한 번에 프로세스를 로드하는 것은 비효율적이므로 요청할 때마다 페이지 단위로 로드한다. - valid:..
배경 메모리의 구성 - 각각의 주소를 가지고 있는 바이트의 배열 - CPU는 메모리로부터 명령어를 패치하거나, 저장할 수 있다. 메모리 공간 프로세스는 각자의 메모리 공간을 가지고 있다. 즉, 프로세스별로 독립된 메모리 공간을 가지고 있어야 한다는 뜻이다. 메모리 보호를 위해 base register와 limit register를 가진다. 메모리 보호는 CPU 하드웨어가 유저모드에서 주소를 생성해낼 때마다 매번 비교를 하며 이루어진다. 새로운 주소가 base register보다 크거나 같고, base+limit register보다 작을 때만 정상적으로 할당할 수 있게끔 한다. 논리 주소 공간: 유저 프로그램에 의해 만들어지는 메모리 주소 물리 주소 공간: 논리 주소 공간에 매핑되는 실제 데이터가 저장되는..
스키마리스 데이터의 애드 훅 분석 스키마리스 데이터 수집하기 데이터 소스 -> 트위터 스트리밍 API 분산 스토리지 -> 몽고DB 분산 데이터 처리 -> Spark 데이터 정형 -> pandas 대화식 콘솔 -> 주피터 노트북 트위터 스트리밍 API를 이용하여 몽고DB에 데이터를 적재한다. 수집한 데이터는 주피터 노트북을 통해 대화식으로 볼 수 있는 환경을 마련해준다. Spark를 이용한 분산 환경 스파크를 이용하여 분산 처리를 할 수 있다. 먼저 몽고DB로부터 데이터를 읽어들이기 위해 데이터프레임을 작성한다. 이 데이터프레임은 Spark SQL을 사용하여 SQL로 집계할 수 있다. 몽고DB는 열 지향 스토리지처럼 읽기에 최적화되어 있지 않아 고속 집계에는 적합하지 않다. 스파크는 데이터 프레임을 토대로..
데드락이란? 데드락: 자원을 다른 대기 스레드가 점유하고 있어서 대기 스레드가 다시는 자신의 상태를 변화하지 못하는 상태. 데드락의 특성 4가지 필수조건 1. 상호배제 2. 점유와 대기: 스레드가 실질적으로 자원을 점유하고 있어야 한다. 3. 비선점: 자원이 선점 불가능할 때만 데드락이 일어날 수 있다. 4. 원형대기 RAG(Resource Allocation Graph) RAG: 데드락을 정확히 표현하기 위해 나타낸 directed graph. - request edge T -> R로 나타내며 스레드가 자원을 요청한다는 뜻이다. - assignment edge R -> T로 나타내며 자원을 할당받은 상태를 나타낸다. 아래의 그림과 같이 RAG를 그려봄으로써 데드락을 시각적으로 쉽게 확인할 수 있다. 하..