CloudETL: Scalable Dimensional ETL for Hadoop and Hive

Research output: Book/ReportReportResearch

Abstract

Extract-Transform-Load (ETL) programs process data from sources into data warehouses (DWs). Due to the rapid growth of data volumes, there is an increasing demand for systems that can scale on demand. Recently, much attention has been given to MapReduce which is a framework for highly parallel handling of massive data sets in cloud environments. The MapReduce-based Hive has been proposed as a DBMS-like system for DWs and provides good and scalable analytical features. It is,however, still challenging to do proper dimensional ETL processing with Hive; for example, UPDATEs are not supported which makes handling of slowly changing dimensions (SCDs) very difficult. To remedy this, we here present the cloud-enabled ETL framework CloudETL. CloudETL uses the open source MapReduce implementation Hadoop to parallelize the ETL execution and to process data into Hive. The user defines the ETL process by means of high-level constructs and transformations and does not have to worry about the technical details of MapReduce. CloudETL provides built-in support for different dimensional concepts, including star schemas, snowflake schemas, and SCDs. In the report,we present how CloudETL works. We present different performance optimizations including a purpose specific data placement policy for Hadoop to co-locate data. Further, we present a performance study using realistic data amounts and compare with other cloud-enabled systems. The results show that CloudETL has good scalability and outperforms the dimensional ETL capabilities of Hive both with respect to performance and programmer productivity.
Original languageEnglish
PublisherDepartment of Computer Science, Aalborg University
Number of pages31
Publication statusPublished - 2012
Series1DB Technical Report
VolumeTR-31

Fingerprint

Dive into the research topics of 'CloudETL: Scalable Dimensional ETL for Hadoop and Hive'. Together they form a unique fingerprint.

Cite this