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

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

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

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

 

계속 읽기

Advertisements

[Algorithm] Apriori Algorithm with R

이제 우리는 수치적으로 물품간의 상관관계를 알 필요가 있다.
그러므로써 구매할 물품을 추천해주는 시스템을 구축하는 것이 가능해진다.

이제부터 우리가 이를 위해 사용할 알고리즘이 장바구니(Apriori) 알고리즘이다
(정도현 선배님과 김은정 선배님께 도움을 받았습니다)

이는 장바구니 알고리즘을 google에 검색하였을 때 가장 먼저 접하게 된 알고리즘이다.
그래서 장바구니 알고리즘에 가장 자주 사용되거나 기초가 되는 알고리즘이라고 생각했다.

그렇다면 이 알고리즘은 우리가 하려는 추천시스템에 사용 가능한지 알기 위해 내용을 알아보자.

계속 읽기

[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] 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를 바꿀 수 없기 때문이다.

[Python]Octave to Python! 두번째

python으로 작업하기 두번째이다.

사실 오늘 좀더 많이 진도를 나가고 싶었지만, contour plot에 점찍기가 너무 오래 걸려 많은 양의 코딩을 하진 못했다.

해결하고나니 정말 별거아니라 더 짜증…


먼저 어제에 이어 surface 결과값이다.

왼쪽이 octave, 오른쪽이 python 결과물이다.

당연하지만 둘의 차이점은 크게 느낄 수 없다.

surf를 그리려고 굉장히 많은 시간을 허비했다.

하지만, matplotlib 정식 사이트에서 보여주는 example 덕에 조금이나마 빠르게 해결할 수 있었다.

X축은 theta0가 취한 값, Y축은 theta1가 취한 값, Z축은 theta에 따른 cost값이다.

다음은 대망의 contour plot 이다.

왼쪽이 octave, 오른쪽이 python 결과물이다.

X축과 Y축은 theta를 의미하고 영역은 cost값으로 구분되어 있다.

붉은색 x표시는 최적의 theta값의 위치를 표현한 것이다.


나에게 큰 절망을 준 contour plot…  가운데 점찍는데 한참이 걸렸다.

google에 안쳐본 검색어가 없는거 같다.

결국 stackoverflow가 해결해 주었지만 저걸 보고도 30분간은 씨름했었다.

data2[0,0]과 data2[0][0]의 차이로 error가 계속 발생하였는데 정말 멍청하게도 저걸 의심하지 않았다. 젠장…

다음부턴 best_theta=data2[0] 이런식으로 바로바로 해서 에러를 줄여야지 화나서 안되겠다.

내일은 multiple regression 예제 파일을 바꾸어서 올려보도록 노력하겠습니다.

도움이 된 사이트 :

https://matplotlib.org/

http://stackoverflow.com/questions/28504737/how-can-i-plot-a-single-point-in-matplot-python

이번에 만든 파일 ex1.py :

https://drive.google.com/file/d/0BzyLCuLKF-OGYmd5X09hT1Fkd0E/view?usp=sharing