Showing posts with label R. Show all posts
Showing posts with label R. Show all posts

Thursday, May 5, 2016

[빅데이터] R과 트위터(Twitter) 연동/데이터수집(Crawler) 예제 - OAuth 인증 방법

Data Mining


어제까지만 해도 웹 크롤링(파싱) 작업을 위해
아파치의 Nutch를 이용하려고 이 것 저 것
해보고 막히고 있었는데 오늘 문득 R로도
웹 페이지 파싱 작업을 할 수 있지 않을까
라는 생각을 하게 됐습니다. 만약 그렇게 된다면
어차피 수집 후에 R로 형태소 분석 작업을 해야
되는데 수집까지 R로 된다면 NUTCH, R 따로
관리할 필요 없이 R로만 수집에서 형태소 분석까지
가능하니 언뜻 생각해 봐도 더 좋은 구조가
될 거 같았습니다! 찾아보니 역시나 R에서도
웹 크롤링이 가능했습니다!

oAuth


예전에 다음과 네이버에서도 OAuth를 했었는데
역시나 트위터도 연동을 위해서 OAuth를 통한
인증 과정이 필요했습니다.
혹시나 필요로 할 분들을 위해 다음과 네이버
oAuth 인증 방법 포스팅 글도 공유합니다~


트위터




트위터 개발자 사이트로 들어갑니다.
 

페이지 하단에 아래 메뉴 클릭!


TOOLS -> Manage Your Apps
Create New App

버튼을 클릭하셔야 되는데 만약 트위터 계정이
핸드폰 인증 되어 있지 않다면 아래와 같이
인증 과정을 거치셔야 됩니다.


트위터 홈페이지 -> 로그인 -> Settings -> Mobile

위에 경로로 가시면 핸드폰 인증을 받을 수 있습니다.


Create New App 누르시면 위와 같은 페이지가 뜹니다.
* 표시가 된 건 필수로 입력 하시고, 밑에 서양서 동의 후
Create your Twitter application
 버튼을 누릅니다.


그러면 위와 같이 앱이 생성 됩니다.
지금 위에 화면에는 두 개가 있는 겁니다!
자신이 만든 App을 클릭합니다!


그러면 위와 같은 페이지를 보실 수 있습니다.
보시면 중간에 Consumer Key가 있는데
이 값 외에도 세 개의 값이 더 필요합니다.
아직 할 작업이 남이 있단 얘기가 되겠죠 ㅎ

위의 탭 중에

Keys and Access Tokens

클릭!


하단에 

Create my access token

클릭!


그럼 위와 같이
Access Token, Access Token Secret
값 두 개를 추가로 더 얻을 수 있습니다.
그럼 총 네 개의 값을 얻었고,
이 값으로 Twitter 연동이 가능합니다.

Consumer Key
Consumer Secret
Access Token
Access Token Secret

R



위에 내용이 트위터와 연동한 R 예제입니다. 
보시면 주석으로 인증정보라고 표시한 네 개의
값에 트위터 웹 페이지에서 얻은 값들을
넣어준 후 위에 예제를 실행 주시면 됩니다.

setup_twitter_oauth(consumerKey, consumerSecret, accesstoken, accesstokensecret)

이 부분이 key 값으로 트위터에
연결하는 부분입니다.
연결이 완료 되면 apple의 트위터 계정으로
들어가서 최근 1000건의 글을 읽어 옵니다.
그리고 그 중에 17건만 출력하도록
제일 마지막에 작성했습니다
주석에는 5건이라고 썼는데 무시하세요 ㅎㅎ


17건 중에 8건만 캡처했습니다.

비정형데이터


대충 정의를 해보자면...
SNS 상에 있는 비정형데이터를
수집해오기 위해 트위터를 이용했고,
오늘 트위터의 글을 수집해오는 것까지
성공했습니다. 이제 이 수집된 데이터를
형태소 분석기를 통해 의미있는 데이터를
골라내고, 없앨 건 없애고, 의미 분석을
하기 쉽도록 형태소 분석기를 거챠야 됩니다.

오늘 형태소 분석까지 거치지는 못했지만
R을 통해 수집이 됐으니 분석하는 방법도
조사를 해보면 되겠죠~
그런데 이 형태소 분석기도 R로 실행이
가능한 패키지로 수집과 분석을 모두
R을 통해서 할 수 있는 발판이 오늘
마련된 겁니다 ㅎㅎㅎㅎ

이렇게 하나씩 하나씩 해결해 나가야죠~

Monday, April 25, 2016

[빅데이터] CentOS에 하둡(Hadoop)과 스파크, 자바(Java), 스칼라, 메이븐(Maven), R 설치하기


