라벨이 Distributed_Processing인 게시물 표시

하둡 스파크 공부의 필요성

이미지
RNN 공부를 간단히 한 상태에서 kaggle 데이터셋으로 RNN을 구현하는 중이었다. 글자를 행렬로 바꾸는 과정에서 50만개의 글자를 행렬로 만드려니 메모리 오류가 나는 것은 내 노트북에서 당연한 일이었다. 그래서 생각해보니 내가 하둡 스파크를 공부한 이유가 대용량 데이터의 전처리를 보다 빠르게 하기 위함이었다. 집에 있는 그나마 나은 데스크탑으로 스파크를 통해 데이터를 가공하고 가공된 데이터를 가져와 모델링을 하는 것이 효율적일 것 같다. 파이썬 텐서플로우로는 딥러닝 연산을 하고 하둡 스파크에서 데이터의 가공을 하는 메카니즘을 공부해야겠다. 지금은 하둡2 얀 설치에서 막혀있지만 하루 빨리 설치 오류부터 고쳐나가야겠다.

Hadoop 1-4

이미지
4.1 맵리듀스의 개념 하둡은 HDFS와 맵리듀스로 구성됩니다. 맵리듀스는 HDFS에 저장된 파일을 분산 배치 분석을 할 수 있게 도와주는 프레임워크입니다. 맵리듀스 프로그래밍 모델은 맵과 리듀스라는 두 가지 단계로 데이터를 처리합니다. 맵은 입력파일을 한 줄씩 읽어서 데이터를 변형하며, 리듀스는 맵의 결과 데이터를 집계합니다. 이러한 맵리듀스 프로그래밍 모델은 일밙거으로 다음과 같은 함수로 표현됩니다. 맵 : (K1,V1) -> LIST(K2,V2) 리듀스 : (K2,LIST(V2)) -> (K3,LIST(V3)) 맵은 키와 값으로 구성된 데이터를 입력받아 이를 가공하고 분류한 후, 새로운 키와 값으로 구성된 목록을 출력합니다. 리듀스는 새로운 키로 그룹핑된 값의 목록을 입력 데이터로 전달받습니다. 그리고 값의 목록에 대한 집계 연산을 실행해 새로운 키로 그룹핑된 새로운 값의 목록을 생성합니다. 하둡의 맵리듀스 프레임워크는 이러한 프로그래밍 모델을 구현할 수 있게 맵과 리듀스 인터페이스를 제공합니다. 맵리듀스 애플리케이션이 동작할 때 맵과 리듀스 사이에는 셔플이라는 작업이 발생합니다. 셔플은 나중에 자세히 설명하겠습니다. 4.2 맵리듀스 아키텍쳐 맵리듀스 프레임워크는 개발자가 분석 로직을 구현하는 데 집중하게 해주고, 데이터에 대한 분산과 병렬처리를 프레임워크가 전담합니다. 하지만 아키텍쳐를 모른다면 성능을 고려하지 않은 채로 개발하게 되고, 서비스를 사용하지 못할 수도 있습니다. 1. 시스템 구성 클라이언트 : 사용자가 진행한 맵리듀스 프로그램과 하둡에서 제공하는 맵리듀스 API를 의미합니다.  잡트래커 : 클라이언트가 하둡으로 실행을 요청하는 맵리듀스 프로그램은 잡이라는 하나의 작업 단위로 관리됩니다. 잡트래커는 하둡 클러스터에 등록된 전테 잡의 스케줄링을 관리하고 모니터링합니다. 태스크트래커 : 사용자가 설정한 맵리듀스 프로그램을 실행하며, 하둡의 데...

Hadoop 1-1 ~ 1-3

