데이터분석을 위해 AWS 활용하는 시나리오는 세가지 방법이 크게 존재한다.
각 시나리오별 장단점과 필요성은 각자 직면한 환경에 따라 차이가 나기 때문에 우열을 가리는 것은 무의미하다.
데이터 분석을 위한 AWS 시나리오는 여러가지가 존재한다. 가장 먼저 떠오르는 작업 방식은
탐색적 데이터 분석에 적합한 방식으로 S3 적재된 데이터를 CLI나 GUI를 활용하여 꺼내와서 로컬 PC에서 분석한다. 이와 유사하게 개인용으로 드롭박스나 구글 드라이브를 사용하는 경우가 이와 유사하다고 볼 수 있다.
AWS Commmand Line Interface
(AWS CLI)를 운영체제에 설치를 하고 파이썬을 설치한다. 중요한 것은 aws --version
명령어를 쳤을 때 환경저보가 출력되어야 한다.
pip install --upgrade --user awscli
cmd
명령어를 쳤을 때 aws --version
명령어가 실행되려면, 환경변수로 경로(Path)가 파이썬 AWS CLI 모두 추가되어야 한다.S3 버킷에 접근하기 위해서는 AWS에서 발급한 토큰이 필요하다. 통상 AWS Access Key와 AWS Secret Access Key 즉 접근키와 접근비번으로 구성된다.
ap-northeast-2
지역명(Region Name)은 AWS Regions and Endpoints에서 확인이 가능하다. 데이터센터가 위치한 지역과 동일하게 생각하는 것도 한 방법이다. 즉, 데이터센터가 위치한 지역에 있는 특정 컴퓨터에 S3 형태로 데이터가 저장되어 있다.
상기 정보를 CLI의 경우 asw configure
명령어를 실행하고 채워넣거나, S3 브라우저 GUI를 사용하는 경우 메뉴를 찾아 입력시키면 S3에 접속할 수 있다.
AWS S3 버킷 인증키와 S3버킷에서 데이터를 로컬 PC로 가져올 준비가 완료되면 다음으로 데이터를 분석할 환경을 갖춰야 한다. 가장 많이 사용되는 데이터 분석 언어는 R과 파이썬이다. 물론 이 언어를 데이터 분석 엔진으로 사용을 하지만 개발환경을 갖추어 사용하는 것이 대부분이다. R의 경우 RStudio, 파이썬의 경우 쥬피터가 데이터 분석(과학) 통합개발환경이 된다.
기계학습과 연관된 과학컴퓨팅을 목적으로 파이썬을 사용하는 경우 아나콘다(ANACONDA)를 설치하면 편하다. 파이썬 외에도 기계학습, 데이터 과학을 위해서 분석해야 되는 경우 다수 팩키지를 설치해야 하는데 충돌이나 설치가 되지 않는 문제를 개발사에서 해결하여 제공하기 때문에 성가신 문제는 넘어가고 데이터 분석과 알고리즘 개발에 전념할 수 있다.
결국 클라우드 S3 저장된 데이터 .csv
, .json
, .parquet
파일을 CLI, GUI 인터페이스를 통해 로컬 컴퓨터로 가져와서 R이나 파이썬 모두 데이터프레임 형태로 데이터를 가공하여 분석이나 모형개발 작업을 추진한다.
파이썬의 경우 CLI 상에서 pip install Jupyter
명령어를 실행하면 간단히 쥬피터가 설치된다. 쥬피터 설치가 완료되면 jupyter notebook
명령어를 실행시키면 웹브라우져가 실행되고 데이터를 분석할 수 있는 준비가 모두 완료된다.
*Microsoft Visual C++ 10.0 is required (Unable to find vcvarsall.bat)
오류
pip install Jupyter
설치하면서 오류가 발생되면 Visual C++ Studio 2010 Express를 설치한다.c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin
디렉토리로 이동하여 vcvars32.bat
을 실행한다.R을 데이터분석환경을 사용하는 경우 RStudio를 다운로드 받아 설치한다.
PC에서 S3 데이터를 다운로드 받아 RStudio 혹은 아나콘다 쥬피터 노트북으로 통해 데이터를 분석하거나 알고리즘을 개발하는 경우 특정 디렉토리를 작업 폴더로 지정하는 것이 프로젝트로 관리 측면에서 편리성이 있다.
aws s3 sync . s3://버킷명
명령어를 통해 현재 작업디렉토리와 S3 버킷을 동기화한다.jupyter notebook
실행 명령어를 사용하던가, 쥬피터 노트북 실행 아이콘을 우클릭하여 시작 경로를 설정한다.두번째 시나리오는 로컬 컴퓨터나 노트북이 너무 구형이라 속도가 늦거나 데이터분석으로 인하여 불필요한 소프트웨어를 너무 많이 깔아 더럽히지 않고자 할 때 AWS 클라우드에 분석용 EC2 컴퓨터를 별도로 갖추고 분석작업을 진행하는 경우다.
AWS 클라우드에 생성시킨 R과 RStudio가 설치된 분석전용 컴퓨터에 접속하기 위해서는 크게 세가지 방법이 많이 사용된다.
xgboost
, 텐서플로우, 케라스 설치 등 데이터분석에 필요한 프로그램 추가 삭제 및 사용자 계정관리 등컴퓨터 관리를 위한 SSH 로그인 화면과, 파일질라(FileZilla)를 통해 데이터를 로컬 컴퓨터와 주고 받는 화면, 데이터를 포함한 분석환경이 모두 갖춰진 상태에서 8787포트를 통해 RStudio 서버에 웹인터페이스로 접속하여 분석준비를 모두 마친 상황은 다음과 같다.
AWS에서 제공하는 EC2 컴퓨터는 기본적인 운영체제(리눅스)가 깔려 제공된다. 그외 필요한 설정은 본인이 직접 해야 된다. 마치 새로 컴퓨터를 구매한 상황이라고 보면 된다. 데이터 과학을 위해 기본적으로 설치해야 될 소프트웨어가 제법된다. 이런 경우 R, RStudio 등 필요한 소프트웨어를 설치할 때 도움이 많이 되는 것이 ssh
접속이다.
Services
→ EC2
→ INSTANCES
→ instances
로 따라가면 AWS에서 생성시킨 EC2 인스턴스가 나타나는데, 마우스 우클릭하게 되면 메뉴가 나오는데 Connect
를 클릭하면 다음과 같이 EC2 인스턴스에 접속할 수 있는 방법이 친절하게 나와있다.
EC2 컴퓨터에 FTP가 설치되지 않는 경우 먼저 이를 설치해야 된다.
FTP 프로그램이 설치되어 로컬 컴퓨터에서 EC2 컴퓨터에 sFTP 로 붙을 준비가 되었다. 파일질라(FileZilla)의 sFTP를 사용하는데 주로 전송시 암호화시켜서 전송하여 보안이 높아진다. 그리고 EC2 컴퓨터 SSH와 동일한 22번 포트를 열어 파일을 주고 받는다.
좌측 상단에 Site Manager
를 클릭해서 필요한 설정을 한다.
ubuntu
.pem
파일로 설정루트(root
) 계정 로그인 금지된 root
계정 로그인을 하는 방법은 다음과 같다.
root
권한으로 로그인 할 수 있도록 권한을 수정
sudo nano /etc/ssh/sshd_config
파일을 열고, PermitRootLogin prohibit-password
→ PermitRootLogin yes
로 수정root
비밀번호 설정
sudo passwd
명령어로 ubuntu
유저 비밀번호 설정su root
비밀번호를 입력하여 root
계정으로 바꿈authorized_keys
파일 복사
root
계정 ~/.ssh/authorized_keys
파일을 ~/.ssh/authorized_keys_bak
로 이동
su root
cd ~/.ssh/
mv authorized_keys authorized_keys_bak
ubuntu
계정 /home/ubuntu/.ssh/authorized_keys
파일 복사
cp /home/ubuntu/.ssh/authorized_keys /home/root/.ssh/
.pem
파일을 그대로 사용해서 FileZilla root
계정으로 로그인하기 위함.service sshd restart
ubuntu
계정 대신 root
계정으로 로그인 가능하게 됨.$ ssh -i "vxxxxxxxxx.pem" root@ec2-1xx-xx-22-xxx.ap-northeast-2.compute.amazonaws.com
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-92-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.
root@ip-1xx-xx-22-xxx:~#
rstudio
계정에 root
권한을 부여할 경우 보안에는 다소 문제가 있을 수 있으나 데이터 과학 작업을 수행하는데 나름 편리한 점은 있다. 3
rstudio
계정에 루트(root
) 권한 부여 rstudio
뿐만 아니라 특정 계정에 root
권한을 부여하는 명령어는 다음과 같다.
rstudio
권한 아래 디렉토리 관리
root
, ubuntu
, rstudio
등 여러 계정이 혼재된 경우 rstudio
계정으로 디렉토리 관리를 일원화 하고자 하는 경우 다음 명령어를 사용한다. /home/rstudio/network_data/
디렉토리를 rstudio
관할로 변경시킴.
데이터분석 환경과 데이터를 모두 전달했다면 EC2 컴퓨터에서 데이터분석을 위한 모든 준비가 되었다. EC2 컴퓨터 IP주소 입력를 포트번호 8787
을 붙여 접속하게 되면 친숙한 RStudio 개발환경이 나타난다. 로그인을 해야 되기 때문에 rstudio/rstudio 계정으로 로그인하면 된다.
세번째 시나리오는 데이터도 보안이나 용량문제 등 다양한 사유로 S3에 저장되어 있고, 로컬 컴퓨터나 노트북으로 데이터 분석 작업을 진행하기 곤란한 경우 AWS 클라우드 연산기능(EC2)을 활용하여 데이터 분석 및 모형개발 작업을 수행한다.
데이버 분석 연산을 담당하는 EC2 컴퓨터와 데이터가 저장된 저장소는 S3로 이 둘을 연결해 주는 도구는 s3fs-fuse
로 속도는 많이 느리지만 오랜동안 검증되어 왔고, 다양한 설치방법이 존재하기 때문에 처음 시작하기 딱 좋다. 4 이에 대한 대안으로 goofys를 이용해 AWS S3 mount 해서 사용하기도 있으니 참조한다.
s3fs-fuse
를 설치한다. s3fs-fuse
설치에 필요한 연관 소프트웨어를 우선 설치한다.$ sudo apt-get install build-essential git libfuse-dev libcurl4-openssl-dev libxml2-dev mime-support automake libtool
$ sudo apt-get install pkg-config libssl-dev
$ git clone https://github.com/s3fs-fuse/s3fs-fuse
$ cd s3fs-fuse/
$ ./autogen.sh
$ ./configure --prefix=/usr --with-openssl
$ make
$ sudo make install