반응형

빅데이터 34

하둡(Hadoop) 데이터 복사, 로컬 및 클러스터간

하둡(Hadoop)에서 데이터 복사하는 방법 HDFS에서 데이터를 복사하는 방법은 아주 다양하다. 하지만 효율적으로 데이터를 복사하는게 중요하다 데이터를 복사하는 다양한 방법 일단 데이터를 복사하는 방법은 다양하다 로컬 클러스터 아래 속성을 통해서 로컬에 있는 데이터를, 클러스터에 있는 데이터를 옮길 수 있다. copyToLocal put get 클러스터 클러스터 클러스터간에 데이터를 옮기기 위해서는 아래와 같이 하면 된다. 클러스터 -> 로컬 -> 클러스터 과연 이렇게 하는 사람이 있을까 싶지만, 이렇게 하는 사람을 내가 보았음 클러스터 -> 클러스터 로 데이터를 옮기는 방법은 한가지가 아니다. cp distcp 두 가지 방법의 차이를 알지 못한다면, 작업에 엄청난 문제가 생길 것이다. 만약 distc..

빅데이터/Hadoop 2017.11.29

하이브(Hive) 테이블 생성

하이브(Hive) 테이블 생성 하이브 테이블이 만약 textfile로 되어 있다면, 테이블을 load하거나, hue에서 테이블을 로딩할때 에러가 발생하는 경우가 있다. malformed ORC 에러가 뜬다면, 하이브 테이블의 타입을 확인할 필요가 있다. 이럴 경우에는 아래와 같이 기존 textfile을 orc테이블의 형태로 생성한 뒤에 export/import를 하면 에러 없이 진행이 된다. 코드

빅데이터/Hive 2017.11.06

[Spark] 스파크에서 외부 라이브러리 사용하는 방법

Spark에서 제공하는 라이브러리 외에도 형태소 분석기나, 기존에 우리가 사용하던 라이브러리를 사용하는 방법에 대해서 설명한다. 클러스터의 모든 슬레이브에 /var/lib/의 이하 폴더에 사용할 라이브러리를 추가해 놓은 상태입니다. spark-shell이나 spark-submit을 할때 아래와 같이 --driver-class-path를 통해 라이브러리를 포함시키면 됩니다. 하지만 하나씩 하는건 무리가 있으니 아래와 같이 실행하면 모든 library를 한번에 import 할 수 있습니다. $ spark-shell --driver-class-path $(echo /var/lib/spark/*.jar | tr ' ' ',') 하지만? 위처럼 하면 아래와 같은 Exception이 발생을 합니다. class의 p..

빅데이터/Spark 2016.11.08

[Cloudera] 하둡 노드 추가하기 (클라우데라 노드 추가)

들어가며 앞서 클러스터를 구축하는 방법에 대해서 설명을 하였다. [Cloudera] 클라우데라 설치하는 방법 - (Linux, Cloudier Manager) 그렇다면 이렇게 구축된 클러스터에 새로운 노드를 추가하기 위해서는 어떤 작업을 진행해야할까에 대해서 이번 글에 적으려고 한다. 막상 클러스트러를 구축할때 처럼만 설정하면 되지 라고 생각하지만, 막상 내가 각 노드에 어떤 내용을 추가했는지 기억이 안난다는 함정이 있다. 그래서 DataNode를 추가하거나 Spark의 WorkerNode를 추가를 할 경우에 어떤 설정 및 설치를 해야하는지 아래 설명한다. 1. 스토리지 추가하기 일단 새로운 노드를 클라우드에서 생성을 한다. 기존 노드들에서도 스토리지를 추가했기 때문에 생성이 완료되면 스토리지를 추가하자..

[Cloudera] 클라우데라 설치하는 방법 - (Linux, Cloudera Manager)

들어가며 Hadoop의 MapReduce와 HDFS 등 Hadoop Ecosystem을 설치하고, 설정을 하는게 매우 번거로운 작업이 많다. 그렇기 때문에 각종 Application을 패키지화 해서 개발자들에게 제공하는 회사들이 등장하기 시작한다. Cloudera와 Hortonworks가 바로 자신들만의 Manager를 통해서 각종 어플리케이션을 배포하고, 설정을 쉽고 빠르게 할 수 있도록 도움을 주고 있다. 그렇기 때문에 결과적으로 Hadoop, Spark, Hive, 그리고 Hue와 같은 기존에는 독립적으로 설치해서 사용했다면, 이제는 Cloudera에서 제공하는 Manager를 통해서 설치를 해보자. Pre-Installation 설치하기 전에는 호스트 등록과, ssh-keygen을 통해 ssh-k..

[Spark] timestamp에서 날짜 추출하는 방법 (month, day, hour)

들어가며 데이터 분석에서 가장 많이, 그리고 자주 사용하는 field가 timestamp의 값이 아닐까 싶다. 그 중에서도 timestamp의 raw데이터를 통해서 새로운 feature를 생성하는 방법이 있다. 예를 들어 날짜별 사용자 방문 수 라고 할때, timestamp의 값에서 우리는 month와 day를 추출해서 새로운 feature의 값으로 사용을 해야 한다. 소스코드 DataFrame의 데이터 타입인 df에서 select의 함수를 통해서 원하는 Column을 추출을 하는 과정이다. timestamp_milli의 값은 ms의 단위의 값이기 때문에 1000을 나눈뒤에 spark에서 제공하는 functions의 라이브러리를 import한 뒤에 사용하면 된다. from_unixtime을 통해 date..

빅데이터/Spark 2016.08.09

[Spark] Row의 Seq Collection으로 RDD, DataFrame 생성하기

들어가며 스파크에서 구현을 하다 보면 각 객체간의 변환(?)이 자유로워야 하는것 같다. 예를 들면 RDD에서 추출한 데이터를 DataFrame으로 생성한다든지, DataFrame에서 여러개의 Row를 추출해서 새로운 RDD를 생성한다는 식의 경우를 말한다. 이번에 당면한 문제는 Json Object의 요소를 저장하고 있는 Seq의 Collection을 갖고 있었고, 이 Collection을 바탕으로 DataFrame의 생성이 필요했다. 이번에는 Seq[org.apache.spark.sql.Row]의 데이터를 RDD와 DataFrame으로 변환하는 방법에 대해서 정리를 해보려고 한다. 소스코드 logData는 org.apache.spark.sql.Row의 값을 갖고 있다. logData에서 field명이 ..

빅데이터/Spark 2016.08.03

[Spark] Json 포맷 처리하기 - Json Object List

들어가며 스파크에서는 CSV, Json, Protocol Buffer, Hadoop에서 지원하는 데이터 포맷 등 다양한 포맷을 지원을 한다. 이번에는 Json파일을 읽어서 스키마를 확인을 하고, 스키마에 있는 필요한 데이터를 추출하는 방법에 대해서 알아보려고 한다. 데이터는 공개되어 있는 tweet 데이터를 사용하였고, tweet데이터에서 내가 필요한 데이터를 추출하기 위한 과정을 소스코드로 작성해 보았습니다. 설명 소스 코드는 tweet의 데이터를 읽어들인 이후에 schema를 확인을 하여 데이터의 포맷이 어떻게 이루어져 있는지 확인을 합니다. (아래 스키마 그림 첨부 했습니다.) 스파크는 lazy execution을 하기 때문에 결과를 확인하기 위해 .take(N)을 사용했습니다. 처음에 tweets..

빅데이터/Spark 2016.08.03
반응형