Introduction to Hadoop on Windows Azure
Apache Hadoop 기반의 Azure 서비스는 클라우드 상에 클러스터들을 준비하고 배포하는 서비스로 빅 데이터를 관리하고, 분석하고, 결과를 리포팅하기 위해 설계된 프레임워크를 제공한다.
“빅 데이터”는 점점 더 빠른 속도로 커지고 있는 데이터 볼륨이며, 구조화되지 않은 형식과 다양한 의미적인 변수들을 가지는 것을 의미한다. 빅 데이터 컬렉션 자체가 기업에 의미를 가지는 것은 아니며, 의미를 가지기 위해서는 다양한 소스들로부터 수집되고, 다양하게 조합되고, 정제되고, 분석되고, 액세스가 가능하도록 지능적이고, 통찰력이 있는 형식으로 제공되어야 한다.
Apache Hadoop 는 빅 데이터를 관리하고 분석하기 위한 장치들을 가지는 프레임워크로 HDFS (Hadoop Distributed File System) 로 신뢰할 수 있는 저장소를 제공하는 것이 가장 중요한 기능이며, 저장된 데이터를 병렬로 처리하고 분석하기 위한 간단한 MapReduce프로그램 모델을 제공하고 있다. HDFS는 높은 가용성을 가지는 시스템으로 하드웨어 오류 문제를 해결하기 위해서 데이터 복제 기능을 사용하고 있다.
다양한 소스로부터 비 정형화 데이터를 분석하는데 발생하는 분석의 복잡성을 단순화 시키기 위해서 MapReduce 프로그램 모델은 Map 과 작업의 경감을 위한 추상화를 제공한다. 모든 데이터를 Key-Value 의 집합으로 계산할 수 있는 모든 방법이 가능하도록 지원하므로 입력과 출력이 되는 파일은 모두 Key-Value 쌍의 데이터 집합이어야 한다. 그리고 Pig 와 Hive 와 같은 Hadoop 과 연계된 다른 프로젝트들은 HDFS 와 MapReduce 를 기반으로 구성되어 있고, 이런 데이터들에 대한 warehousing 과 mining 뿐만 아니라 질의나 데이터의 흐름 제어와 같은 기능들에 대한 높은 추상화를 제공하고 있다. 물론 End to End 관리도 제공하고 있다.
클라우드 서비스로서 Azure 에서 Hadoop을 구현하는 것은 HDFS/MapReduce 프레임워크를 쉽게, 보다 확장성 있게, 비용 효율적으로 구성할 수 있다. Hadoop 작업을 구성하고, 실행하고, 클러스터들에 배포하는데 필요한 자바스크립트와 Hive 콘솔을 제공하고 있다. 이렇게 단순화된 자바스크립트 접근 방식은 IT 전문가들과 개발자 그룹들이 Hadoop 프레임워크에 접근하는 경로를 제공함으로써 빅 데이터를 관리하고 분석하는 것을 단순화 시켜 준다.
게다가 Hadoop 과 연계되는 생태계 프로젝트들 (echo systems) 은 Excel, SQL Server Analysis/Reporting Services 등과 같은 BI 툴과 통합될 수 있도록 ODBC 드라이버들을 제공함으로써 단순화된 End to End 데이터 분석이 가능하도록 지원하고 있다.
여기서는 다음과 같은 Windows Azure 에서 Hadoop ecosystem 에 대해서 알아보고, 실제 사용할 수 있는 시나리오들과 포탈을 둘러보는 것을 정리한다.
Big Data Volume, Velocity, Variety and Variability – 빅 데이터의 품질은 기존의 RDBMS 보다는 Hadoop 과 같은 NoSQL 시스템으로 관리하는 것이 보다 적합하다.
The Hadoop Ecosystem on Windows Azure – Windows Azure 에서의 Hadoop 은 Pig, Hive, Mahout, Pegasus, Sqoop, Flume 들을 구현하고 있고, HDFS 와 MapReduce 프레임워크와 통합된 Excel, SQL Server Analysis/Reporting Services 등의 BI 도구도 제공하고 있다.
Big Data Scenarios for Hadoop on Windows Azure – Windows Azure 에서 Hadoop을 사용하는 접근 방법들의 시나리오를 제공하고 있다.
Getting started with Microsoft Hadoop on Windows Azure –CTP (Community Technology Preview) 버전을 제공하고, Azure Portal 에 대한 Apache Hadoop 기반의 서비스들을 제공한다.
Tour of the Portal – 클러스터들에 대한 배포, 계정관리, 실행되는 샘플들, 상호작용이 가능한 자바스크립트 콘솔들을 제공하고 있다.
Resources for Hadoop on Windows Azure – Azure 에서의 Hadoop에 대한 추가적인 정보나 리소스들을 제공하고 있다.
Big Data : Volume, velocity, Variety and Variability
기존의 RDBMS 구조로는 빅 데이터를 관리하거나 처리할 수 없다. 그 이유는 데이터의 볼륨이 너무 크거나 또는 데이터가 누적되는 속도가 너무 빠르거나 또는 데이터 구조가 비 정형으로 다양하고 의미적인 변동성이 크기 때문이다.
Hadoop 빅 데이터 솔루션은 두 가지 동향에 따른 것으로 첫 번째는 최근 20년간 HDD 의 용량이 극적으로 증가를 했다는 것과 웹 사이트들과 새로운 장치와 인터넷을 기반으로 하는 새로운 세대에 의해서 방대한 데이터가 생성되고 있으며, 모든 사용자의 온라인 행동이 자동화된 추적으로 저장되는 것이고, 두 번째는 이렇게 큰 용량의 디스크에 데이터를 쓰고 읽기 위한 액세스 속도가 따라잡지 못하고 있다는 점이다.
이런 네트워크의 병목 현상을 해결하기 위한 것은 두 가지 주요한 기능이 존재한다. 첫 번째는 여러 곳에 분산된 디스크를 병렬로 처리할 수 있는 분산 구조를 HDFS 로 지원하는 것이고, 두 번째는 가능하면 로컬에 데이터를 접근할 수 있도록 데이터가 저장된 노드로 연산이 요구되는 데이터 처리를 이동시키는 것이다. 향상된 MapReduce 성능은 데이터 지역성으로 알려진 이런 디자인 원칙에 좌우된다. 이런 아이디어는 프로그램으로 데이터를 이동시키는 것이 아니라 데이터가 있는 곳에 프로그램을 이동시켜서 대역폭을 절약하는 것으로 결과적으로는 데이터 세트의 선형적 증가를 MapReduce 프로그램 모델이 확장하는 것과 같다. 데이터 처리 볼륨에 따라서 비례적으로 클러스터의 크기를 증가시키면 동일한 시간에 작업의 실행들을 증가시키거나 감소시킬 수 있다.
데이터가 조직에 유용하게 되는 비율은 앞에서 이야기한 것과 같이 데이터 볼륨의 증가를 따르는 경향이 있으며, 이런 데이터들은 전자 상거래에서 소비자가 클릭을 처리하여 쌓이는 로그와 페이스 북이나 트위터와 같은 SNS 에 의해서 주도되고 있다. 스마트폰과 태블릿 장치의 확산은 온라인 데이터의 생성을 촉발하였다. 그리고 온라인 게임과 과학 장비들은 기존의 RDBMS 가 극복할 수 없는 속도로 데이터를 생성함으로써 상업과 게임 활동에 경쟁적인 우위를 확보하기 위해서는 빠른 응답뿐만 아니라 빠른 데이터의 분석이 필요한 상황이 전개되었기 때문에 이렇게 빠르게 생성되고 거대한 데이터들에 긴밀하게 반응할 수 있는 NoSQL이 필요하며, 빠른 저장 및 검색에 최적화된 Hadoop 과 같은 시스템에 대한 접근이 필요하게 된다.
이렇게 생성된 데이터들은 혼란스러운 상태이며, 기존의 RDBMS 에서 관리할 수 있는 정형적인 구조를 제공하지 않는 형태이다. 예를 들어 SNS 데이터의 경우는 텍스트 기반의 비 정형 데이터이며, 시간이 지나면서 형식이 계속 바뀔 수가 있다. 이런 비 정형 데이터 종류들은 정확한 스키마를 요구하지 않고, 수신한 데이터에 대해서 효율적인 구조를 제공할 수 있는 Hadoop 과 같은 유연한 NoSQL 시스템들이 필요하다. 비 정형 데이터를 정제하는 것은 어플리케이션에서 사용될 비정형 데이터를 요구하는 처리부분에서는 중요한 부분이다. 깨끗하고 양질의 데이터를 보다 쉽게 사용하기 위해서는 데이터 시장에서 경쟁과 특화된 서비스의 제공이 필요하다.
빅 데이터를 해석하는 부분에도 큰 이슈가 발생할 수 있다. 다양성은 광범위한 변화 가능성이 있는 것들을 참조하는 경향이 있는 경우에 적용될 수 있다. 가장 적합한 의미 있는 맥락을 찾는 데 있어서 비 정형 데이터를 해석하는 것은 분석에 있어서 상당한 복잡성을 발생시킬 수 있다.
Hadoop ecosystem on Windows Azure
Azure 에서 Hadoop 은 빅 데이터를 처리하는 MS 의 클라우드 기반 솔루션을 구현하는 프레임워크를 제공한다. Hadoop ecosystem 은 병렬처리 기능들, 다른 HDFS 구조의 최적화, MapReduce 프로그래밍 모델 등을 활용하여 빅 데이터를 분석하고 관리한다.
아래의 그림은 Hadoop Echosystem 의 일부 가능한 구성을 나타낸 것으로 각 기술 요소들을 다음과 같다.
Sqoop, Flume – HDFS 와 통합되어 연관된 데이터 (From RDBMS) 와 로그 데이터 저장을 제공한다.
Hive, Pig – 데이터 처리 와 Warehousing 능력들을 제공한다.
Pegasus – Graph – Mining 능력들을 제공한다.
MS 빅 데이터 솔루션은 SQL Server Analysis/Reporting Services, PowerPivot, Excel 등의 BI 도구들과 통합되어 있다. 이제 각 Echosystem 들에 대해서 개략적인 내용을 알아보도록 하자.
Pig (Data Flow 에 강점)
Pig 는 Hadoop 클러스터들에서 빅 데이터를 처리하는 고급 추상화 플랫폼이며, 데이터 흐름 언어들로 구성되어 있다. 이 언어는 Pig Latin 이라고 불리며 큰 데이터 세트에 대한 질의들을 작성할 수 있고 콘솔을 통해서 수행환경을 제공하고 있다. Pig Latin 프로그램은 MapReduce 프로그램으로 전달할 데이터 세트의 변환들로 구성되어 있다. MapReduce에 비해서 풍부한 데이터 구조들에 대한 추상성을 제공하고 있기 때문에 RDBMS 에 대해서 SQL을 사용하는 것과 같이 Hadoop에 대해서 작업을 수행할 수 있다. 그리고 Pig Latin 은 Java, Python, C#, Javascript 등으로 사용자 정의 함수들 (UDFs)을 작성하여 확장이 가능하다. 추가적인 설명은 여기를 참고하도록 한다.
Hive (SQL Like에 강점)
Hive 는 HDFS 에 저장되는 데이터를 관리하는 분산 데이터 저장소 (Warehouse) 이며 Hadoop 질의 엔진으로 사용되고 있다. Hive 는 SQL 과 같이 인터페이스와 관계형 데이터 모델을 제공하는 강력한 SQL 기술들과 분석을 제공한다. Hive 는 HiveQL 로 불리는 언어를 사용하고, Pig 와 같이 높은 수준의 추상성을 제공하여 MapReduce 작업에 변환된 질의를 처리한다. Hive 는 다른 도구들에 비해서 구조화된 데이터를 사용하는 RDBMS 에 개념적으로 가까운 시나리오를 제공한다. 따라서 비 정형 데이터에는 Pig를 사용하는 것이 더 좋은 선택이다. Azure 의 Hadoop은 Hive에 대한 ODBC Driver를 포함하고 있기 때문에 Excel 과 같은 BI 도구에서 실 시간으로 접근이 가능하다. 추가적인 설명은 여기를 참고하도록 한다.
Mahout 는 단어 그대로 코끼리를 다루는 사람이라는 의미를 가진다. Hadoop 의 로고가 코끼리인 것을 볼 때 Hadoop 프레임워크 기반에 구현된 오픈 소스라는 것을 알 수 있다. Mahout 가 추구하는 것은 기계 학습 라이브러리를 만들기 위한 것으로 MapReduce 패러다임, 클러스터링에 대한 알고리즘, 분류화, 배치기반의 협업 필터 등을 사용하고 있다. Mahout 를 어디에 사용하는 것일까? 빅 데이터 처리에서 중요한 부분은 데이터를 어떻게 모으고, 어떻게 분류하고, 어떻게 조합하여 의미 있는 데이터를 찾아낼지에 대한 것이다. 그런데 정작 엄청난 데이터를 모았다고 해도 이를 직접 관리자가 분류하고, 의미 있는 데이터를 추천하거나 나누는 것은 거의 불가능에 가깝다. 개인적인 생각이기는 하지만 이런 작업을 좀 더 용이하고, 자동화하기 위한 것으로 Mahout 를 이용한 기계학습을 활용할 수 있을 것이라고 본다. 더 자세한 부분은 여기를 참고하도록 한다.
Pegasus 는 Hadoop 기반에서 동작하는 Peta – Scale 그래프 마이닝 시스템이다. 그래프 마이닝은 어떤 패턴이나 규칙이나 그래프의 특성들을 찾아서 데이터를 모으는 작업을 의미한다. 여기서 말하는 그래프라는 것은 집합 내에 존재하는 두 개의 개체들 사이에 존재하는 연결 개체의 집합을 말하는 것으로 이런 형식의 특징은 웹, 컴퓨터, SNS 등에 연계된 링크를 가지는 페이지 등 네트워크 상에 어디든지 존재할 수 있으며, 생물학적 이며 물리적인 시스템들을 포함한다. 빅 데이터의 처리 관점에서 보면 Pegasus는 병렬처리를 통해서 연계된 개체들을 파악하고 데이터를 모으는 부분에 적용될 수 있을 듯 하다. 더 자세한 부분은 여기를 참고하도록 한다.
SQL 이나 다른 정형화된 데이터 저장소등과 같은 관계형 데이터베이스와 Hadoop 간의 데이터를 에 가능하면 효율적으로 데이터를 이동하는 툴로서 외부의 정형화된 데이터 저장소들에서 데이터를 가져와서 HDFS 나 Hive 에 입력해 주는 용도 또는 Hadoop 으로 부터 데이터를 추출하여 외부의 관계형 데이터베이스나 엔터프라이즈 Data warehouse, 또는 다른 형식의 정형화된 데이터 저장소에 저장하는 용도로 사용한다. 더 자세한 부분은 여기를 참고 하도록 한다.
Flume 은 효율적으로 데이터를 수집하고, 통합하고 대량의 로그 데이터를 HDFS 로 이동하는 분산되고 신뢰성있는 서비스라고 보면 된다. Flume 의 아키텍처는 연속적인 데이터의 흐름에 기반하고 있으며 장애조치 및 복구 체계를 신뢰할 수 있도록 조정하는 강력한 시스템을 제공하고 있다. 그리고 분석을 위한 온라인 어플리케이션이 가능하도록 확장할 수 있는 단순한 확장 데이터 모델을 제공하고 있다. 더 자세한 부분은 여기를 참고 하도록 한다.
Excel, PowerPivot, SQL Server Analysis Services, Reporting Services 들과 같은 친숙한 BI 툴 들은 데이터를 추출하고 분석하고 리포트를 생성하는데 ODBC 드라이버를 이용하여 Azure 상의 Hadoop 과 통합되어 있다.Excel 에 대한 Hive ODBC 드라이버와 Add-In 은 Hadoop on Windows Azure Portal 에서 다운로드가 가능하다. 사용방법은 How to connect excel to Hadoop on Windows Azure via HiveODBC를 참고하도록 한다.
Big data scenarios for Hadoop on Windows Azure
Hadoop on Windows Azure 에서 빅 데이터 사례로 제시하는 시나리오는 자주 업데이트가 필요하지 않은 Azure 상의 모든 노드들에 저장된 전체 비 정형 데이터들을 배치 방식으로 특별한 분석을 처리하는 것이다. 이런 조건들은 비즈니스, 과학, 정부 등에서 광범위하고 다양한 활동 등에 적용할 수 있다. 예를 들면 공급 체인들에 대한 모니터링, 금융에 있어서의 의심스러운 거래 패턴들, 공공 서비스나 도구들에 대한 요청 패턴들, 환경 센서들을 통한 물과 공기의 품질들, 도시에서의 범죄 패턴들을 들 수 있다.
Hadoop 은 생성된 이후로 빈번한 갱신이 요구되지 않은 로깅되거나 보관된 대량의 데이터를 자주 읽어 전체적인 분석을 수행하는 경우에 가장 적합하다. 이 시나리오는 Petabytes 단위가 아닌 더 작은 Gigabytes 단위의 데이터를 요구하는 RDBMS 에 의해서 처리되는 것 보다는 좀 더 적합하고 지속적인 업데이트가 발생하고 전체 데이터 세트에서 특정한 데이터 포인트들을 조회하는 경우에 효과적이다. 고정된 구조에 저장되고 조직화된 정형 데이터를 처리하는 경우는 RDBMS 가 훨씬 더 최적화되어 있다. 이에 반해서 MapReduce는 처리 시점에 데이터를 직접 해석하기 때문에 정해진 구조가 없는 비 정형 데이터의 처리에 적합하다.
Getting started with Microsoft Hadoop on Windows Azure
The Hadoop on Windows Azure CTP
현재 Windows Azure 의 Hadoop 서비스는 CTP (Community Technical Preview) 의 초대 기능을 통해서만 사용할 수 있다. CTP의 목적은 Hadoop 기반 서비스의 테스트를 위한 것으로 좀더 친숙해지고 피드백을 필요로 하는 것으로 액세스 권한을 얻기 위해서는 아래와 같이 절차를 따라야 한다.
The portal used by Apache Hadoop – based services for Windows Azure
Azure 상에 구현된 Hadoop 의 구현체는 Portal 에서 새로운 Apache Hadoop 클러스터들을 생성하는 것으로, 클러스터들은 Portal 에 임시적으로 생성이 되고 몇 일 후에는 기간 만료가 된다. 최종 만료 6시간 전에 만료 기간을 확장할 수 있도록 제공되며, 클러스터들에서는 클러스터에 존재하는 데이터나 다른 장소에 존재하는 데이터 처리를 수행한다. 대상 데이터들은 Azure 계정에 연계된 곳에 있거나 FTP 등을 통해서 클러스터로 전송된 것들이다.
이런 임시적인 클러스터를 사용하는 장점은 MapReduce 의 병렬 처리 작업을 수행하는데 필요한 하드웨어의 유지 비용들이 소비되지 않는다는 점이다. 클러스터에 대해서는 만료를 시키거나 기간을 연장해서 사용할 수 있다. Apache Hadoop 배포 솔루션은 Azure 계정이나 관리 중인 하드웨어 등에 배포하는 것이 가능하다.
Getting access to the CTP and deploying an Hadoop cluster.
Azure 상의 Hadoop 에 접근하는 절차는 사이트에 로그인을 하고 Azure 상의 클러스터를 생성하는 것부터 시작한다.
1. 개인 정보와 비즈니스 도메인 및 기술적인 시나리오를 완료하기 위해서 Apache Hadoop for Windows Azure & Windows Server Connection Profile 정보를 설정하여야 한다. 이를 위해서는 Live ID 가 필요하다. (정보를 설정하고 나면 7 영업일 동안의 시간이 주어진다)
2. 개인정보를 설정한 후에는 초대 메일이 전송된다. 이 초대 메시지를 받았으면 HadoopOnAzure.com 사이트로 이동하여 Invite Code를 입력하면 된다. (Live ID 를 이용한 로그인 과정 진행 후)
3. Invite Code 를 입력하고 약관에 동의한 후에 “Enroll” 을 누르면 새로운 계정 등록을 위한 화면이 아래와 같이 진행된다.
옵션으로 설정할 값은 다음과 같다.
DNS Name – 클러스터를 위한 이름을 설정한다. (위의 그림에서는 샘플로 sample8 로 설정)
Cluster Size – 클러스터에 구성할 크기를 설정한다. (위의 그림에서는 작게 3 노드 클러스터로 설정)
Cluster Login – 클러스터 로그인을 위한 사용자 이름과 비밀번호를 설정한다.
4. 필요한 정보가 설정된 후에는 “Request cluster” 를 클릭한다. (오른쪽 아래)
5. 새로운 클러스터를 생성하고 서비스가 시작된다. 대략 이 과정은 10여 분 정도의 시간이 소비되는데 이 시간은 설정한 클러스터와 노드의 수에 따라서 다르다.
Tour of the portal
생성된 클러스터에 로그인을 하면 Azure Portal 의 계정 페이지를 볼 수 있다.
크게 3 개의 섹션으로 구성되어 있으며 각각은 아래와 같은 관리 기능들로 구성되어 있다.
Your Task – 새로운 작업들을 생성하고 기존에 생성하여 수행되고 있는 작업들을 추적할 수 있다.
Your Cluster – Hive 와 Javascript 을 처리할 수 있는 콘솔과 클러스터에 직접 접근할 수 있는 원격 데스크톱, ODBC 나 FTP 연결을 위한 포트 조정, 클러스터의 저장소 관리, 데이터 마켓, 장애 복구, Amazon S3 계정으로 연결 등을 지원하는 몇 가지 도구들을 제공한다.
Manage your Account – 계정의 작업들에 대한 추적 정보, 실행 가능하도록 준비된 샘플들, ODBC 드라이버와 Excel 에 대한 Hive Add-in 과 같은 클라이언트 도구들에 대한 다운로드 등을 제공한다.
Portal 의 각 종 기능들을 확인하기 위해서는 각 아이콘을 클릭하면 된다. 새로운 작업을 만들고, 콘솔의 기능들을 사용하기 위해서는 “Samples” 를 통해서 “Running Jobs with Hadoop on Windows Azure” 토픽을 확인해 보면 된다. 그리고 원격 데스크톱을 이용하면 헤더 노드의 명령 창을 통해서 Hadoop File System 의 명령어를 사용할 수 있다.
Resources for Hadoop on Windows Azure
Microsoft : Hadoop on Windows Azure
Welcome to Hadoop on Windows Azure – Windows Azure 의 Apache Hadoop 기반의 서비스에 대한 미리 보기를 소개하는 페이지
Apache Hadoop-based Services for Windows Azure How To Guide – Windows Azure 상의 Hadoop 에 대한 TechNet wiki 정보 들
Big Data and Windows Azure – Windows Azure 에서 구성할 수 있는 빅 데이터 시나리오를 확인해 볼 수 있는 정보 들
Microsoft : Windows and SQL Database
Windows Azure home page – 시나리오들, 무료 평가판 등록, 어플리케이션 구축을 시작하는데 필요한 개발 툴 및 문서 정보 제공
MSDN SQL Database – SQL 데이터베이스에 대한 MSDN 문서 정보 제공
Management Portal for SQL Database – 클라우드에서 SQL Database 를 쉽게 가볍게 관리할 수 있는 방법을 제공
Adventure Works for SQL Database – SQL Database 의 샘플 데이터베이스 다운로드 제공
Microsoft : Business Intelligence
Microsoft BI PowerPivot – 데이터를 Mashup 하고 탐색하기 위한 강력한 툴에 대한 정보 제공
SQL Server 2012 Analysis Services – 포괄적인 대 기업 규모의 분석 솔루션으로서의 툴에 대한 정보 제공
SQL Server 2012 Reporting – 실 시간 의사 결정을 가능하게 하는 확장이 용이하고 포괄적인 리포팅 툴에 대한 정보 제공
Apache Hadoop – 컴퓨터 클러스터들을 통해서 대량의 데이터를 분산 처리하기 위한 프레임워크를 제공하는 소프트웨어 라이브러리 정보 제공
HDFS – Hadoop 어플리케이션에서 사용하는 저장소 시스템 정보 제공
Map Reduce – 컴퓨터 노드 들의 대량 클러스터에서 광대한 데이터들을 병렬로 신속하게 처리하는 어플리케이션을 작성하기 위한 프레임워크와 프로그래밍 모델 정보 제공
댓글
댓글 쓰기