홍카나의 공부방

[Hadoop] Hive 소개와 작동 방식 본문

Data Engineering/Hadoop

[Hadoop] Hive 소개와 작동 방식

홍문관카페나무 2024. 5. 26. 22:09

 

Apache Hive

 

 

Hive는 HDFS에 저장된 데이터에 대해 SQL 쿼리를 사용하여 데이터를 추출할 수 있게 만들어주는 프로그램이다. 사용자 입장에서는 DW를 사용하는 것처럼 SQL을 이용하면 된다. SQL에 친숙하다면 Hive는 강력한 도구가 될 수 있다. 특히 OLAP 쿼리를 주로 사용한다면 Java로 MapReduce를 작성해서 사용하는 것보다 훨씬 유리할 수 있다. 단, SQL 명령어를 MapReduce로 번역한다는 특징 때문에 처리 속도가 중요한 OLTP 처리성 쿼리는 적절한 선택이 되지 않을 가능성도 있다.

 

그리고 Hive는 실제 데이터베이스는 아니라는 점을 기억하고, 보다 세부적으로 알아보자.

 

 

 


 

 

Hive의 작동 방식

읽기 스키마(Schema on Read)

Hive에서는 Schema on Read라는 개념이 있는데, 이는 데이터를 저장할 때 스키마를 적용하지 않고, 데이터를 읽을 때 스키마를 적용하는 방식을 의미한다. 즉, Hive가 데이터를 HDFS에 저장할 때 데이터의 구조를 미리 강제하거나 정의하지 않는 다는 것이다. 데이터를 쿼리할 때 지정된 스키마에 따라 데이터를 해석하게 된다.

 

schema on read 방식은 다양한 형식의 데이터를 쉽게 저장할 수 있는 유연함이 있고, 여러 방식으로 해석할 수 있는 다양성도 있다는 특징이 있다. 그러나 전통적인 RDBMS는 Schema on Write(쓰기 스키마)방식을 사용하는데, 이는 데이터를 처음에 저장할 때 스키마를 적용한다는 것이다. Hive와 다르게 엄격한 데이터 무결성을 보장하고 명확한 데이터 구조를 유지한다. 유연성과 무결성 중에서 어느 특징을 더 중요하게 여기느냐에 따라 솔루션을 다르게 사용하면 되겠다.

 

 

Sqoop

Sqoop은 SQL to Hadoop의 약자로, Hadoop과 RDBMS 사이의 데이터 전송을 자동화하는 툴이다. Sqoop을 사용하면 관계형 데이터베이스에서 Hadoop의 HDFS, Hive 등으로 데이터를 가져오거나, 반대로 Hadoop에서 관계형 데이터베이스로 데이터를 내보낼 수 있다. 단, Hive에서 sqoop으로 데이터를 내보낼 때, 타겟 테이블은 RDBMS에 이미 존재해야 하고 존재한 테이블의 컬럼 순서도 지켜서 내보내야 한다.

 

 

Hive의 쿼리 사용법

Hive에서의 쿼리 사용은 생각보다 간단한데, 기존 RDBMS에서 SQL 쿼리를 사용하듯이 작성하면 된다. 큰 차이는 없다. HUE나 Ambari, 혹은 CLI 등에서 사용할 수 있다.

 

select a.movieid
	 , a.avg_ratings
	 , a.cnt_ratings
from (
select movieid
	 , avg(ratings) as avg_ratings
	 , count(1) as cnt_ratings
  from ratings r
 group by movieid
) a
where a.cnt_ratings > 10
order by a.avg_ratings DESC;

 

Ambari - Hive View에서 movielens 데이터를 이용하여 위 쿼리를 찍어본 결과

 

반응형