728x90
반응형

전체 글 206

3주차 - 2

Yarn 얀의 이름은 Yet Another Resource Negotiator의 약자이다. 얀은 한마디로 하둡의 리소스를 관리하고 관장하는 시스템이다. 얀의 등장에 의해 하둡은 큰 아키텍쳐의 변화가 생겼다. 1.0에서는 HDFS와 MapReduce만 있는 구조였지만, 얀의 리소스 매니저가 다른 어플리케이션도 지원하면서, 여러 어플리케이션이 HDFS를 접근할 수 있게 되었다. 이 때문에 하둡 위에 Spark나 Hbase와 같은 시스템들이 올라갈 수 있는것이다. HDFS의 일이 파일을 읽고 쓰는 일이었다면, 얀의 일은 자원을 요청하고 할당하는 일이다. 하지만 이는 사용자(개발자)가 해주지 않고, 시스템이 알아서 해주는 것이다. 얀 어플리케이션은 클라이언트로부터 요청을 받으면 먼저 리소스매니저에게 전달 된다...

3주차 - 1

하둡 스트리밍 하둡 스트리밍으로 맵리듀스를 처리할 때와의 근본적인 차이점은, 하둡 스트리밍은 맵과 리듀스 작업 중간에 워커의 로컬 디스크에 쓰기를 하지 않는다. 유닉스의 stdin stdout을 중간 연산에 사용한다. HDFS 파일시스템의 기본 연산은 file io (read/write) 이다. 하지만 hdfs는 기본적으로 write once, read many를 지향하는 구조이다. 데이터가 한번 쓰이면, 중간에 붙이는 것은 불가능하고, 끝에 붙이는 것만 가능하다. 따라서 저장은 한번 하고, 분석 작업을 할 때 많이 읽을 수 있게 하기 위한 구조라는 것이다. HDFS의 가장 중요한 설계 원칙 중 하나는 Fault-Tolerance이다. 따라서 하나의 노드에 장애가 발생했을 때, 다른 노드에서 같은 데이터..

스파크 튜토리얼 - (1) 스파크 로컬모드 설치

스파크 아파치 스파크는 하둡 맵리듀스의 단점을 보완하고자 개발된 플랫폼 입니다. 메모리 베이스로 데이터를 처리하기 때문에 파일기반인 하둡보다 빠르고, DAG를 이용한 데이터의 흐름을 먼저 계산하기 때문에 복잡한 계산을 할 때 역시 하둡의 맵리듀스보다 빠른 경우가 많습니다. 환경설정 저는 VirtualBox에 linux OS (CentOS 7)를 별도로 깔아 사용하였습니다. 또한 Python역시 기존 OS에 설치되어있는 3.6버전을 사용하였습니다. 자바 설치 스파크는 JVM기반인 Scala로 만들어져 있습니다. 따라서 스파크에서 무언가를 하려면 Java가 설치되어있어야 합니다. 자바는 다음 링크에서 다운받아 설치해주시면 됩니다. (링크는 java 8버전 입니다.) https://www.oracle.com/..

하둡 2.0 튜토리얼 - (11) 스쿱 데이터 임포트

데이터 저는 지난번 hive 포스팅에서 설정해 두었던 로컬 기기의 MySQL서버를 사용하겠습니다. 그리고 데이터는 하둡 1.0에서 사용했던 carriers.csv파일을 사용합니다. 이 데이터에 관련된 정보는 아래의 포스팅에서 찾아보실 수 있습니다. https://jyoondev.tistory.com/57 carrier.csv파일을 조금 다른식으로 고쳤습니다. 아래 파이썬 스크립트를 이용하면, ","를 모두 지우게 되고, 컬럼 사이를 \t를 사용해 나누게 됩니다. with open("carriers.csv", 'r') as in_file, \ open("carriers_new.csv", 'w') as out_file: for line in in_file.readlines()[1:]: line = line...

하둡 2.0 튜토리얼 - (10) 아파치 스쿱 설치

아파치 스쿱 하이브가 하둡에 있는 파일을 SQL을 사용해 접근하게 해주는 인터페이스 역할을 했다면, 스쿱은 기존에 있던 RDB에서 하둡으로 파일을 끌어오거나 내보내주는 역할을 하는 시스템입니다. 비지니스 로직 측면에서 보면, 하둡과 같은 시스템이 기존에 있던 RDB들에 있는 데이터를 고려를 안할 수가 없기 때문에 RDB에서 데이터를 가져오거나, 하둡에 있는 데이터들과 조인을 해 분석을 하는 측면에서 꼭 필요한 시스템입니다. 스쿱 설치 먼저 스쿱을 설치하기 위해 다음 링크에서 다운로드를 받겠습니다. http://mirror.apache-kr.org/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz > wget http://mirror.apache-kr.org/sqoop..

