3월, 2020의 게시물 표시

논문 정리 - MapReduce: Simplified Data Processing on Large Clusters

Abstract 맵리듀스는 큰 데이터 셋을 다루는 프로그래밍 모델이다 . 사용자는 map 함수를 통해서 키 / 밸류 쌍을 이용하여 intermediate key/value pair 를 만들고 reduce 함수를 통해서 그 intermediate pair 들을 같은 key 별로 합쳐준다 . 많은 일들이 이런 모델을 통해 표현될 수 있다 . 이 모델은 분산 시스템이나 병렬 시스템에 대한 경험이 부족하더라도 분산 시스템의 자원을 쉽게 사용할 수 있게 해준다 . 1. introduction 데이터가 많아지면서 reasonable time 안에 작업을 끝내기 위해 수백 혹은 수천대의 기계에 분산되어야 했다 . 이 때 어떻게 연산을 병렬화하고 , 데이터를 분산하고 , 실패 작업을 어떻게 처리할지가 이슈가 되었다 . 이런 복잡한 문제들을 해결하기 위해 병렬화의 세세한 부분들은 숨기고 fault tolerance 하며 데이터를 분산시켜주고 로드 밸런싱을 해주는 라이브러리를 통해서 연산을 맵과 리듀스로 간단히 표현하도록 했다 . 2. Programming Model 사용자가 직접 만드는 맵 함수는 입력으로 key/value pairs 를 받아서 intermediate key/value pairs 를 만든다 . 그러면 intermediate key/value pairs 에 대해서 맵리듀스 라이브러리가 같은 key 별로 value 들을 묶어서 리듀스 함수로 보내준다 . 마찬가지로 사용자가 직접 만드는 리듀스 함수는 이 데이터를 받아서 key 별로 묶인 value 들을 합쳐서 표현한다 . 리듀스 함수에 전달되는 intermediate 데이터는 iterator 의 형태로 전달되기 때문에 메모리에 다 안 들어갈 정도로 큰 데이터도 처리할 수 있다 . 예를 들어서 , 어떤 문서에 있는 각 단어들이 몇 번 나왔는지 세는 프로그램을 생각해보자 . 그렇다면 맵 함수는 입력으로 < 문서 이름 , 문서 내용 > 의...

vim settings

syntax on set autoindent set cindent set nu set ts=4 " Tab 너비 set shiftwidth=4 " 자동 인덴트할 때 너비 " 마지막으로 수정된 곳에 커서를 위치함 au BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "norm g`\"" | \ endif

잡 개념들 정리(관계vs비관계, LDAP)

관계형 데이터베이스 전체 트랜잭션이 하나의 단위로 기록되어서 실패할 경우 전체를 롤백한다. 디비 설계 시 중복을 최소화해서 구조화하기 위해 정규화를 한다. 장점: 데이터의 성능이 일반적으로 좋아 정렬, 탐색, 분류가 빠르다. 신뢰성이 높아 데이터의 무결성을 보장한다. 정규화에 따른 갱신 비용을 최소화한다. 단점: 기존에 작성된 스키마를 수정하기 어렵다. 데이터베이스의 부하를 분석하기 어렵다. 빅데이터를 처리하는데 비효율적이다. 비관계형 데이터베이스 NoSQL 데이터의 저장 및 검색에 특화된 매커니즘을 사용한다. 분산환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발됐다. MongoDB, CouchDB 등이 있다. 거대한 맵으로서 key-value 형식을 지원한다. PK, FK Join 등 관계를 정의하지 않는다. 스키마에 대한 정의가 없다. 장점: 대용량 데이터를 처리하는데 효율적이다. 읽기보다는 쓰기가 빠르고, 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠르다. 데이터모델링이 유연하다. 확장성이 좋아서 검색에 유리하다. 복잡한 데이터 구조를 표현할 수 있다. 단점: 쿼리 처리 시 데이터를 파싱 후 연산을 해야해서 큰 크기의 문서를 다룰 때는 성능이 저하된다. LDAP() 네트워크 상에 있는 파일이나 장치들과 같은 자원의 위치를 찾을 수 있게 해주는 소프트웨어 프로토콜이다.