[이렇게 사용하세요!] Hadoop + Object Storage + Sub Account 연동하여 사용하기

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM
10 min readJan 17, 2020

안녕하세요, 네이버 클라우드 플랫폼입니다.

여러 기업과 산업분야에서빅데이터를 쉽고 빠르게 처리하며 이를 다양하게 활용하는 클라우드 기술이 나날이 주목받고 있습니다.

이번 포스팅은 빅데이터에 관심이 있으신 분들이라면 주목할만한 주제로,

데이터를 기반으로 하는 효율적인 빅데이터 분석이 필요한 경우,

언제 어디서나 데이터를 저장하고, 다운로드할 수 있는 저장 공간이 필요한 경우,

체계적인 자원 관리 및 접근 제어 관리가 필요한 경우,

이와 관련한 복합적인 고민을 하고 있으신 분들께 적합한 컨텐츠로서, 네이버 클라우드 플랫폼의 ‘CloudHadoop+ObjectStorage+SubAccount’를 연동한 ‘빅데이터 서비스’를 소개하고자 합니다.

네이버 클라우드 플랫폼의 Bigdata Service

“CloudHadoop+ObjectStorage+SubAccount”

▶CloudHadoop 상품은 Hadoop, HBase, Spark, Hive, Presto 등의 오픈 소스 프레임워크를 손쉽게 구축할 수 있습니다.

Object Storage 상품은 안전한 보관이 필요하거나, 대용량 데이터를 저장하는데 활용할 수 있으며, 제공되는 API를 사용하여 서버 데이터의 백업 및 복구 용도로도 활용할 수 있습니다.

▶SubAccont상품은 사용자를 서브 계정으로 등록하고, 특정 서비스에 대한 권한을 부여할 수 있습니다. 등록된 내부 사용자는 권한을 부여 받은 서비스에 대해 주 계정과 동일하게 서비스를 이용할 수 있습니다.

※더욱 자세한 서비스 소개는 아래의 링크에서 확인 가능합니다!

SubAccount: https://www.ncloud.com/product/management/subAccount

ObjectStorage: https://www.ncloud.com/product/storage/objectStorage

CloudHadoop: https://www.ncloud.com/product/analytics/cloudHadoop

이번 시간에는 SubAccount 계정을 생성하고, 필요한 권한만 부여한 후, 데이터 파일을 ObjectStorage에 데이터 업로드 및 CloudHadoop에서 Hue와 Zeppelin에서 데이터를 조회한 뒤 작업자 노드 수를 변경 확인하는 시나리오로 네이버 클라우드의 상품을 소개해드리겠습니다.

SubAccount 생성 및 정책 추가

Sub Accounts 상품에서 서브 계정 생성 버튼을 눌러 계정을 생성합니다. 이때 Object Storage에 접근하기 위한 API Key를 사용하기 위해 API Gateway Access를 선택 합니다.

서브 계정이 생성 되면 CloudHadoop의 NCP_CLOUD_HADOOP_MANAGER와 Object Storage의 NCP_OBJECT_STORAGE_MANAGER 정책을 추가합니다.

그리고 ACG 변경 관리를 위해 NCP_SERVER_MANAGER도 같이 추가합니다.

API Key 탭에서 Object Storage에 접근하기 위한 API 인증키를 생성 및 확인 합니다.

해당 SubAcccount로 접속합니다.

해당 계정에 설정된 정책으로 허가된 서비스들만 사용 가능합니다.

ObjectStorage 버킷 생성

ObjectStorage에서 버킷을 하나 생성합니다.

생성된 버킷은 Bucket Management 좌측에서 확인 할 수 있습니다.

Cloud Hadoop클러스터 생성

먼저 Cloud Hadoop 클러스터 생성 버튼을 눌러 클러스터를 생성페이지로 이동합니다.

클러스터 설정 단계에서는 클러스터 이름, 버전, Type, 관리자 계정명/패스워드가 필요합니다.

(여기서 ACG는 자동으로 생성되니 참고바랍니다.)

관련 정보들을 입력하고 다음을 눌러 이동합니다.

위에서 생성한 Object Storage, 마스터노드 서버타입, 작업자노드 서버타입 및 개수를 선택하고 다음을 눌러 이동합니다.

기존 인증키를 사용하거나 사용자 인증키를 생성합니다.

최종 확인을 하고 생성 버튼을 눌러 생성합니다.

Object Storage 데이터 업로드

먼저 aws cli를 설치합니다.

sudo yum install python3 -y sudo pip3 install awscli==1.15.85

