Intro
개인적으로 데이터 분석 관련 내용을 정리하자는 차원에서 현재 ADP자격증 공부를 하고 있다.
그런데 보면 알겠지만 분산 처리 시스템 관련 내용이 자주 등장한다.
그 중 하둡이라는 기술은 실무에서 잘 쓰인다고 알려져 있어서 올해 안으로 이에 관해 알아보려 계획했다.
물론 당장은 다른 일정 때문에 실제 환경을 구축하고 사용해보기는 힘들다고 생각한다.
아마 본격적으로 사용하게 된다면 올해 중반쯤에나 조금 다뤄볼 생각이긴 하다.
아무튼 하둡을 다루는 강의를 들어보며 개괄적인 내용과 명령어를 복습 노트를 남긴다는 차원에서 정리해보려 한다.
적어도 이론적인 측면은 알아두면 나중에 편하지 않을까 생각한다.
하둡 시스템이란?
아파치 하둡(Apache Hadoop)이라 불리우는 친구는 HDFS와 맵리듀스를 구현한 시스템(or 플랫폼 기술)이라 보면 된다.
뭐 개념 자체는 저렇게 되어있기는 한데, 문제가 생겼다.
저기서 나오는 HDFS랑 맵리듀스는 무엇인가?
하둡 분산 파일 시스템 혹은 HDFS(Hadoop Distributed File System)는 구글 파일 시스템의 구조와 개념을 구현한 프로젝트라고 한다.
보면 알겠지만 여기서 구글 파일 시스템이라는 용어도 나온다.(용어 하나 아는데 다른 용어가 나오고.. 산 넘어 산....)
구글 파일 시스템(GFS)은 구글에서 쓰이는 파일 저장 및 관리 방식이라 보면 된다.
구글이 대용량 데이터를 다루니까 이를 효과적으로 다루기 위해 분할하고 쪼개서 저장하는 형태라고 보면 된다.
마치 네트워크에서 통신 효율을 위해 IP 데이터그램 쪼개는 과정을 생각하면 될 것 같다.
다시, HDFS를 설명하면, 이 역시 GFS의 방식을 따른다고 보면 되며, 데이터를 효과적으로 저장하기 위한 기술이라 보면 되겠다.
그런데, 비슷한 구조인데 왜 명칭이 다를까하는 의문이 들기도 하다.
관련 정보를 알아보니 HDFS는 GFS 논문을 토대로 오픈소스로 구현한 프로젝트라서 그렇다고 한다.(아니 논문만 보고 역으로 구현을 했다고? 세상에..)
단순히 생각하면, GFS는 회사꺼, HDFS는 오픈소스로 만든거라 알면 되겠다.
이제, 하둡을 이루는 하나의 기술인 맵리듀스를 설명하려 한다.
맵리듀스(MapReduce)는 구글 (또 너냐) 에서 분산 병렬 컴퓨팅으로 대용량 데이터를 처리하기 위해 만든 프레임워크이다.
알고리즘에서 흔히 말하는 분할 정복 기법(Divide & Conquer)을 차용했다 보면 된다.
크게 Map 과 Reduce라는 task로 동작이 이루어져 있다.

Map은 각 입력을 처리하는 기능을 가진다.
Reduce는 결과들을 합치는 역할을 수행한다 보면 된다.
진짜 간단하게 동작을 그리면 위와 같은 형태로 나온다.
(실제론 내부적으로 상세한 테스크가 있다. 여기선 상세한건 다 생략하고 Map과 Reduce에 초첨을 맞춘 형태라 보면 된다.)
아무튼 하둡 시스템도 HDFS하에 맵과 리듀스를 활용해서 파일을 저장하고 관리하게 된다.
필요에 따라서는 파일을 처리하기도 한다.
또한, 단순히 이것만 쓰는 것이 아니라 다른 소프트웨어도 같이 섞어서 쓰기도 한다.
가령 SQL과 유사한 Pig나 Hive라는 언어, 분산 서버의 로그 데이터를 수집하고 저장하기 위한 Chukwa (척와), 분산 환경에서 서버를 조정하는 Zookeeper 등이 있다.(그런데 이상하게 이런 분야에는 동물 관련 용어나 시스템이 많더라)(짐승같이 일하고 코딩하라고 그렇게 붙인 것이 아닐까 (역시 야수의 직업..))

