[AWS] R에서 S3의 데이터 가져오기

R studio server를 AWS에 설치하고 가장 큰 문제는 데이터 가져오기이다.

구글 드라이브에 데이터를 올리고 불러오거나 github에 올리고 가져오는 방법도 있지만,
우리는 AWS를 쓰고 있으니 S3를 사용해서 하기로 하자.

참고로 이 글은 AWS에서 기본적으로 제공하는 Linux[centOS]를 기반으로 작성되었다.

 

계속 읽기

Advertisements

[AWS] Request Spot Instances 이용하기

EC2 Instance에서 t2.micro(free tier)만을 사용하다가  R package 중에서 프로젝트에 반드시 필요한 ggplot2나 dplyr을 설치 시 용량 부족을 보고 더 큰 용량으로 옮기려고 했다.

그런데 이런 경우 돈이 들어간다.

그럼 돈을 아끼면서 내용들도 그대로 옮기고 용량만 옮길 방법을 찾다가 발견하였다.

바로, Request Spot Instances 이다.

계속 읽기

[AWS] R에 devtools package 설치하기

dplyr과 arulesViz 설치를 github로 하는 법을 찾다가 devtools라는 패키지가 필요하게 되어 설치하는 법을 찾아 보았다.

결론부터 말하면 dplyr과 arulesViz 설치를 원하면 t2.micro로는 안된다.
용량부족…

이번 설치는 따로 사진 첨부는 없이 커맨드로 진행한다.

일단 command를 킨다.

AWS라면 putty로 연결하면 된다.

sudo yum -y install libcurl libcurl

sudo yum -y install openssl-devel

위의 2 커맨드를 입력하고 나면 Rstudio로 접속하여 다음과 같이 입력한다.

install.packages(“devtool”, type=’source’)

사실 저번 RMySQL & DBI 설치와 매우 흡사하다.

CentOS라는 특수상황에서 이런 경우는 매우 많이 겪을 수 있다.

devtools 라는 패키지를 설치하면 install_github()를 통해 이제 github로 부터 패키지를 다운 받을 수 있게 됨으로 유용하게 사용이 가능하다.

추가로, dplyr나 arulesViz를 설치하려면 AWS는 t2.micro(free tier)보다 용량이 큰 것의  instance를 생성해야한다.

출처 :

https://stackoverflow.com/questions/30394563/cant-install-git2r-nor-devtools-r-packages-on-centos-7-0-64-bit

https://stackoverflow.com/questions/20923209/problems-installing-the-devtools-package

[AWS] Elastic IPs 연결하기

우리는 AWS EC2 Instace를 재시동할 때마다

새로운 Public DNS를 받아와 새로운 주소로 연결하여

기존 설정을 바꾸어야 하는 불편함이 있었다.

이런 불편함을 Elastic IPs로 해소해버리자.

아래와 같은 EC2 Dashboard에서 빨간 상자(Elastic IPs)로 선택된 부분 중 하나로 들어가자.

aws Elastic IPs.png

들어가게 되면 다음과 같은 메인 창에서

aws Elastic IPs main.png

Allocate new address를 눌러 주자.

aws Elastic IPs Allocate_new_address_1

위 화면에서 Allocate를 누르면 아래와 같이 나온다.

aws Elastic IPs Allocate_new_address_2

제대로 address가 나오는 것이 확인이 되면 Close를 누르자.

aws Elastic IPs Associate_address_1.png

다시 Elastic IPs를 눌렀던 화면으로 돌아가게 되면 한개의 IP가 추가된 것을 볼 수 있다.

이제 새로 생성된 IP를 우클릭 혹은 Actions를 누른 후 Assocaite address를 눌러준다.

aws Elastic IPs Associate_address_2.png

그럼 위와 같은 화면에서 Instance를 선택하고 거기에 알맞은 Instance를 골라준다.

그때 Private IP는 방금 생성한 IP로 선택해 준다.