이미지
1부에서는 설치와 HDFS의 기본 이론을 위주로 공부합니다. 1-1에서는 하둡에 대한 설명했고 1-2에서는 설치에 대한 설명을 했습니다. 모두 각설하고 1-3인 하둡 분산 파일 시스템에 대해 공부하겠습니다. 우선 HDFS란 무엇인가부터 알아보겠습니다. HDFS란? 수십 테라바이트 또는 페타바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 많은 클라이언트가 저장된 데이터를 빠르게 처리할 수 있게 설게된 파일 시스템입니다. 3.1 HDFS 기초  HDFS 이전에도 DAS, NAS, SAN 과 같은 대용량 파일 시스템이 있었으며, HDFS 또한 이러한 대용량 파일 시스템과 유사점이 많습니다. DAS ( Direct - Attached Storage ) : 서버에 직접 연결된 스토리지이며, 외장형 하드디스크로 이해하면 됩니다. NAS ( Network - Attached Storage ) : 일종의 파일 서버입니다. 별도의 운영체제를 사용하며, 안정적으로 공유할 수 있습니다. SAN ( Storage Area Network ) : 수십대에서 수백대의 SAN 스토리지를 데이터 서버에 연결해 총괄적으로 관리해주는 네트워크를 의미합니다. HDFS와 위 3가지 스토리지와의 가장 큰 차이점은 저사양 서버를 이용해 스토리지를 구성할 수 있다는 것입니다. HDFS 에 저장ㄷ하는 데이터는 물리적으로 분산된 서버의 로컬 디스크에 저장돼있지만, 파일의 읽기 및 저장과 같은 제어는 HDFS에서 제공하는 API를 이용해 처리됩니다. HDFS는 네 가지 목표를 가지고 설계됐습니다. 1. 장애 복구 2. 스트리밍 방식의 데이터 접근 3. 대용량 데이터 저장 4. 데이터 무결성 3.2 HDFS 아키텍처 1. 블록 구조 파일 시스템 HDFS는 블록 구조의 파일 시스템입니다. HDFS에 저장하는 파일은 특정 크기의 블록으로 나눠져 분산된 서버에 저장됩니다. 블록 크기는 기본적으로 64MB로 설정돼 있으며, 변경 가능...

하둡 설치 오류 정리

이미지
길고 긴 설치였다. 이틀동안 하둡 설치하는데 시간을 다 썼다. 이 때까지 오류 나왔던 것들을 다시 한 번 정리하는 의미에서 글을 쓰겠다. 이 게시글은 설치 가이드가 아닌 오류를 정리하는 글이다. 우선 나의 하둡 설치 환경에 대해 설명하자면, VirtualBox 에서 3개의 우분투 16.04버젼을 설치하고 컴퓨터의 이름은 hadoop1-VirtualBox hadoop2 hadoop3으로 하였다.  첫번째 로 만났던 고난은 리눅스의 계정 관리였다. 되도록이면 adduser을 통해 3개의 가상 머신에 hadoop이라는 계정을 만들어주는 걸 강력 추천한다. 그래야 나중에 혼동이 없고 configure 파일 수정할 때 편리하다. hadoop@hadoop1-VirtualMachine $ 위와 같이 써있으면 전자 hadoop은 계정이고 후자는 컴퓨터 이름이다.  두번째 는 ras_pub 이었다. 즉, ssh 연결할 때 비밀번호 없이 공개 키를 주어 접속할 수 있도록하는 방법이다. hadoop@hadoop1에서 hadoop@hadoop2로 ssh 접속을 하기 위해 전자에서 후자로 공개 키를 복사해서 주었을 것이다. 책에서는 이렇게 하면 끝이라고 했지만 후자에서 전자로 또 공개 키를 복사해주는 것이 좋다고 한다.  세번째 는 네트워크 접속 거부이다. 여기서 엄청 애 먹었다. iptables 나 netstat을 통해 이것저것 다 해봤다. 가장 효과적인 것은 gufw 를 apt-get install 해서 방화벽을 재설정했다. 나는 9000, 9001, 50070, 50090 포트를 모두 열어놨고 내부 네트워크에서 오는 접속은 모두 허용했다. 마지막으로 내가 생각하는 해결책은 /etc/hosts 에 있는 파일을 수정하는 것이다. 설치 가이드를 보면 이 파일을 수정하게 되는데 아래와 같이 되어 있었다. 127.0.0.1 localhost 127.0.1.1 hadoop1 두번째 있는 127.0.1.1 ...