-
简单容易上手
Hive使用类SQL语言,有关系型数据库使用经验的人都可以平滑过渡到Hive,非程序员也可以快速上手使用。
-
开发快速
Hive清洗和分析数据的效率很高,Hive出现之前,数据处理工作需要交给熟悉MR程序的开发人员才能完成,而且MR程序的编写工作量非常大,Hive出现后,使用类SQL语言直接操作数据,大大提高了开发速度。
-
适合大规模数据的处理
Hive最终会将SQL语句翻译成MR程序执行,所以它能处理大规模数据。
-
延迟高
即使数据量很小,也需要很长时间才能完成Hive的一个操作,这是由Hadoop执行引擎的特点决定的。
-
不支持DELETE/UPDATE等事务处理
这是HDFS的特性决定的,HDFS适合一次写入多次读取的情况,因此不能通过Hive完成DELETE/UPDATE等事务处理操作。
Hive擅长的是非实时的、离线的、对响应及时性要求不高的海量数据批量计算
- 海量日志分析
日志数据量是非常庞大的,一个中型网站每天的日志数据量可达数十GB,这样的数据量式用单机处理会很吃力,需要式用分布式处理系统。另外日志数据产生后不会修改,满足Hive式用条件,一般情况下离线数据分析能满足很大一部分业务需求。
日志数据通过flume收集到HDFS上,然后经过MR清洗(如清除一些异常日志),重新存放到HDFS,最后经过Hive处理和统计,为最终业务需要服务。
- 海量结构化数据分析
业务数据库中的表往往是针对线上业务而设计的,对统计分析需求往往并不友好,而且通常也不满足高并发量的需求。
要进行数据分析通常是先使用Sqoop工具将关系型数据库中的数据导入到HDFS,之后根据统计分析业务需要,通过Hive对数据进行处理,存储成方便后续业务分析的格式。这就是数据仓库的场景。