aws configure 명령에서 access key, secret key를 입력하여 aws s3 API를 사하여 네이버 클라우드 플랫폼의 Object Storage로 접근하기 위한 준비를 합니다.

Instarcart(미국의 온라인 기반 신선 식품 배송 서비스)에서 Last Order의 Product를 예측하는 문제로 공개된 데이터 세트를 다운로드 합니다.

https://www.instacart.com/datasets/grocery-shopping-2017

다운로드 받은 압축 파일을 해제하고 위에서 생성한 Object Storage에 데이터 세트를 업로드 합니다.

tar -xvzf instacart_online_grocery_shopping_2017_05_01.tar.gz aws — endpoint-url=https://kr.object.ncloudstorage.com s3 cp ./orders.csv s3://ncp-bigdata/dataset/instacart/raw/orders/orders.csv

네이버 클라우드 플랫폼의 ObjectStorage는 AWS S3의 endpoint만 변경하여 파일 업로드가 가능합니다.

aws — endpoint-url=https://kr.object.ncloudstorage.com s3 cp ./orders.csv s3://ncp-bigdata/dataset/instacart/raw/orders/orders.csv

데이터 조회

Cloud Hadoop 생성이 완료되면, Ambari, Hue, Zeppelin에 접속하기 위한 포트를 ACG에 추가합니다.

Ambari에 접속(8080 port) 하여 클러스터 모니터링 확인이 가능합니다.

Hue에 접속(8000 port)하여, Hive 쿼리로 instacart 데이터베이스를 생성하고, orders 테이블을 생성합니다.

샘플 데이터를 조회해 봅니다.

Zeppelin에 접속(9995 port) 합니다.

Notebook을 새로 생성하고, Spark SQL을 통해 Hive 메타스토어에 등록된 orders 테이블을 조회합니다. (여기서는 업로드된 csv 파일을 대상으로 단순 분석만 하겠습니다.)

Orders테이블

orders 테이블에서 days_since_prior는 마지막 주문을 한지 얼마나 지났는지 최대 30일까지 표시한 컬럼이고, order_number는 해당 유저의 주문 횟수입니다.

그럼 주문 횟수가 많아질수록 재주문까지 걸리는 기간이 짧아지는지 가정을 하고 확인해보겠습니다.

%spark2.sql 
SELECT order_number, AVG(days_since_prior_order)
FROM instacart.orders
WHERE 1=1
AND order_number IS NOT NULL
GROUP BY order_number
ORDER BY order_number

차트를 보면 유저별 주문 순번과 재 주문 경과된 시간 관계가 주문 횟수가 많은 고객은 재주문 경과 일수가 짧은 것으로 간단하게 추측해 볼 수 있습니다. ObjectStorage를 사용하면 HDFS대비 성능은 떨어지지만 클러스터 종료 후 필요시 다시 생성하여 동일한 데이터를 조회 가능하기 때문에 유용합니다. (참고로 Hive 메타스토어를 별도로 분리하지 않았기 때문에 신규 생성시 Hive DDL을 실행해야 하며, Zepplin Notebook도 신규로 import해줘야 합니다.)

CloudHadoop을 사용해서 Hue에서 생성한 Hive 테이블을 Zeppelin에서 간단한 Spark SQL로 조회하여 간단하게 차트로 시각화 해보았습니다.

데이터 분석은 간략하게 이정도로 마무리 하겠습니다.

노드 수 변경

CloudHadoop은 유연하게 노드 수 변경이 가능합니다. 노드 수 변경을 눌러 4개에서 6개로 2개의 데이터 노드를 추가 합니다.

작업자 노드 추가가 완료되면 노드가 증가된 부분 확인 할 수 있습니다.

글을 마무리하며

네이버 클라우드 플랫폼의 SubAccount를 사용하면 정책을 통한 자원 관리가 가능하며, CloudHadoop을 사용해서 손쉽게 Hadoop 클러스터를 구축 및 ObjectStorage의 데이터를 기반으로 하는 빅데이터 분석을 할 수 있어 클러스터 구축에 들어가는 비용 및 시간을 절약 할 수 있습니다.

또한 네이버 클라우드 플랫폼의 안정적인 인프라 서비스를 바탕으로 서비스를 필요한 만큼만 사용하고 이에 대한 비용을 지불할 수 있는 방법을 제공하고 있기 때문에 비용 효율적으로 사용 가능합니다.

끝까지 읽어 주셔서 감사합니다.

--

--

NAVER CLOUD PLATFORM
NAVER CLOUD PLATFORM

We provide cloud-based information technology services for industry leaders from startups to enterprises.