개인(팀) 프로젝트/기타 프로젝트 & 활동

02. 하둡(Hadoop) 활용한 스마트카 파일럿 프로젝트_VM 통합환경 구성

한소희DE 2021. 6. 4. 09:13
나는 오늘, 하둡을 활용한 스마트카 파일럿 프로젝트를 수행하기 위해 필요한 VM을 생성할 것이다.

 

앞서, 어떤 데이터셋을 활용해 어떤 레이어를 구축할 지 간단하게 정리한 포스팅이 있는데, 이를 읽어본다면 오늘 포스팅의 내용을 더 수월히 이해할 수 있을 것이다.

 

⬇ 이전 포스팅 참고 링크

 

01. 하둡(Hadoop) 활용한 스마트카 파일럿 프로젝트_개요

오늘부터는 대망의, 데이터 엔지니어링 파일럿 프로젝트를 진행 할 것이다! 이번 스마트카 파일럿 프로젝트에 대해 간단히 설명하겠다. 이번 프로젝트는 인프런의 강의를 참고하여, 데이터 수

eng-sohee.tistory.com

 

 

그럼 오늘의 포스팅을 시작하도록 하겠다!

 

 

목차

VM 통합환경 구성 개요

필요한 설치 프로그램 설명

리눅스 가상머신 설정

 

 


 

 

 

01. VM 통합환경 구성 개요

나는 2개의 서버를 만들 것이다.

왜 2개의 서버가 필요한가?

 

서버에 사용할 OS

데스크톱에, 2개의 VM을 설치하고, 이 위에 CentOS를 설치할 예정이다.

※ CentOS 설명은 아래 2-3을 참고하자.

 


 

02. 필요한 설치 프로그램 설명

 

2-1. JAVA

개인 윈도우 PC에 빅데이터 개발환경 구성을 위해 설치한다.

JAVA란, 프로그래밍 언어를 뜻한다.

 

2-2. VS Code

개인 윈도우 PC에 빅데이터 개발환경 구성을 위해 설치한다.

VS Code란, 비주얼 스튜디오 코드를 뜻하며, 마이크로소프트에서 개발하고 있는 오픈 소스 에디터를 말한다.

 

2-3. CentOS

개인 윈도우 PC 위 VM에 설치한다.

CentOS란, 레드햇 엔터프라이즈 리눅스와 완전히 호환되는 무료 기업용 리눅스 운영체제를 말한다.

 

2-4. PuTTY

개인 윈도우 PC에 빅데이터 개발환경 구성을 위해 설치한다.

PuTTY란, SSH(Secure Shell), Telnet, TCP 접속을 위한 클라이언트를 뜻한다.  Window환경의 호스트 운영체제에서 다른 운영체제에 CLI(Command Line Interface)환경의 SSH 접속에 편리하다는 특징이 있다.

이는 즉 우리의 윈도우 PC에서, 가상환경 터미널에 원격으로 접속할 때 쓴다.

 

2-5. FileZila

개인 윈도우 PC에 빅데이터 개발환경 구성을 위해 설치한다.

FileZila란, FTP(File Transfer Protocol) 프로그램 중 하나다.

※ FTP: 파일 전송 프로그램

이를 활용하면, 개인 컴퓨터와 웹서버 간 파일을 전달/저장할 때 용이하다. 우리는 데이터파일을 전달할 때 Filezila를 이용할 것이다.

 

2-6. Chrome

개인 윈도우 PC에 빅데이터 개발환경 구성을 위해 설치한다.

구글에서 개발한 웹브라우저. 클라우데라 매니저를 설치해 사용할 때 크롬을 이용하는 것이 편리하기 때문에 크롬 브라우저를 설치해야 한다.

 

2-7. 클라우데라 매니저

개인 윈도우 PC 위 VM에 설치한다.

 

🔥 클라우데라 매니저 설치는 왜 필요한가?

빅데이터는 수집 적재 처리탐색 분석응용 절차를 거치고, 각 레이어마다 프로그램이 달리 사용되기도 한다. 이때 사용하는 소프트웨어를 설치하고 관리하고 모두 모니터링할 수 있도록 돕는다.
주요 기능은 아래와 같다.

1. 하둡에코시스템을 편리하게 설치.삭제.수정.관리
2. 설치한 에코시스템 설정변경.최적화 지원
3. 하드웨어 리소스 및 설치 컴포넌트 상태 모니터링 및 대시보드

 

2-8. 빅데이터 에코 시스템

개인 윈도우 PC 위 VM에 설치한다. 이는 클라우데라 매니저를 이용해 설치를 수행한다.

 


 

03. 리눅스 가상머신 설정

 