빅데이터 솔루션 개발을 위해 CentOS가 설치된
Dell 서버가 하나 들어 왔습니다. 분산 처리를
하는 Slave 서버의 사양이 좋을 수록 처리
퍼포먼스가 좋다라고 하니 얼른 환경 설정을
해서 테스트 해보기로 했다.
그렇지만 환경설정이라는 게 단시간 내에
안끝날 거란 걸 너무나도 잘 알기 때문에
비장한 각오로 임했습니다.
이미 회사 서버에는 왠만한 환경은
다 갖춰져 있었고, 설치한 경험이
있어서 전보다는 막힘이 없겠지만
OS가 CentOS로 다른 것이라
OS dependency 한게 있으면
분명 고생을 할거란 생각도 가지고...

Root 계정이 sudo 명령어 사용할 수 있도록 설정
chmod u+\ /etc/sudoers

그룹 생성
sudo groupadd 그룹

사용자 생성
계정 생성 : sudo useradd 계정
사용자 암호 설정 : passwd 계정
암호 설정 확인 : cat /etc/shadow

그룹에 사용자 추가
sudo gpasswd -a 계정 그룹

설치 파일(.gz) 저장할 디렉토리 생성
su - 계정
​mkdir Downloads



wget 을 이용해서 다운로드 받은 파일들

설치

gz/tar 압축풀기 : tar xzf 압축파일명
zip 압축풀기 : unzip 압축파일명

하둡 설정
$HADOOP_HOME/etc/hadoop에서 아래의
파일들에 대한 환경 설정이 필요.
core-site.xml
hdfs-site.xml
mapred-site.xml
yarn-site.xml

이미 환경 설정이 완료된 내용을
복사해서 적용했다. 이 때 서버ip,
계정 등은 새로 환경 설정을 해주는
서버의 정보로 수정해 주어야 된다.

sudo mkdir -p hadoop_sotre/tmp
sudo mkdir -p hadoop_store/hdfs/namenode
sudo mkdir -p hadoop_store/hdfs/datanode
sudo chown -R 계정:그룹 hadoop_store

$HADOOP_HOME/etc/hadoop/ 경로에 있는
slaves와 masters 파일에 host를 적어준다.
이 때 해당 서버가 slaves(datanode)이면
slaves 파일에 host를 적어주면 되고
마스터(namenode) 서버이면 masters
파일에만 host를 적어주면 됩니다.

$HADOOP_HOME/etc/hadoop/ 에 있는
hadoop-env.sh 를 열어 자바 경로 설정
export JAVA_HOME=자바경로

스파크 설정
$SPARK_HOME/build/zinc-버전/bin/
에서 아래의 명령어 수행한다
./zinc -shudown

$SPARK_HOME 에서 아래의 명령어를
차례로 수행합니다.
export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"
./make-distribution.sh --tgz --skip-java-test -Pyarn -Phadoop-2.6 -Dhadoop.version=2.7.1 -Phive -Phive-thriftserver -Dscala-2.10

설치
R 설치를 위해서는 좀 복잡한 과정을 거칩니다.
yum update
sudo mv 0608B895.txt /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
rpm -qa gpg*
sudo rpm -ivh epel-release-6-8.noarch.rpm
sudo yum install npm
sudo yum install R

.bash_profile에 아래 내용 추가
R_HOKME=usr/lib64/R

유별나게 R만 CentOS의 영향을
많이 받아서 설치하는데
애 많이 먹었습니다...

SparkR 설치
$SPARK_HOME/R 에서 아래의 명령어 수행
USE_MAVEN=1 USE_YARN=1 SPARK_YARN_VERSION=2.7.1 SPARK_HADOOP_VERSION=2.7.1 SPARK_VERSION=1.5.1 ./install-dev.sh

host 설정
sudo nano /etc/hosts에서 서버 URL에
해당하는 host를 아래와 같이 지정해 준다.
111.222.333.444 test-server01
111.222.333.555 test-server02

sudo nano /etc/sysconfig/network 에서
작업하는 서버의 HOSTNAME 설정
HOSTNAME=test-server02

SSH 통신을 위한 공개키 공유
공개키가 없는 서버 : ssh 계정@작업서버IP mkdir -p .ssh
공개키가 있는 서버 : cat ~/.ssh/id_rsa.pub | ssh 계정@공개키없는서버IP /cat >> ~/.ssh/authorized_keys'

.bashrc 파일 복사
cat ~/.bashrc | ssh 계정@설정할서버IP 'cat >> ~/.bash_profile'
기존 서버에서는 .bashrc 파일이고, CentOS에서 .bash_profile

.bash_profile 수정 사항 반영
source ~/.bash_profile

주의사항
모든 서버의 하둡 경로는
동일해야 하둡 구동 시
모든 서버에서 하둡 관련
프로세서가 정상적으로
동작합니다.