가진 데이터를 정제하고 분석하는것도 중요하지만 실제 현업에서 업무를 하게되면 대용량의 데이터를 다루기 떄문에 효율적으로 데이터를 수집 및 처리하고, 이 과정을 자동화하고 , 품질이 좋은 데이터를 만들기 위한 작업들도 중요하다고 생각한다. 따라서 단순하게 로컬에서 분석하는것 이상으로, 서버단에서 대용량의 데이터를 어떻게 빠르고 효율적으로 처리 할수있는지 배워보는것은 데이터를 다루는 직무를 희망하는 나에게 의미있는 공부라고 생각해 공부를 시작하게 되었다. 공부는 ICT 이노베이션스퀘어에서 제공하는 데이터 엔지니어링 중급반과정 160H을 활용할 예정이다.
지난번 ELK를 책을 통해 공부를 했었는데 정작 실시간 대용량 로그가 쌓이는 프로젝트가 끝나고 난 뒤라 제대로 써먹어 보지 못했다. 따라서 다양한 방법들을 가볍게 나마 배워보고, 새로운 프로젝트에 들어갔을때 적합한 방법을 심화로 공부해 적용해보는것이 최종 목표이다.
하지만 엔지니어링 영역은 하나의 OS에 컴퓨터를 여러개 만들어야하기 떄문에 어느정도의 컴퓨터 사양을 요구한다. 내 노트북은 6년전에 산 모델이라 RAM,SSD 모두 이번 강의에서 요구하는 최소 수준을 미치지 못하여 추후 작업에 딜레이가 생기거나, 오류가 날수있다. 따라서 이번 강의는 최소한의 기능들만 따라해보고 공부하면서 전체적으로 어떻게 작동하는지 이해정도만 하는데 포커싱을 맞추고 해볼 예정이다.
리눅스 서버를 윈도우에 먼저 설치하고 내 컴퓨터의 자원을 활용할 수 있도록 할당해줄거다. 이후 리눅스 서버
먼저 https://www.virtualbox.org/ 사이트에서 VM virtualBox를 설치한다.
VM virtualBox는 하나의 물리적 컴퓨터(호스트)에서 여러개의 운영 체제(게스트)를 동시에 실행할 수 있도록 만들어주는 가상화 소프트웨어이다. 기존에 게임 프로젝트떄 사용했던 WSL과 비슷한 개념이며, 다른말로 하면 하이퍼바이저다. VM virtualBox 하이퍼바이저를 통해 호스트 os에서 가상머신에게 자원을 할당할 수 있다.
리눅스 이미지는 https://releases.ubuntu.com/jammy/ 해당 사이트에서 ubuntu-22.04.4-live-server-amd64.iso 이미지를 다운받는다.
위와같이 메모리(4GB), 프로세서(4개), 디스크(50GB)를 할당해 생성하고 리눅스 이미지를 할당해서 리눅스 환경을 만들어준다. 이후 과정은 모두 Done으로 넘기거나 , 유저를 설정해주는 과정뿐이라 생략하겠다.
위 사진은 리눅스 환경에 들어왔을떄 사진이다. 이전에 학부 클라우드 수업이랑 게임 서버 운영떄 리눅스 환경을 다뤄본적이 있어 아래 실습은 잘 따라갈 수 있었다.
위 처럼 네트워크 설정 경로에서 vim편집기 .yaml파일로 들어가서 특정 IP 주소를 할당하는 작업을 진행한다. netplam apply 명령어로 네트워크 설정 적용한다. 이렇게 설정하면 putty 나 cmd를 활용해 SSH접근으로 SSH user@hostname 으로 리눅스 서버에 들어갈 수 있다.
나는 이전에 putty 깔아놓아서 putty에 ip를 입력해 접속했다.
리눅스 권한은 기본적으로 rwx이다. 여기서 r은 읽기/w는 쓰기/x는 실행 권한을 나타내며, (r:2^2=4,w:2^1=2,x:2^0=1) 숫자 순서로도 나타낼 수 있다. 또한, 전체는
소유자->그룹 사용자->기타 사용자 순서대로 나타내고 총9자리가 일반적이다. 사진으로 설명을 붙여보자면 다음과 같다.
위 그림과 같이 .profile
파일의 권한은 -rw-r--r--
이다. 따라서 이건 나는
쓰고 읽을
수 있고, 내 그룹
은 쓸수
만 있으며, 타인
도 쓸수
만 있다는 뜻이다. 이것을 간단하게 숫자로 나타내면 소유자(4+2=6) 그룹 사용자(4) 기타 사용자(4) = 644로 나타낼 수 있다.
수업의 내용은 아니지만 추후 보기 편하기 위해 리눅스 환경에서 자주 사용하는 명령어들을 정리해보겠다.
ls(디렉토리 목록)
cd(디렉토리 이동)
pwd(현재경로)
mkdir(새 디렉토리 생성)
redmir(빈 디렉토리 삭제)
rm(파일 및 디렉토리 삭제)
cp(파일 및 디렉토리 복사)
ls -al(모든 파일 자세히)
mv 파일이전이름 파일새로운이름(파일 및 디렉토리 이동 / 이름 변경)
mv file /path/to (디렉토리 이름),
cat file (파일 내용 출력)
more file/less file(파일 내용 페이지 단위로 출력),
head -n 10 file(처음 10줄 출력)
tail-n 10 file(끝 10줄 출력)
grep '찾는단어' file (파일 내용 검색)
echo '단어' > a.txt (a.txt파일로 '단어'를 보냄)
df -h (디스크 사용량) / df -h(특정 디렉토리 디스크 사용량)
free -h(메모리 사용량) / top(실시간 시스템 모니터링)
ps -a/-e/-ef (현재 실행중 프로세스) / uname -a (시스템 정보)
ping ~~ (네트워크 연결상태 확인)
nstart -an (네트워크 연결상태확인)
ifconfig (네트워크 인터페이스 확인)
ip route show (라우팅 테이블 확인)
shutdown -h now : 즉시 종료
shutdown -r now : 즉시 재부팅
halt : 정지
sudo useradd 'username'(새 사용자 추가)
sudo passwd 'username'(비번 변경)
sudo usermod -aG 'groupname' 'username'(사용자에게 그룹 추가)
sudo userdel 'username' (삭제)
Vim 편집기는 텍스트 편집기인데 처음 사용하면 매우매우 익숙하지 않을 수 있다. 기본적인 삽입이나 탈출은 했지만 추가적인 기능들을 사용했을때를 위해 너무나도 정리를 잘해놓으신 분의 블로그 링크를 넣어 놓겠다.
https://m.blog.naver.com/zbqmgldjfh/222086097819
예시로 명령어 모드(:)에서 set nu 를 입력해 숫자를 나오게 하고 944를 입력하면 944번쨰 줄으로 갈 수 있다.
데이터 엔지니어링 수업을 들으면서 기존에 알았다고 생각했던 빵꾸난 개념들을 다시 공부할 수 있었다. 가상머신(VM) , virtualbox 하이퍼바이저 , 원격접속SSH , 리눅스 명령어와 VIM 편집기까지 다시 리마인드 하면서 부족했던 부분의 개념을 더 보완할 수 있었다. 이제는 다음에는 리눅스 서버에 가상환경을 만들고 각종 패키지를 설치한 후, 본격적으로 분석을 어떻게 할지에 대해 배우고 포스팅 해보겠다. 파이팅 !