'HDFS'에 해당되는 글 4건

  1. 2016.01.13 HDFS 명령어 테스트~
  2. 2016.01.05 Hadoop 2.0 - HDFS2와 YARN
  3. 2015.12.31 HDFS 간단히 살펴보기~
  4. 2012.08.29 하둡(Hadoop) 파일시스템 (HDFS) 명령어 정리~

HDFS 명령어 테스트~

|



클라우데라의 QuickStartVM에서 HDFS 명령어를 테스트해보자. 

하둡 파일 시스템의 전체 명령어는 하둡(Hadoop) 파일시스템 (HDFS) 명령어 정리~를 참고하기 바란다. 


아래 내용은 University of California, San Diego의 Mahidhar  Tatineni 교수 자료를 참고했다. 


1. -ls 명령어로 현재 하둡 파일 시스템에 내용을 확인할 수 있다. 

VM에서는 /hbase, /solr 등의 디렉토리 구성을 볼 수 있다.  

> hdfs dfs -ls /


2. -mkdir을 사용하여 예제로 쓸 /user/test 디렉토리를 생성한다. 

> hdfs dfs -mkdir /user/test
> hdfs dfs -ls /user/


3. 리눅스의 dd 명령어를 통해 1GB의 대용량 파일을 만들어 보자. 

> dd if=/dev/urandom of=sample.txt bs=64M count=16


4. 생성된 sample.txt 파일을 하둡 파일 시스템으로 저장한다. 

> hdfs dfs -put sample.txt /user/test/
> hdfs dfs -ls /user/test/


5. 하둡 파일 시스템에 저장된 파일의 상세 내역은 fsck 명령어로 확인할 수 있다. 

블럭 개수 및 블럭 사이즈, 리플리케이션 팩터 등을 확인할 수 있다. 

참고로 VM에서는 128M의 블럭 사이즈와 1개의 리플리케이션이 기본으로 설정되어 있는 것을 알 수 있다. 

> hdfs fsck /user/test/sample.txt


6. 마지막으로 dfsadmin 명령어를 통해서 데이터 노드의 전체 상태를 살펴볼 수 있다. 

> hdfs dfsadmin -report





Trackback 0 And Comment 0

Hadoop 2.0 - HDFS2와 YARN

|



HDFS vs HDFS2

기존의 하둡 파일 시스템의 가장 큰 취약점은 바로 네임노드였다. 

여러 개의 데이터 노드를 연결해서 데이터 노드에서 발생할 수 있는 하드웨어 오류에 대응할 수 있었지만, 

네임 노드는 하나로 구성함으로써 위험에 노출되어 있던 것이 사실이다. 


HDFS2로 넘어가면서 네임노드에도 확장성을 위해 여러 개의 네임노드를 구성할 수 있도록 변경하였다. 

그래서 네임 서버들을 구분하기 위한 여러 개의 네임스페이스를 도입하게 되었고, 네임 서버에 대한 고가용성도 확보할 수 있었다. 

또한 여러 개의 네임 서버에서 데이터 노드를 관리하기 위해서 Block Pools 개념도 등장한다. 



마찬가지로 하둡 1.0의 맵리듀스에서도 마스터 노드에 하나의 잡트래커를 사용했다. 

잡트래커에서 스케쥴링, 모니터링, 실패한 태스크의 재실행 등 다양한 역할을 수행했었다. 



YARN - NexGen MapReduce

하둡 2.0에서 잡 트래커커의 역할을 리소스 관리와 잡 스케쥴링/모니터링으로 분리해서 효율성을 높인 것이 바로 Yarn이다. 

마스터 노드에서는 리소스 관리를 진행하고, NodeManager는 각 노드에서 실행하고, ApplicatonMaster는 각 어플리케이션 단위로 실행하는 것으로 구분하였다. 

또한, 하둡 1.0은 맵리듀스만을 기반으로 Hive, Pig 정도의 어플리케이션을 활용할 수 있었지만, 

YARN 기반으로 업그레이드하면서 다양한 어플리케이션들을 하둡 파일 시스템 기반으로 활용할 수 있게 된다. 



그러면 YARN 아키텍처의 흐름을 살펴보기로 하자. 



1. 클라이언트에서 응용프로그램을 요청한다. 

2. Resource Manager는 Container 할당을 책임지는 Applicatoin Master를 실행한다. 

3. Application Master가 Resource Manager에 등록된다. 

4. Application Master가 resource-request 프로토콜을 통해 적절한 리소스의 Container를 요청한다. 

