본문 바로가기

전체 글

(658)
[하둡] 맵리듀스(MapReduce) 이해하기 맵리듀스는 여러 노드에 태스크를 분배하는 방법으로 각 노드 프로세스 데이터는 가능한 경우, 해당 노드에 저장됩니다. 맵리듀스 태스크는 맵(Map)과 리듀스(Reduce) 총 두단계로 구성됩니다. 간단한 예를 들면 fork-join의 개념을 들 수 있습니다. 큰 작업에 대해 fork로 분할하고 또다시 fork로 분할합니다. 작은 작업을 다시 join하게 됩니다. 하둡에서는 큰 데이터가 들어왔을 때 64MB단위 블럭으로 분할합니다. 각각 블럭에 대한 연산을 합니다. 구글에는 많은 텍스트 파일이 존재합니다. Word1, Word2, Word3... 텍스트 안에 단어가 몇 번 나왔는가하는 것을 계산하는 작업을 수행하게 됩니다. 즉, 텍스트파일을 64MB 단위로 잘라내어 각 블럭에 대해서 특정 단어가 몇번 출현했..
[하둡] HDFS의 구현컨셉 및 설계 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 사용법 하둡 HDFS 기본 사용법시스템과의 상호작용은 hadoop 이라는 명령어를 통해서 합니다. 만약 터미널을 열고, 인자 없이 명령어를 실행하면 도움말이 나옵니다. 이와 같이 실행하기 위해서, 아래 명령어를 실행합니다. $hadoop hadoop 명령어는 여러개의 서브 시스템으로 세분화 되어있습니다. 예를 들어, HDFS의 파일을 처리하기 위한 서브 시스템과 MapReduce Processing Job을 관리하고 실행하기 위한 서브 시스템이 있습니다. Step 1. Exploring HDFS하둡 프로그램에서 HDFS와 관련된 서브 시스템은 FsShell 이라고 합니다. 이 서브 시스템은 hadoop fs 명령어로 실행할 수 있습니다. 1. 데스크탑의 Terminal 아이콘을 더블클릭하여 Terminal을 실..
[인프라] CI(지속적인 통합, Continuous Integration) 이해하기 지속적인 통합이란?소프트웨어 개발 프로젝트는 [분석/설계] → [코드 작성] → [빌드] → [테스트] → [릴리스] → [디플로이] 와 같은 생명 주기를 지니고 있으며, 각 단계는 프로젝트가 진행되는 동안 계속 반복적으로 실행되는 경우가 많습니다. 또 개별 단계 내에서 진행되는 업무 내역을 자세히 분석해 보면 처리해야 할 업무가 생각보다 많고 복잡하며, 중간에 하나만 실수하거나 잘못돼도 이를 바로잡는 데 상당히 오랜 시간이 걸리는 경우가 많습니다. 이 같은 복잡성 및 시간이 많이 소요된다는 특성 때문에 반복적인 단계가 잘 진행되지 않고, 이로 인해 개별 개발자가 작업한 내용을 통합하고 테스트하는 작업을 드물게 수행하거나 심지어 프로젝트의 중반 이후에야 수행하는 경우가 많았습니다. 그 결과, 소프트웨어 ..
[Real MySQL] 그외 인덱스(유니크, 외래키) 유니크 인덱스 유니크란 사실 인덱스라기보다는 제약 조건에 가깝다고 볼 수 있습니다. 말 그대로 테이블이나 인덱스에 같은 값이 2개 이상 저장될 수 없음을 의미하는데, MySQL에서는 인덱스 없이 유니크 제약만 설정할 방법이 없습니다. 유니크 인덱스에서 NULL도 저장될 수 있는데, NULL은 특정의 값이 아니므로 2개 이상 저장될 수 있습니다. MySQL에서 프라이머리 키는 기본적으로 NULL을 허용하지 않는 유니크 속성이 자동으로 부여됩니다. MyISAM이나 MEMORY 테이블에서 프라이머리 키는 사실 NULL이 허용되지 않는 유니크 인덱스와 같지만 InnoDB 테이블의 프라이머리 키는 클러스터 키의 역할도 하므로 유니크 인덱스와는 근본적으로 다릅니다. 유니크 인덱스와 일반 보조 인덱스의 비교 유니크 ..