모든 과정이 끝나면 Associate를 눌러주면 된다.

그러면 이제 해당 Instance를 stop시켜도 Public DNS가 사라지지 않음을 볼 수 있게 된다.

[AWS] RMySQL 및 DBI 설치하기

RMySQL과 DBI는 R과 MySQL을 같이 사용하도록 도와주는 패키지이다.

헌데 이 패키지는 install.packages()로는 설치가 되지 않는다.

그러므로 다음과 같은 작업이 필요하다.

그래서 구글에 ‘rmysql install centOS’라고 검색해보았다.

그랬더니 다음과 같은 동영상을 발견할 수 있었다.

위 동영상과 같이 작업하면 문제 없이 설치 될 것이다. 그래도 문서로 작성해 보면,

일단, putty를 이용하여 AWS EC2 instance에 연결한다.

sudo yum install mysql-devel

sudo yum install r-devel

위 두 명령으로 r-devel과 mysql-devel을 설치한다.

다음 R을 실행시키고

R

install.packages(‘DBI’, repos=”http://cran.stat.nus.edu.sg/ “)

위처럼 입력하면 ‘DBI’ 패키지를 설치하게 된다.

다음으로,

install.packages(‘RMySQL’, repos=”http://cran.stat.nus.edu.sg/ “)

위처럼 입력하여 ‘RMySQL’ 패키지를 설치한다.

이로써, 영상은 ‘Done!’ 이라며 끝나게 된다.

하지만, 우리는 여기서 한가지 더 해야한다.

install.pacakges(‘DBI’,  type=’source’)

install.pacakges(‘RMySQL’,  type=’source’)

이렇게만 하여야 library() 함수를 이용해서 불러올 수 있게 된다.

 

우리가 ‘RCurl’ 같은 경우는 install.pacakges(“RCurl”)만 해도 설치가 가능하다.

그런데 왜 ‘RMySQL’, ‘DBI’, ‘dplyr’ 등과 같은 packages는 바로 설치가 안될까?

이유는 cpp로 작성되어 있기 때문이다.

그렇기 때문에 type=’source’로 하여금 install 할 필요가 생긴다.

 

다음에는 위 패키지들로 R에서 MySQL로 연결하는 것을 알아보도록 하자.

[AWS] MySQL 설치 및 HeidiSQL 연결

오늘은 Amazon EC2에서 Instance에 MySQL을 설치하고 HeidiSQL로 연결하는 것을 해보겠다.

참고로, HeidiSQL은 MySQL과 같은 SQL의 관리를 도와주는 프로그램이다.

1. Instance에 MySQL 설치

먼저, putty로 instance에 연결하여 아래 명령어를 실행해준다.

sudo yum install mysql-server

aws mysql install

aws mysql install success

그럼 위와 같이 설치를 완료하게 된다.

그리고 mysql server를 실행해주자.

sudo service mysqld start

aws mysql start

완료시 위와 같은 결과가 뜨게 된다.

설치가 끝나면 보안 설정을 하자.

sudo mysql_secure_installation

위와 같이 명령하면 root 계정에 비밀번호를 설정할 수 있다.

처음부터 enter, Y, (안전한 암호 2번), Y, Y, Y, Y 순서대로 함으로써 안전하게 root비번 설정!

참고 : http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/install-LAMP.html

그리고 매번 서버를 실행할 때 자동 실행 되도록 아래와 같이 명령어를 치자.

sudo chkconfig mysqld on

참고로, /etc/my.cnf를 편집하여 포트를 3306의 기본 포트에서 변경가능하다.

aws mysql my.conf.png

위처럼 포트가 적혀있으면 그 포트로 되고, 적혀있지 않으면 기본으로 3306  포트가 된다.

그리고 아래의 명령어로 mysql을 재시작 해준다.

sudo service mysqld restart

 

2. HeidiSQL 연결

이제 HeidiSQL로 연결을 해보자.

HeidiSQL을 실행하면 아래와 같이 입력해준다.

네트워크 유형은 MySQL(SSH tunnel) 로 설정하고, 호스트명/IP는 자신의 아이피로 한다.

(자신의 아이피는 127.0.0.1 or localhost)

포트는 MySQL 설치시 따로 바꾸지 않았다면 3306포트로 유지

HeidiSQL aws connect

이제 SSH 터널 탭에서 plink.exe의 위치를 잡아주고,

SSH 호스트 + 포트에 자신의 instance의 Public DNS를 넣어준다. 포트는 22로 한다.

plink.exe는 아래 링크를 타고 설치할 수도 있지만, putty 설치를 구글에 검색하면 그 중간에 plink.exe도 다운 받을 수 있다. 아래 링크를 들어가면 다운 받을 수 있다.

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

이제 사용자 명과 암호를 입력하는데 이전에 따로 암호를 설정하지 않았다면 빈칸으로 둔다.

다음 개인 키 파일을 불러온다. 확장자가 .ppk 였던 것으로 불러오면 된다.

pem을 불러오면 에러가 남으로 주의 할 것!

포트는 MySQL포트와 다른 포트를 적어주어야 한다. 3306을 썻다면 3307이나 3308처럼 쓰이지 않는 포트를 넣어주는 것이 중요하다.

HeidiSQL aws connect2

연기를 눌러 연결하면 아래와 같은 창으로 시작하게 될 것이다.

aws heidiSQL Complete

이로써 완료이다.

 

다음 번에는 이렇게 만들어진 SQL과 R로 무엇을 할 수 있는지 알아보도록 하겠다.

[AWS] R Studio Server 구축하기

R studio를 AWS에 설치하여 사용하는 것을 스터디에서 추천해주어서 해보았다.

일단 이글은 아래의 주소를 참조하여 만들었다.

https://aws.amazon.com/ko/blogs/big-data/running-r-on-aws/

amazon에서 올려준 글이므로 여기에 있는 여러 글들은 큰 도움이 된다.

1. AWS EC2 Instance Launch

먼저 로그인을 하면 아래와 같은 페이지가 나온다.

aws main.png

여기서 왼쪽 상단의 service를 누르고, 아래의 빨간 원처럼 ec2를 클릭한다.

aws EC2

그러고 나면 아래의 페이지 처럼 나올 것이다.

aws EC2 main

여기서 Runnig Instances나 왼쪽 목록에서 Instance를 누르면 아래와 같이 나오게 된다.

aws EC2 instance.png

이제 위에 파란 버튼인 Launch instances 버튼을 눌러준다.

aws launch instance

그러면 위처럼 어떤 AMI를 사용할지 나오게 된다.
기본인 Amazon Linux를 Select

다음을 누르면 Type을 선택하도록 되어 있다. 무료로 이용할 것 임으로 우리는 t2.micro를 선택하고 다음으로 넘어간다.

aws ec2 configure instance

그러면 위와 같이 나온다. 이때 위 빨간 상자로 되어 있는  Auto-assign Public IP가 User subnet setting(Enable)이 아닌 Enable로 나오도록 바꾸어 주자.

이는 필자만 겪은 에러일 수도 있는데 region이 seoul일 경우 나중에 Instance가 public IP를 못 찾아오는 현상을 겪었기에 미리 예방하는 차원에서 바꾸어 준다.

그리고 계속 다음 다음 하다보면 Security Group을 설정하도록 되어있다.

aws instance security group

위에 사진처럼 Add Rule을 하여 8787 포트를 열어두자.

이렇게 해놓아야 Rstudio server에 접근이 가능하다.

SSH를 열어 놓은 것은 터미널로 접근하기 위해서 이다.
터미널로 접근하여 Rstudio server를 설치할 것임으로 필수이다!
(자신 외에 다른 사람의 접근을 허락하고 싶지 않은 경우 anywhere을 My IP로 바꿔준다.)

그렇게 Review and Launch를 누르고 다시 Launch를 누르게 되면 key pair를 선택하도록 나온다.

aws instance keypair

key pair는 설치하여도 좋고, 기존의 key pair를 선택하여 사용해도 상관 없다.

다만, 이름을 (username)-key-pair-(region) 식으로 하여 관리하는 것이 용이할 것이다.

여기에 사용한 key pair는 잃어버리지 않도록 주의해야 한다. 이때 key pair는 터미널로 접속하기 위해 필수적으로 필요하다.

체크를 하고 Lauch Instances를 하였다면 이상 없이 아래와 같이 나올 것이다.

aws launch success.png

이제 터미널로 접근할 것이기 때문에 Putty의 설치가 필요하다.

2. Putty 설치

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

위 경로에서 자신의 OS bit에 맞는 것을 선택하여 설치하면 된다.

putty와 puttygen은 이 필요함으로 2개만 설치하여도 무관하다.

우선, puttygen을 실행한다.

puttygen.png

Load를 눌러 만든 instance에 사용된 key pair를 불러온다.

그뒤 Save private key를 눌러 .pem이라는 확장자로 새로운 key pair가 생기면 성공이다.

자세한 사항은 아래 사이트에 있다.

http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html

이젠 putty로 instance에 연결을 시도하자

일단 이전에 생성한 instance가 running의 상태인지 확인하자.

stop이 되어 있다면 run시켜 주도록 하자.

putty

putty를 실행시키고 Host Name에는

ec2-user@(Public DNS)

ex) ec2-user@ec2-52-79-137-153.ap-northeast-2.compute.amazonaws.com

를 넣어준다.

이 주소는 다시 stop했다가 run할때마다 바뀜으로 모든 사용자가 다르게 가지고 있다. 그럼으로 자신의 instance가 가진 Public DNS로 작성해야한다.

이제 key pair를 연결하자

putty의 왼쪽 목록에서 [connection]-[SSH]-[Auth]로 들어가서 Browse…를 눌러 아까 puttygen으로 만든 .pem 파일을 연결시켜 준다.

putty auth.png

여기서 이전으로 돌아가려면 왼쪽 목록에서 session을 누르면 된다.

session으로 돌아오게 되면 바로 Open을 눌러도 되지만 다음 번에 접속할 수도 있으므로 미리 저장해두자.

이제 Open하여 연결하면 다음과 같은 메시지 창이 뜨는데 예(Y)를 누르고 들어가면 된다.

aws rstudio.png

3. R Studio Server 설치

https://www.rstudio.com/products/rstudio/download-server/

위 주소에서 최신 Rstudio server 설치법을 보고 하였다.

우리는 Redhet/CentOS에 들어가 거기에 맞는 방법을 사용하면 된다.

먼저 R을 설치해야 함으로 다음과 같이 입력한다.

sudo yum install -y R

그리고 R studio Server를 다음과 같이 입력하여 설치한다.

wget https://download2.rstudio.org/rstudio-server-rhel-1.0.143-x86_64.rpm
sudo yum install –nogpgcheck rstudio-server-rhel-1.0.143-x86_64.rpm

설치하고 나면

rstudio-server start

하여 서버를 실행해 주자.

이제 (PublicDNS):8787입력하면 Rstdio 로그인 화면이 뜨게 된다.

ex) http://ec2-52-79-213-121.ap-northeast-2.compute.amazonaws.com:8787

로그인을 하게 되면 아래 처럼 R Studio를 이용할 수 있다.

aws rstudio

로그인을 위해선 계정이 필요한데 터미널로 접속하여

useradd 계정명
echo ‘계정명:패스워드’ | chpasswd

라고 하면 된다.

비번을 바꾸는데 에러가 난다면,

sudo -s

를 입력하고 다시 바꿔보면 된다.

root계정이 아니면 passwd를 바꿀 수 없기 때문이다.