728x90
반응형

분류 전체보기 204

하둡 1.0 튜토리얼 - (11) 사용자 정의 옵션

Configuration 추가 하둡은 사용자가 여러가지 설정을 추가할 수 있도록 해줍니다. 이전에 작성했던 코드 중 Configuration 클래스를 보셨을 것입니다. 사용자 지정 설정은 이 Configuration설정을 통해 가능합니다. 지난 포스팅에서 작성했던 코드는 출발 지연 데이터와 도착 지연 데이터가 각각 다른 Mapper와 Driver클레스에 구현되었고, 빌드 설정과 빌드 Artifact또한 따로 생성해 주어야 했습니다. 이번 포스팅에서는 이를 설정으로 해결해주겠습니다. Mapper 수정 먼저 새로운 Mapper클래스를 추가하겠습니다. DelayCountMapper.java라고 이름 짓고 아래 코드를 작성해줍니다. public class DelayCountMapper extends Mapper..

빅데이터/하둡 2019.07.17

Java Thread - (1) 기본 개념

Thread란 개념적으로 Thread는 프로그램 내의 Control Flow의 일종입니다. 이는 Process와 비슷한 개념인데, 차이점은 한 어플리케이션의 Thread끼리는 OS Process끼리의 관계보다 더 가까운 개념입니다. Thread는 기본적으로 프로그램의 모든 객체, 인스턴스, static변수들에 접근이 가능합니다. 하지만 Thread들은 각각 다른 local변수들을 가지고 있게 됩니다. Runnable 인터페이스 자바의 모든 실행기능은 Thread와 연관되어있습니다. 기본적으로는 main Thread가 작업들을 수행합니다. 이 Thread는 생성될 때 매개변수를 통해 수행할 작업을 전달받습니다. 이 작업이 바로 Runnable 입니다. 아래는 Runnable 인터페이스의 정의입니다. pub..

하둡 1.0 튜토리얼 - (10) 항공 데이터 분석 2

맵리듀스 작성 먼저 항공 출발 지연 데이터를 조회하는 맵리듀스를 작성하겠습니다. 이 프로그램은 년도별로 얼마나 많은 항공기에 출발지연이 발생했는지를 집계해주는 프로그램입니다. 출발지연의 Mapper 클래스 먼저 출발지연의 Mapper클래스를 작성해주겠습니다. 이전에 언급한 바와 같이 맵과 리듀스는 입력과 출력을 페어로 주고받습니다. 아래의 코드에서 Map의 입력의 Key는 오프셋 즉 Long의 숫자값이고, Value는 운항 데이터의 한줄 전체 Text입니다. 출력의 Key는 운항년도,운항월 형식의 Text이고, Value는 항상 1의 Int값을 출력합니다. import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; ..

빅데이터/하둡 2019.07.15

하둡 1.0 튜토리얼 - (9) 항공 데이터 분석 1

데이터 준비 데이터 설명 이번에는 맵리듀스를 사용해 실제 데이터 분석을 해보려 합니다. 먼저 다음 사이트에서 데이터를 다운받아야 합니다. http://stat-computing.org/dataexpo/2009/the-data.html 위의 링크의 데이터는 미국 내 모든 항공편에 대한 도착과 출발에 대한 세부 정보들을 담은 데이터입니다. 년, 월, 등 시간 및 항공사 정보, 출발시간, 도착시간, 출발지, 도착지 등에 대한 데이터가 들어있습니다. 데이터 다운로드 위의 링크로 들어가면 년도별로 데이터를 다운받을 수 있지만, Shell Script를 사용해 한번에 데이터를 내려받고, 수정하도록 하겠습니다. 수정 내용은, 첫줄의 컬럼정보를 없애는 작업입니다. #!/bin/bash for ((i=1987; i $i..

빅데이터/하둡 2019.07.15

하둡 1.0 튜토리얼 - (8) 맵리듀스

맵리듀스 하둡에서 파일을 분석하고 조회할때는 맵리듀스라는 기술을 사용합니다. JobTracker는 각 TaskTracker에서 Map을 수행할 수 있도록 데이터를 분배하고 Map 프로그램을 건네줍니다. 이때 데이터의 입출력은 항상 페어로 전달됩니다. TaskTracker는 Map 프로그램을 수행하고 결과를 자신의 로컬 디스크에 파일로 떨궈줍니다. 하둡 시스템은 TaskTracker들이 Map수행이 모두 끝날때까지 기다렸다가 파일들을 Reduce를 수행할 TaskTracker들에게 전달합니다. 이 작업을 Shuffle/Sort라고 부릅니다. Reduce를 전달받은 TaskTracker들은 Reduce 프로그램을 수행하고 마지막으로 집계를 한 뒤 최종 파일을 생성합니다. 위의 단계들 중 Map과 Reduce..