하둡 2.0 튜토리얼 - (9) 하이브 QL

하이브 QL 하이브는 하둡에 있는 파일(데이터)들을 SQL을 사용해 조회하고 분석할 수 있게 해줍니다. 지난 포스팅에서 설치한 하이브로 기본적인 데이터 조회를 해보도록 하겠습니다. 데이터베이스 만들기 먼저 데이터베이스를 만들어보겠습니다. hive명령어로 실행한 뒤 다음 MySQL을 입력해 항공 데이터베이스를 생성합니다. (테이블에 대한 Comment는 제외했습니다.) hive> CREATE TABLE airline_delay(Year INT, Month INT, DayOfMonth INT, DayOfWeek INT, DepTime INT, CRSDepTime INT, ArrTime INT, CRSArrTime INT, UniqueCarrier STRING, FlightNum INT, TailNum STR..

하둡 2.0 튜토리얼 - (8) 하이브 MySQL 메타스토어

MySQL 메타스토어 MySQL 설치 MySQL설치법은 운영체제마다 다르고, 다른곳에도 자료가 많으니 따로 정리하지 않겠습니다. 저는 호스트 기기에 MySQL을 따로 설치하였습니다. MySQL config 수정 아래 방법은 호스트 기기 리눅스 기준입니다. /etc/mysql/mysql.conf.d/mysqld.cnf 파일을 열어 아래 부분을 수정해줍니다. 이는 localhost를 사용하지 않고 외부 접속을 허용하는 것입니다. (위의 부분 앞에 #를 사용해 주석처리 해준것입니다.) #bind-address = 127.0.0.1 혹시 방화벽에 의해 포트가 막힐수도 있으니, 해당 문제는 포트를 열어 해결해 주시기 바랍니다. 위를 수정하셨으면 mysql을 재시작합니다. > /etc/init.d/mysql res..

하둡 2.0 튜토리얼 - (7) 아파치 하이브 설치

하이브 하둡은 자바 기반으로 되어있습니다. 그리고 파이썬이나 루비와 같은 스크립트 언어로도 접근이 가능합니다. 하지만 보통 데이터를 만지는 사람들은 기존 RDBMS를 만지던 데이터 분석가들이나 DBA에 익숙한 사람들일 것입니다. 이러한 문제 때문에 페이스북에서 하이브를 개발하게 되었고, 지금은 아파치의 정식 프로젝트가 되었습니다. 설치 하이브를 설치해 보도록 하겠습니다. 다음 링크로 설치하거나 아래 wget으로 설치하신 뒤 scp로 doop01기기로 전송하겠습니다. https://archive.apache.org/dist/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz > wget https://archive.apache.org/dist/hive/hive-2.1.1/apa..

하둡 2.0 튜토리얼 - (6) 얀 명령어

Yarn 얀은 하둡 2.0에서 새로 도입된 시스템으로 Yet Another Resource Manager의 약자입니다. 하둡 1.0에서 클러스터의 마스터노드가 모든 기기들의 리소스 관리를 했지만, 이것이 부족하다고 판단되어 개발된 시스템입니다. 또한 하둡 1.0에서의 마스터노드에 장애가 나면 모든 HDFS의 워커노드 및 데이터노드를 사용할 수 없게 되기 때문에 취약점이 발생합니다. 마스터노드의 장애로 인해 모든 시스템이 쓸모 없어져버리는 것을 SPOF (Single Point of Failiure)라고 합니다. 리소스매니저 얀은 리소스매니저라는 시스템을 내부적으로 사용합니다. 리소스매니저는, 또 컨테이너라는 개념을 활용하는데 이 컨테이너는 리소스의 집합체 입니다. 시스템 입장에서의 리소스란 당연히 CPU..

PyTorch 5 - 딥러닝 기반 협업필터링

딥러닝 기반 협업필터링¶ 이번 포스팅에서는 신경망을 기반으로 한 협업필터링을 구현해본다. 신경망 기반 협업필터링은, 기존의 MF기반 협업필터링과는 조금 다르다. MF기반은 벡터끼리의 내적곱을 활용하지만, 신경망 기반은 비선형 활성함수(relu)를 사용하게 된다. In [43]: # 패키지 import from pathlib import Path import pandas as pd import numpy as np In [44]: data = pd.read_csv('./ml-latest-small/ratings.csv') data.head() Out[44]: userId movieId rating timestamp 0 1 1 4.0 964982703 1 1 3 4.0 964981247 2 1 6 4.0 9..

728x90
반응형