참고로 하둡 로고는 위와 같이 생겼다.(마치 필라X트 맥주를 떠올리게 하는 캐릭터이다)
하둡 주요 명령어
리눅스 시스템을 써본 개발자들은 알겠지만, 하둡의 명령이 이와 거의 비슷하다.
물론 새로운 명령어도 종종 있긴 하나, 대부분의 명령이 거의 hadoop fs -리눅스명령어....
의 꼴로 사용된다.
따라서 LINUX에 익숙하면 금방 써먹을 수 있다고 본다.
모든 명령어를 정리하기는 힘들고, 참고 자료에서 설명했던 주로 사용하는 명령어만 간단히 정리했다.
복사. 외부(리눅스로컬)에서 hadoop으로
hadoop fs -put 원래경로 이동할경로
파일을 분할해서 저장
hadoop fs -D dfs.block.size=바이트단위 -put 원래경로 이동경로
하둡 공간 목록 확인
hadoop fs -ls
하위 dir까지 전부 보여준다.
hadoop fs -ls -R
파일의 블록 개수를 알아볼 수 있는 명령어.
hadoop fsck 파일명
폴더 만들기
hadoop fs -mkdir 디렉토리명or전체주소
해당 주소 dir를 삭제하는 명령어. (내부 요소까지)
hadoop fs -rm -R 주소
파일 복사. hadoop에서 hadoop으로
hadoop fs -cp 원래위치 이동할위치
파일 복사. hadoop에서 로컬(외부)로
hadoop fs -get 원래위치 이동할위치
폴더명에 있는 파일을 합쳐서 파일이름.확장자로
hadoop fs -getmerge 폴더명 파일이름
0바이트의 빈 파일 생성
hadoop fs -touchz 파일명
파일 A가 파일 B로 복사하되, 파일B가 있으면 내용 append
hadoop fs -appendToFile 파일A 파일B
파일 확인
hadoop fs -cat 파일
사용자가 직접 수동입력(-) 가능.
hadoop fs -appendToFile - 파일명
현재 dir의 dir 개수, 파일 개수, 전체 파일 용량 을 순서대로 출력
hadoop fs -count
정규식입력에 해당하는 파일들 다 찾기.
hadoop fs -find / -name 정규식입력 -print
통계 정보. 지정한 명령에 따른, ex %F %u ...
hadoop fs -stat 지정한명령들 파일명
파일 시스템의 경로, 크기, 사용 중인 크기, 사용 가능 공간, 사용률 등 제시
hadoop fs -df 위치
파일의 접근 권한 변경 가능
hadoop fs -chmod 3자리마스킹 파일명
강의 들으면서 속기하듯이 적은 거라서 설명이 엉성하게 되어있다.
필요하면 추가로 검색해서 상세한 기능을 찾아보길 바란다.
마치면서
하둡 기술을 학교에서 배우게 된다면 아마 클라우드 기술과 관련해서 배우게 될 것이다.
혹은 분산컴퓨팅과 관련해서 시스템을 배우는 곳도 있을 것이다.
그런데 우리 학교는 지금 이 과목을 올해 폐강(!!) 해버려서 개인적으로 찾아서 배워야 한다...
따라서 지금처럼 분산 컴퓨팅 관련 기술들을 향후 스스로 찾아서 정리하고 학습할 생각이다.
'데이터분석, 인공지능' 카테고리의 다른 글
[데이터분석] 구글 스프레드시트 활용하기 -1 (0) | 2022.03.03 |
---|---|
[데이터분석] 웹 크롤러 제작하기 -1 (BeautifulSoup 활용) (0) | 2022.03.02 |
[인공지능] VQGAN과 CLIP을 활용한 이미지 생성 프로그램 (0) | 2022.02.21 |
[데이터분석] 유튜브 데이터 분석하기 -2 (0) | 2022.02.11 |
[데이터분석] 유튜브 데이터 분석하기 -1 (1) | 2022.02.01 |