5. Container가 성공적으로 할당되면, Application Master는 Container 실행 스펙을 Node Manager에게 제공하여 Container를 실행시킨다.

6. 응용프로그램 코드는 Container에서 실행되고, 진행률/상태 등의 정보를 Application Master에 제공한다. 

7. 응용프로그램 실행 중 클라이언트는 진행률/상태 등을 얻기 위해 Application Master와 직접 통신한다. 

8. 응용프로그램이 완료되고 필요한 작업이 종료되면, Application Manager는 Resource Manager에 등록을 해제하고, 자신의 Container를 다른 용도로 사용할 수 있도록 종료한다. 





Trackback 0 And Comment 0

HDFS 간단히 살펴보기~

|



"클라우데라 QuickStart VM 설치 후 먼저 HDFS 명령어를 통해 

하둡 파일시스템에 파일을 올리는 간단한 예제를 살펴보고, Hue 인터페이스로도 확인해 보기로 하자.


1. VM에서 상단의 터미널 아이콘을 클릭한다. 


2. 터미널에서 testfile.txt를 생성하고 하둡 파일시스템에 업로드한다. 

HDFS의 ls 명령어로 실제 파일이 업로드 된 것을 확인할 수 있다. 

 


3. 이제 웹 브라우저 기반의 HUE 인터페이스를 통해서 해당 파일을 살펴보자. 

웹브라우저의 북마크에서 Hue를 클릭하고 우측 상단의 "File Browser"를 선택한다. 

여기에서도 testfile.txt 파일이 올라가 있는 것을 확인할 수 있다. 


4. testfile.txt 파일을 클릭하면 해당 파일의 상세 내역을 볼 수 있다. 

또한 왼쪽의 "Edit file"을 선택하여 해당 파일의 내용을 수정할 수도 있다. 


5. 실제로 Hue를 통해 testfile.txt 파일의 내용을 수정하는 화면이다. 


이상으로 간단하게 텍스트 파일을 생성하고, 하둡 파일 시스템에 올린 다음, HUE 인터페이스를 통해 수정하는 부분까지 살펴봤다. 

다음에는 하둡 word counting 맵리듀스 예제를 QuickStart VM에서 돌려보는 예제를 살펴보기로 하자. 

QuickStart VM을 활용한 예제는 University of California, San Diego 대학의 나타샤 발락(Natasha Balac) 교수의 자료를 참고했다. 





Trackback 0 And Comment 0

하둡(Hadoop) 파일시스템 (HDFS) 명령어 정리~

|



하둡(Hadoop)의 파일시스템인 HDFS의 명령어를 모두 정리해 보려고 합니다. 

하둡의 명령어는 다음과 같은 구조를 가지고 있습니다. 


hdfs dfs -cmd <args>


cmd가 지정한 파일 명령어이고 <args>는 각 명령에 따른 인자들을 나타냅니다. 

hadoop fs를 제외하면 일반적인 리눅스 명령어와 유사하다고 볼 수 있습니다. 


그럼 정리해보도록 하겠습니다. (도서 "거침없이 배우는 하둡"의 부록을 참고했습니다.)


cat


hdfs dfs -cat FILE [FILE ...]
파일의 내용을 나타낸다. 압축된 파일을 읽기 위해서는 fs 대신에 text 명령어를 사용해야 한다.


chgrp


hdfs dfs -chgrp [-R] GROUP PATH [PATH ...]
파일과 디렉토리에 대한 그룹을 변경한다. -R 옵션은 하위 디렉토리까지 재귀적으로 해당 변경을 적용한다. 사용자는 해당 파일의 소유자이거나 슈퍼유저여야 한다.


chmod


hdfs dfs -chmod [-R] MODE [, MODE ...] PATH [PATH ...]
파일과 디렉토리의 권한을 변경한다. 유닉스와 유사하게 권한 모드는 세 자리 8진수 모드 또는 +/- {rwxX}이다. -R 옵션은 변경을 재귀적으로 적용한다. 사용자는 해당 파일의 소유자이거나 슈퍼유저여야 한다.


chown


hdfs dfs -chown [-R] [OWNER] [ :[GROUP]] PATH [PATH ...]
파일과 디렉토리의 소유자를 변경한다. -R 옵션은 재귀적으로 하위 디렉토리에 설정을 반영한다. 사용자는 슈퍼유저여야 한다.


copyFromLocal


hdfs dfs -copyFromLocal LOCALSRC [ LOCALSRC ...] DST
put과 동일하다. 로컬 파일 시스템으로부터 파일들을 복사한다.