빅데이터/하둡 2019.07.14

하둡 1.0 튜토리얼 - (7) HDFS 파일 입출력

환경설정 이번에는 Java 프로그램을 통한 파일 입출력을 해보겠습니다. 먼저 Java언어로 개발을 하기위한 환경설정을 해야합니다. 제가 사용할 환경은 다음과 같습니다: IntelliJ IDEA Community: https://www.jetbrains.com/idea/download/#section=windows Gradle (IntelliJ에서 자동으로 관리) 주의해야할 사항은 Community버전이 아니면 유료라는 것입니다. Gradle의 문법에 대해서는 따로 설명하지 않고 진행하도록 하겠습니다. 프로젝트 생성 IntelliJ IDEA에서 프로젝트를 생성해보겠습니다. IntelliJ를 처음 실행하면 위와같은 화면이 나옵니다. 여기서 Create를 눌러주겠습니다. 위와같은 화면이 나오면 왼쪽 메뉴에서는..

빅데이터/하둡 2019.07.14

PyTorch 4 - 협업필터링

PyTorch를 활용한 협업필터링¶ 이번 포스팅에서는 행렬분해를 사용한 추천시스템 문제를 풀어보려 한다. 그리고 더 일반적인 산경망 모델을 사용해 해당문제를 풀어보겠다. MovieLens 데이터셋은 영화 추천에 자주 활용되는 유명한 데이터셋이다. 이 데이터셋에는 영화 추천 시스템 내의 별점 5점 만점의 평점데이터와 자유 텍스트 태깅 정보가 들어있다. 총 9125개의 영화에 대한 100004개의 평점과 1296개의 태그가 기록되어 있다. 영화 데이터는 https://grouplens.org/datasets/movielens/ 에서 내려받을 수 있다. In [3]: # wget을 사용해 데이터를 내려받는다 !wget http://files.grouplens.org/datasets/movielens/ml-la..

2주차

맵리듀스 복습 맵 단계 위 그림에서는 맵을 수행할 수 있는 기기가 4개 있음 인풋 단계의 데이터를 4개의 블록으로 나누고, Map이라는 Task를 각 기기에 분배해 준다. Map을 수행하는 TaskTracker는 해당 작업을 수행하게 된다. Map을 실제로 짜는것은 개발자의 몫이다 Input을 받아 Output을 내는 각각의 함수를 작성한다. 쌍으로 입력을 받고 로컬에 파일로 저장한다. 셔플 단계 위 함수의 결과를 받아 하둡 시스템이 셔플을 진행한다. 정렬된 리스트를 다시 리듀스 TaskTracker기기에 전달한다. 셔플은 시스템이 알아서 수행해 준다. 리듀스 단계 리듀스 함수는 집계를 하고, 얻어진 결과를 파일로 출력하는 일을 수행한다. 리듀스도 TaskTracker가 수행하는데, 함수는 역시 개발자가..

PyTorch 3 - 데이터 로더, 신경망

DataLoader와 스토캐스틱 경사하강법¶ 딥러닝은 하나의 중요한 알고리즘으로 많이 발전하게 되었다. 바로 스토캐스틱 경사하강법이다. 기존의 경사하강법은 한 epoch에 모든 데이터셋을 한번에 학습시킨다. 스토캐스틱 경사하강법은 이 큰 데이터셋을 여러개로 나누고, 나눠진 데이터의 서브셋 마다 학습을 시킨다. 이것을 기존 경사하강법의 근사치로 보면 될것이다. 이 하나의 서브셋을 배치 또는 미니배치라고 부른다. In [101]: import torch from torch import autograd, nn, optim import torch.nn.functional as F import numpy as np def lin(a,b,x): return a*x+b # 가짜 데이터 생성 def gen_fake_d..

1주차

서론 빅데이터 시대의 도래 1950년대 첫 컴퓨터가 나옴 (폰노이만) - 프로그램 내장 방식 1960년대 운영체제와 프로그래밍 언어 등장 (FORTRAN 및 COBOL) 1964~ 대화형 컴퓨터, 시분할, 다중 프로그래밍 1970년대 고밀도 직접회로, 마이크로 컴퓨터, PC시대 (MS, Apple 설립) 1990년에 www 인터넷, 1995 Java 기기가 개인화되고 데이터가 많아짐 빅데이터 처리 시스템이 필요하다 데이터 생성의 주체 기존에 데이터는 인간이 만들어 냈다. 기기가 보편화되고 센서들(IoT)이 많이 나오면서, 인간 외에도 데이터를 만들어내는 주체가 생겼다. 텍스트 비텍스트 - 숫자, 카테고리, 관계, 오디오, 비디오 등 빅데이터의 특성 (3V) 데이터의 볼륨 (Volume) 테라바이트, 페타..

728x90
반응형