HDFS 명령어 및 데이터 삽입 가이드

 

1. 먼저 알아둬야 할 것


중요한 사실 하나는, Hadoop 파일 시스템은 Linux OS 자체의 파일 시스템과는 별도로 운영된다는 점입니다. 즉, HDFS에 올라간 파일들은 ls 같은 명령어로 확인할 수 없고, 파일 경로도 일반적인 파일들과는 다릅니다.

 

HDFS 내의 파일을 조회/생성/삭제하거나 HDFS의 상태를 확인하기 위해선 모든 명령어 앞에 hdfs 를 붙여야 하는데요. 구체적으로 어떤 명령어가 존재하고, 또 어떻게 데이터를 HDFS에 추가하는지를 정리하였습니다.

 

2. HDFS 명령어의 종류


2-1. dfs

파일 시스템을 관리하기 위한 명령어입니다. 일반적인 리눅스 명령어 앞에 hdfs dfs -(또는 hadoop fs -) 붙임으로써 사용 가능하고, HDFS 내의 파일 및 디렉토리를 조회하거나 생성/삭제할 수 있습니다.

# 파일 목록 조회
hdfs dfs -ls

# 파일 내용을 stdout에 출력
hdfs dfs -cat foo.txt

# 파일 복사
hdfs dfs -cp foo.txt boo.txt

# 디렉토리 생성
hdfs dfs -mkdir /dataset

# 파일 이동
hdfs dfs -mv foo.txt boo.txt

# 파일 삭제
hdfs dfs -rm foo.txt

# 디렉토리 삭제
hdfs dfs -rm -r /dataset

# 파일/디렉토리 사이즈 확인
hdfs dfs -count foo.txt

# 파일/디렉토리 권한 수정
hdfs dfs -chmod 775 foo.txt

 

get/put

그리고 앞서 HDFS와 로컬 파일 시스템은 따로 분리되어 있다고 언급했는데요. 한 쪽에서 다른 쪽으로 데이터를 옮겨야 할 때는 get, 그리고 put 명령어를 사용하게 됩니다.

# HDFS의 파일을 로컬 파일 시스템에 복사
hdfs dfs -get boo.txt

# 로컬 파일 시스템의 파일을 HDFS에 복사
hdfs dfs -put foo.txt

 

setrep

특정 파일 또는 디렉토리에 대해 레플리카(replica, 사본) 수를 결정하는 명령어입니다.

# 파일 또는 디렉토리의 replica 개수 설정  
$ hdfs dfs -setrep <number> <path>

# 하위 모든 디렉토리, 파일마다 replica 개수를 동일하게 적용
$ hdfs dfs -setrep <number> -R <path>

 

2-2. Fsck 명령어

HDFS의 상태를 체크하는 명령어 입니다. 확인할 수 있는 정보로는,

  • 데이터 노드의 수
  • 블록의 전체 크기
  • 블록에 저장된 파일/디렉토리의 개수
  • 정상 또는 문제가 발생한 블록의 수
# 지정된 경로의 파일 시스템 상태를 확인
hdfs fsck <path>

 

문제가 발생한 파일 또는 디렉토리가 존재할 경우, -delete 옵션을 이용하여 제거 가능합니다.

hdfs fsck . -delete

 

3. 데이터를 직접 HDFS에 넣어보기


데이터 준비

실습에 사용할 ‘Movie lens‘데이터 셋을 아래 링크로 다운로드 받습니다.

https://files.grouplens.org/datasets/movielens/ml-100k.zip

 

Movie lens‘ 데이터 셋에 대해 간략하게 설명하면, 1700 여가지의 영화에 대해 여러 사용자들이 매긴 평점 리스트입니다.

 

u.data 파일이 본 예제에서 다룰 데이터인데, 각 줄은 유저ID, 영화ID, 평점, timestamp의 4 가지 요소로 구성되어 있습니다.

 

방법 1: hdfs 명령어로 데이터 추가

위에서 소개한 hdfs 명령어를 그대로 활용하여 데이터셋을 업로드하는 방법입니다.

hdfs dfs -mkdir movielens
hdfs dfs -put ml-100k/u.data movielens/
hdfs dfs -ls movielens/

 

데이터 상태를 확인해보기 위해 상위 10개의 레코드를 출력해봅니다.

hdfs dfs -cat movielens/u.data | head -n 10

 

방법 2: Web UI를 통한 HDFS 데이터 삽입

이전 포스트에서 안내한 HDP Sandbox를 이용 중이라면, Ambari 웹페이지를 통해 데이터를 HDFS로 연동시키는 선택지도 존재합니다.

 

  1. Ambari 페이지에서 maria_dev 계정(password: maria_dev)으로 로그인

 

2. 우측 테이블 아이콘 클릭 ▶ ‘Files View

 

3. usermaria_dev 디렉토리로 이동

 

4. 우측 상단 ’New Folder’ 버튼 클릭 ▶ movielens 디렉토리 생성

 

5. movielens 디렉토리로 이동 ▶ 우측 상단 ’Upload’ 버튼을 클릭한 후, 다운로드 받은 파일 중 u.data를 선택

 

u.data가 있는 줄을 선택하고, 상단 탭의 ‘Open’을 클릭하면 해당 데이터를 열람 가능합니다.

 

쉘에서도 데이터가 HDFS에 제대로 삽입 되었는지 여부를 확인할 수 있습니다.

hdfs dfs -cat movielens/u.data | head -n 10

반응형