copyToLocal


hdfs dfs -copyToLocal [-ignorecrc] [-crc] SRC [SRC ...] LOCALDST
get과 동일하다. 파일들을 로컬 파일 시스템으로 복사한다.


count


hdfs dfs -count [-q] PATH [PATH ...]
PATH에 있는 모든 파일과 디렉토리에 대한 이름, 사용된 바이트 수, 파일 개수, 하위 디렉토리 개수를 출력한다. -q 옵션은 할당 정보를 나타낸다.


cp


hdfs dfs -cp SRC [SRC ...] DST
소스에 있는 파일들을 목적지로 복사한다. 만약 다수의 소스 파일들이 지정되면, 목적지는 디렉토리여야 한다.


du


hdfs dfs -du PATH [PATH ...]
파일 크기를 나타낸다. 만약 PATH가 디렉토리이면, 그 디렉토리에 있는 각 파일의 크기가 리포트된다. 파일명 앞에 전체 URI 프로토콜이 붙는다. 비록 du는 디스크 사용량을 나타내지만 있는 그대로 받아들여서는 안 된다. 디스크 사용량은 블록 크기와 복제 요소들에 따라 다르기 때문이다.


dus


hdfs dfs -dus PATH [PATH ...]
du와 비슷하다. 그런데 디렉토리에 대해서 dus는 개별적으로 나타내기보다는 합계 (파일 크기)를 리포트한다.


expunge


hdfs dfs -expunge
휴지통을 비운다. 만약 휴지통 기능이 활성화 되어 있으면, 파일이 삭제되었을 때 우선 임시 .Trash/ 폴더로 이동하게 된다. 그리고 사용자가 설정한 시간 후에 .Trash/에 있는 파일이 완전히 삭제된다. expunge 명령어는 .Trash/ 폴더에 있는 파일들을 강제적으로 삭제한다. .Trash/ 폴더에 파일이 존재하는 한 그것을 원래 위치로 이동시켜 해당 파일을 복구 할 수 있다.


get


hdfs dfs -get [-ignorecrc] [-crc] SRC [SRC ...] LOCALDST
파일들을 로컬 파일 시스템으로 복사할 때, 만약 다수의 소스 파일들이 지정되면 로컬 목적지는 디렉토리여야 한다. 만약 LOCALDST가 -이면, 그 파일들은 stdout으로 복사된다. HDFS는 파일에 대한 각 블록의 체크섬을 계산한다. 파일에 대한 체크섬은 숨김 파일에 저장되고, 해당 파일이 HDFS에서 읽힐 때 숨김 파일에 있는 체크섬들은 해당 파일의 무결성을 확인하는데 사용된다. get 명령어에서 -crc 옵션을 사용하면, 숨김 파일도 복사하고, -ignorecrc 옵션은 복사할 때 체크섬을 확인하는 과정을 건너뛴다.


getmerge


hdfs dfs -getmerge SRC [SRC ...] LOCALDST [addnl]
SRC에서 확인된 모든 파일을 가져와 합치고, 로컬 파일 시스템에 존재하는 하나의 LOCALDST 파일에 기록한다. addnl 옵션은 각 파일의 끝을 나타내는 개행 문자를 LOCALDST 파일에 추가한다.


help


hdfs dfs -help [CMD]
해당 명령어(CMD)에 대한 사용법을 나타낸다. 만약 CMD 없이 해당 명령어를 사용하면 모든 명령어에 대한 사용법을 출력한다.


ls


hdfs dfs -ls PATH [PATH ...]
파일과 디렉토리를 조회한다. 각 엔트리는 명칭, 권한, 소유자, 그룹, 크기, 수정일을 나타낸다. 파일 엔트리는 복제 요소도 포함해서 보여준다.


lsr


hdfs dfs -lsr PATH [PATH ...]
ls의 재귀적 버전이다.


mkdir


hdfs dfs -mkdir PATH [PATH ...]
디렉토리를 생성한다. 유닉스의 mdir -p와 같이 상위 디렉토리를 지정하지 않아도 해당 디렉토리까지 포함해서 생성한다.


moveFromLocal


hdfs dfs -moveFromLocal LOCALSRC [LOCALSRC ...] DST
LOCALSRC가 성공적으로 HDFS에 복사된 후에 해당 파일이 삭제되는 것만 빼고는 put과 유사하다.


moveToLocal


hdfs dfs -moveToLocal [-crc] SRC [SRC ...] LOCALDST
아직 구현되어 있지 않다.


