Hive란?
분산스토리지 내의 데이터를 sql쿼리로 분석/처리 할 수 있는 쿼리언어
피그 등의 다른 기술들은 작업은 쿼리처럼 작업하더라도 내부는 MR로 이루어져 있어서 실질적인 작동 방식은 MR인데 hive는 sql쿼리 엔진자체이다.
Hive의 장점(사용하는 이유)
일단 가장 큰게 MR이랑 달리 사람들의 사용성이 좋다는 장점말고 뭐가 있지?
내부적인 리소스나 활용 면에서…
sql쿼리로 작업할 수 있으니 당연히 작업 속도면에서 효율적일터
- 우선 구조화된 쿼리언어
- OLAP쿼리
- MR보다 훨씬 간단한 방법으로 데이터를 처리할 수 있다.
- 분석시스템을 위함
- 실시간 처리등의 작업보다는 대용량 데이터세트 처리에 유리
- extensible
- SQL 사용의 한계를 'UDF'를 사용하여 다양한 외부 도구와 연계해서 데이터를 처리할 수 있다.
- Thrift 서버를 활용해서, 외부에서 사용자가 Hive와 소통
- 가장 큰 특징으로는 메타스토어라는 것이 존재하는데, 하이브는 기존의 RDB와는 다르게 미리 스키마를 정의하고 그 틀에 맞게 데이터를 입력하는 것이 아닌, 데이터를 저장하고 거기에 스키마를 입히는(메타스토어에 입력하는) 것이 가장 큰 특징
- Tez엔진을 사용함으로써 MR보다 속도 더 빠르게 활용할 수 있음
Hive의 단점
- OLTP에 적합하지 않다.
- 높은 처리량을 원한다면 적절하지 않다는 의미이다.
- SQL을 MR로 번역하는 시간이 필요하기 때문에 시간이 좀 더 걸리게 된다.
- 비정규화 데이터를 사용한다. 즉 실제로는 관계형 데이터 베이스 형태는 아니다. 단순한 텍스트 파일이다.
- 관계형 데이터베이스인 것 처럼 쿼리할 수 있지만 실제로 비정규화되어있다.
- 관계형 데이터베이스의 특성이 필요하다면 추천하지 않는다.
복잡한 쿼리에 적절하지 않다
.