사실, 이 강의에서 미리 만들어진 VM을 다운로드해 사용할 수 있는데, 나는 일일이 직접 수행해 만들어보기로 했다. 미리 만들어져 있는 걸 다운받는 것 보다 훨씬 배울 게 많을 것 같다는 생각에서 ! 그래서 꽤나 오랜 시간이 걸렸다...ㅋㅋㅋ 
그 작업 과정을 아주 간단히 요약해 설명해보겠다.

 

 

3-1. 가상 네트워크 설정

가상 네트워크 설정을 위해, Virtual Box를 설치해준다.

다운로드 링크는 아래와 같다.

 

Oracle VM VirtualBox

Welcome to VirtualBox.org! News Flash Important May 17th, 2021We're hiring! Looking for a new challenge? We're hiring a VirtualBox senior developer in 3D area (Europe/Russia/India). New April 29th, 2021VirtualBox 6.1.22 released! Oracle today released a 6.

www.virtualbox.org

 

 

3-1-1. VirtualBox 설치 에러 해결방법

이를 설치해 Server01, Server02라는 가상머신을 만들 건데, 생성과 동시에 에러가 났다.

 

❓ 에러 살펴보기
가상 머신Server01의 세션을 열 수 없습니다. The virtual machine'Server01'has terminated unexpectedly during startup with exit code 1 (0x1). More details may be available in 'C:\Users\sohee\VirtualBox VMs\Server01\Logs\VBoxHardening.log'.결과 코드: E_FAIL (0x80004005)구성 요소: MachineWrap인터페이스: IMachine {f30138d4-e5ea-4b3a-8858-a059de4c93fd}

역시 컴퓨터는 환경설정이 제일 어렵다. 뜨흑. 그래서 나는 또 오늘도 구글링을 한다 ^^.. 구글링 결과, 버츄얼박스를 조금 더 높은 버전으로 설치해보면 될 수 있다고 한다! 그래서 최신버전으로 재설치를 해보았다.

 

설치링크는 아래와 같다.

 

Downloads – Oracle VM VirtualBox

Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt

www.virtualbox.org

 

그 결과 아주 깔끔하게 설치가 됐다. 히힛

그리고 가상환경 내에 CentOS를 설치했다. CentOS를 다운받아서 저장만 하면 된다.

 

 

3-1-2. CentOS 설치 에러 해결 방법

CentOS를 설치해준 뒤, Enter 키를 클릭하면 설치가 되는데, 에러가 발생했다.

 

이 에러는 왜 뜨는지 한참을 찾아봤는데, 매우 허무했...다.

혹시라도 이런 에러가 뜬다면, 운영체제 bit 설정/CPU 설정이 잘 되어있는지 확인하자.

 

나는 운영체제 bit 설정이 잘못 되어 있었다. 그래서 32bit -> 64bit로 수정해주었더니 설치가 잘 되었다.

이런 설치 환경이 뜬다면 성공적으로 설치가 잘 된 것이다.

그 다음 Server01을 클릭하면 정상적으로 CentOS가 작동하는 것을 알 수 있다. 

 

이 이후에는, 설치 과정에서 서버를 생성해 서버 계정을 만들어준다. 

그러면 설정이 모두 완료되었다. 

 

우리는 이제 터미널 작업을 통해, 리눅스 문서 편집기를 활용해, IP 등을 가상머신에 설정해줄 것이다. 리눅스 문서 편집기 관련 포스팅 링크는 아래에 걸어두었으니 참고하자. (내가 쓴 글은 아니고, 어떤 분께서 아주 잘 정리해주셨다.)

 

 

[Linux] 리눅스 문서 편집기 vi 사용법 & 명령어 총정리

파일을 작성하거나 수정하기 위해서는 편집기가 필요합니다. 윈도우에서는 메모장을 편집기의 기본으로 지원하는 반면 리눅스에서는 기본 편집기로 vi 라는 편집기를 지원합니다. vi는 리눅스

coding-factory.tistory.com

 

 

3-2. 고정 IP, 넷마스크 설정

우리는 서버를 총 2개 만들 것이기 때문에, 고정 IP를 각각

192.168.56.101 : 서버01 사용호스트

192.168.56.102 : 서버02 사용호스트

아래와 같이 생성해주어야 한다. 이는 vi 에디터로 수정 및 생성할 수 있다.

 

 

3-3. CentOS 리눅스가 기본값으로 설정한 네트워크 룰 삭제

네트워크 충돌이 발생할 수 있으므로, 충돌을 방지하고자 기본 설정된 네트워크 룰을 삭제해준다.

 

성공적!

 

 