mv


hdfs dfs -mv SRC [SRC ...] DST
SRC에 있는 파일들을 DST로 옮긴다. 만약 다수의 소스 파일들이 지정되면, 목적지는 디렉토리여야 한다. 파일 시스템들 간 이동은 허가되지 않는다.


put


hdfs dfs -put LOCALSRC [LOCALSRC ...] DST
로컬 시스템으로부터 파일과 디렉토리를 목적지 파일 시스템으로 복사한다. 만약 LOCALSRC가 -로 설정되어 있으면 입력은 stdin으로 지정되고, DST는 파일이어야 한다.


rm


hdfs dfs -rm PATH [PATH ...]
파일과 빈 디렉토리를 삭제한다.


rmr


hdfs dfs -rmr PATH [PATH ...]
rm의 재귀적 버전이다.


setrep


hdfs dfs -setrep [-R] [-w] REP PATH [PATH ...]
주어진 파일들에 대한 대상 복제 계수를 REP로 설정한다. -R 옵션은 PATH에 의해 확인된 디렉토리들에 대한 파일들의 대상 복제 계수를 재귀적으로 적용한다.


stat


hdfs dfs -stat [FORMAT] PATH [PATH ...]
파일의 통계 정보를 나타낸다. 아래 포맷 지정자에 따른 FORMAT 문자열에 맞게 형식화되어 해당 정보가 출력된다.

%b 파일 크기 (블록 단위)
%F 파일 형식에 따른 "디렉토리" 또는 "일반 파일"
%n 파일명
%o 블록 크기
%r 복제
%y UTC 날짜 yyyy-MM-dd HH:mm:ss 형식
%Y 1970년 1월 1일 (UTC) 이후 경과한 밀리세컨드


tail


hdfs dfs -tail [-f] FILE
파일의 마지막 1KB의 내용을 출력한다.


test


hdfs dfs -test -[ezd] PATH
PATH에서 다음의 형식 점검을 수행한다.

-e PATH 존재 유무, PATH가 존재하면 0을 반환한다. 
-z 빈 파일 여부, 파일 길이가 0이면 0을 반환한다. 
-d PATH가 디렉토리이면 0을 반환한다. 


text


hdfs dfs -text FILE [FILE ...]
파일의 텍스트 내용을 나타낸다. 만약 파일이 텍스트 파일이라면 cat 명령과 동일하다. 압축 형식(gzip과 하둡의 바이너리 시퀀스 파일 포맷)으로 알려진 파일들은 우선 압축을 해제한다.


touchz


hdfs dfs -touchz FILE [FILE ...]
길이가 0인 파일을 생성한다. 만약 길이가 0이 아닌 파일이 이미 존재하면 에러가 발생한다.


하둡 (Hadoop) 더 알아보기

맵리듀스의 개념

하둡의 핵심인 맵(Map)과 리듀스(Reduce)의 기본 개념을 이해해 보세요.

하둡 설치부터 테스트까지 정리

하둡을 설치하는 방법부터 간단한 테스트까지 확인해 보세요. 

하둡 프로그래밍을 위한 이클립스 플러그인 설정

하둡 개발 환경 구축을 위한 이클립스 플러그인 설정 방법입니다.

하둡 프로그래밍을 위한 이클립스 설정

하둡 개발 환경을 이클립스에 직접 설정해 보세요.

하둡 로컬에서 실행

하둡을 Pseudo Mode가 아닌 로컬 환경(Standalone Mode)에서 실행해 보세요.

하둡 관련 기술 - 주키퍼, 피그, HBase

하둡 에코 시스템의 주요 기술인 주키퍼, 피크, HBase에 대한 내용입니다.

하이브(Hive)와 피그(Pig)

하둡 맵리듀스를 보다 편하게 만들어주는 하이브(Hive)와 피그(Pig) 예제입니다.


R 설치와 활용

R에 대한 기본적인 설치와 활용입니다. 하둡과 함께 활용해 보면 어떨까요?

하둡 이외의 빅데이터 분석 기술

하둡 이외에 빅데이터 분석 기술은 어떤 것이 있을까요? Mahout, CEP 등 살펴보세요.

CEP 오픈소스 에스퍼(Esper)

CEP(Complex Event Processing) 기술의 대표적인 오픈소스 에스퍼(Esper)에 대한 내용입니다.

링크드인의 아파치 카프카(Kafka)

실시간 처리를 위한 분산 메시징 시스템 카프카까지 한번 보세요~






Trackback 0 And Comment 0
prev | 1 | next