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로 연동시키는 선택지도 존재합니다.
- Ambari 페이지에서
maria_dev
계정(password:maria_dev
)으로 로그인
2. 우측 테이블 아이콘 클릭 ▶ ‘Files View’
3. user
▶ maria_dev
디렉토리로 이동
4. 우측 상단 ’New Folder’ 버튼 클릭 ▶ movielens
디렉토리 생성
5. movielens
디렉토리로 이동 ▶ 우측 상단 ’Upload’ 버튼을 클릭한 후, 다운로드 받은 파일 중 u.data
를 선택
u.data
가 있는 줄을 선택하고, 상단 탭의 ‘Open’을 클릭하면 해당 데이터를 열람 가능합니다.
쉘에서도 데이터가 HDFS에 제대로 삽입 되었는지 여부를 확인할 수 있습니다.
hdfs dfs -cat movielens/u.data | head -n 10