3-4. 고정IP 할당받기 위해 재시작

앞서 설정한 고정 IP에 맞게 Server01, Server02를 지정해주고자 VM을 재시작해준다. (우선은 Server01부터 해보겠다.)

이렇게 하면 Server01에 대한 네트워크 설정이 끝났다.

이제는 PuTTY를 통해 Server01에 접속해 리부팅을 진행할 것이다.

PuTTY 접속

 

reboot 과정

 

 

Host name을 재설정해주어야 한다. 그후 방화벽 및 기타 커널 매개변수를 설정해줘야 한다. (어렵당... 분산환경 서버들 간의 SSH통신을 할 때, 방화벽이 꺼져 있어야만 제대로 작동한다.)

 

 

 

3-5. 메모리 할당

각 Server 별 메모리를 할당해준다. 이때, Server01에는 3584mb, Server02는 3072mb만큼의 메모리를 할당해주었다.

 

 

 

 

3-6. 빅데이터 클러스터(클라우데라 매니저) 설치

 

각 서버에 클라우데라 매니저를 설치해준다.

❓ 에러 살펴보기
에러명: Autorization failed

 

 

클라우데라 매니저 repo를 가져오는 코드를 썼는데, 에러가 났다...ㅠ 뜨흑. 구글링을 시도해보자.

그 결과, 2021년 02월부터 라이센스 이슈 때문에 접근 방법이 바뀌었다는 것을 알게 됐다.

링크는 다음과 같다.

 

 

Cloudera Manager 6 Version and Download Information | 6.x | Cloudera Documentation

As of February 1, 2021, access to Cloudera Manager binaries for production purposes requires authentication. To access the binaries at the locations below, you must first have an active subscription agreement and obtain a license key file along with the re

docs.cloudera.com

 

따라서, 우선적으로 클라우데라에 회원가입 및 로그인을 시도해주자.

회원가입 및 로그인, 다운로드 링크는 아래와 같다.

 

Cloudera Register

 

sso.cloudera.com

 

 

이렇게 에러 해결을 시도했지만, 결과는 또 에러. 접근 방법이 바뀌어서 호환이 잘 되지 않았다. 

클라우데라 매니저 초보에게는 절망적인 순간이 아닐 수 없었다. 크흡.

 

그래서 결국 강의자료에 올라온 서버를 다운받아 저장해 사용하기로 결정했다.

 

 

 

강의자료에 저장된 Server01, Server02를 저장해 접속 결과, 에러를 또또또!!! 마주했다...

컴퓨터가 셧다운이 되었다. 이유를 찾아보니

  1. 로딩 시간 2. 램 3. 방화벽

크게 이 세 가지 이슈 안에서 해당 문제가 발생한다고 한다. 무엇보다도 내 램 기가가 해당 프로젝트를 수행하기에 너무 작아서 그런 듯 하다. 그래서 그 다음 날 바로 램을 구매해 업그레이드했다... ★

 

 

 

노트북 램 셀프업그레이드 현장

 

 

 

결론
우리는 ※운영체제 위에, 우리는 가상머신(하이퍼바이저)를 구성할 수 있다.

이는 리소스 할당 문제(물리 서버 하나에서 여러 애플케이션 실행하면, 리소스 과다 인스턴스가 다른 애플리케이션 성능에 영향을 준다)를 해결하는 대책이다.

단일 물리 서버 CPU에 VM을 실행하면, 일정수준의 보안성도 제공되고 리소스를 효율적으로 사용할 수 있다. 이때 가상머신은 게스트OS를 각각 설치해 운영할 수 있다. (컨테이너는 OS 공유)물리적을 공간을 분할하고 물리 서버자원을 나눌 수 있다. 독립적 가상환경의 서버를 구축하는 것이다.

결과적으로, 우리는 이 운영체제에 각 OS와 필요한 프로그램을 설치하고, PuTTY를 통해 원격제어를 해서 각 서버를 관리해준다. 네트워크나 보안체제를 정의할 수도 있다. 또한 클라우데라매니저를 통해 각 VM에 필요한 하둡에코시스템을 설치 및 관리한다.

 

※ 참고: 운영체제에 대해서 감이 잘 안 온다면, 내 이전 포스팅을 참고하면 좋을 것이다.

⬇ 운영체제 설명 링크

 

 

01. 운영체제란 무엇인가

목차 1. 정보란 무엇인가? 2. 컴퓨터란 무엇인가? 3. 운영체제란 무엇인가? 1. 정보란 무엇인가 칼로드 셰년이 정보에 대해 수학적으로 정의한 것. 불확실성한 상황을 측정한 것을 수치적으로 변환

eng-sohee.tistory.com