728x90
반응형

인공지능 50

하둡 1.0 튜토리얼 - (13) 보조정렬

기존 데이터의 문제 지난 포스팅에서 집계한 데이터에는 한가지 문제가 있습니다. 바로 키 값들이 정렬이 안되어 있습니다. 데이터를 조금 더 뽑아보면 문제를 알 수 있습니다. > hadoop fs -cat delay_count_mos/departure-r-00000 | tail -15 마지막 15줄의 데이터를 뽑아보면 다음과 같이 나옵니다. 2007,7307864 2007,8298530 2007,9195615 2008,1247948 2008,10162531 2008,11157278 2008,12263949 2008,2252765 2008,3271969 2008,4220864 2008,5220614 2008,6271014 2008,7253632 2008,8231349 2008,9147061 문제가 보이시나요?..

빅데이터/하둡 2019.07.18

하둡 1.0 튜토리얼 - (12) 다수의 파일 출력

다수의 출력 지난 포스팅에서 -D옵션을 이용해 각각 출발 지연과 도착 지연의 집계를 하나의 jar파일에서 따로 실행하는 법을 공부했습니다. 하지만 이 경우도 귀찮은 점이 있습니다. 매번 커맨드를 돌릴 때 다르게 매개변수를 주어야하고, 출발과 도착의 데이터가 병렬로 처리될 수 없다는 문제점도 있습니다. 이를 위해 하둡에서 다수의 파일 출력을 다루는 법을 공부하겠습니다. Mapper 클래스 먼저 Mapper클래스를 다음과 같이 수정해주었습니다. 파일 이름은 MODelayCountMapper라고 지었습니다. import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Tex..

빅데이터/하둡 2019.07.17

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

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

빅데이터/하둡 2019.07.17

하둡 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

하둡 1.0 튜토리얼 - (6) HDFS 명령어

HDFS 명령어 포맷 HDFS 명령어는 기본적으로 다음과같은 포맷으로 사용합니다. > ./bin/hadoop fs -cmd [args] 우리는 alias를 등록해두었기 때문에 어디서든 hadoop을 ./bin/hadoop과 대체해서 사용하면 됩니다. HDFS의 명령어들은 기본적으로 Unix/Linux의 명령어들과 비슷합니다. 파일 목록 보기 파일을 보는것은 다음과 같이 ls를 사용하면 됩니다. > hadoop fs -ls -ls 뒤에 아무 argument도 주지 않으면 hdfs의 홈디렉토리를 출력하게 됩니다. 위의 결과를 보시면 지난번에 넣어주었던 conf폴더와 워드카운트의 결과값으로 나온 wordcount_output파일이 있는것을 볼 수 있습니다. 파일 용량 확인 파일의 용량을 보는것은 du명령을 사..

빅데이터/하둡 2019.07.12

하둡 1.0 튜토리얼 - (5) 하둡 실행

방화벽 해제 우리가 만들어준 4개의 VM은 각각 통신을 해야합니다. 따라서 각 기기의 방화벽을 해제해주도록 하겠습니다. (VM을 사용하지 않고 호스트 기기에서 접속을 하신다면, 이전 포스팅에서 했던 ssh-copy-id를 사용해 호스트의 ssh 키를 각 VM에 복사하시면 비교적 편하게 작업하실 수 있습니다.) > systemctl stop firewalld 이렇게 하면 root의 비밀번호를 요구하고, 방화벽이 멈추게 됩니다. 하둡 실행 이제 doop01기기에서 하둡을 실행해보도록 하겠습니다. 먼저 하둡을 쉽게 실행할 수 있도록 몇가지 명령어 alias를 등록하겠습니다. 홈 디렉토리에서 .bashrc파일을 열어보겠습니다. 위와같은 텍스트 파일이 나와야합니다. 이 파일 역시 .bash_profile과 비슷한..

빅데이터/하둡 2019.07.12

하둡 1.0 튜토리얼 - (4) 클러스터 구성

하둡 설정 전에 언급한 바와 같이 서버는 4개를 클러스터링 할 예정입니다. 각각의 호스트이름은 다음과 같습니다: doop01 doop02 doop03 doop04 하둡은 기본적으로 두가지로 나뉩니다. 바로 hdfs와 맵리듀스입니다. hdfs는 하둡의 파일시스템의 약자이고 하둡이 실제로 사용하는 파일시스템입니다. hdfs는 네임노드와 데이터노드로 나뉩니다. 맵리듀스는 map과 reduce를 수행하는 작업입니다. 기본적으로는 잡트래커와 태스크트래커로 나뉩니다. 잡트래커는 태스크트래커에게 일을 시키는 역할을 하고 태스크트래커는 잡트래커에게 받은 일을 수행하는 역할을 합니다. 보통은 master가 네임노드와 잡트래커를, slave들이 데이터노드와 태스크트래커를 맡습니다. masters 파일 먼저공통적으로 사용될..

빅데이터/하둡 2019.07.12
728x90
반응형