Hive的特点
针对海量数据的高性能查询和分析
由于hive的查询是基于MapReduce框架实现有,而MapReduce本身就是针对海量数据的高性能处理而设计的,所以hive天然就能高效的处理海量数据。
与此同时hive针对HiveQL到MapReduce的翻译进行了大量的优化,从而保证了生的MapReduce任务高效,在实际应用中,hive可以高效的对TB甚至PB级的数据进行处理。
类sql的查询语言
HiveQL和SQL语法十分类似,所以一个熟悉SQL语法的用户基本上不需要培训就能很容易的使用Hive进行很复杂的数据查询业务。
HiveQL灵活的可扩展性(Extendibility)
除了Hive自身提供的功能,用户还可以自定义使用的数据类型,也可以使用其它语言自定义Mapper和Reduce脚本,还可以自定义函数(普通、聚集函数)等。这就赋予了HiveQL极大的可扩展性,用户可以利用这种可扩展性实现复杂的查询。
高扩展性(Scalability)和容错性
Hive本身并没有执行机制,用户查询的执行是通过MapReduce框架现实的,由于MapReduce框架本身具有高可扩展性(计算能力随Hadoop集群中机器的数量增加而线性增加)和高容错性的特点,所以Hive也相应具有这些特点。
与Hadoop其它产品完全兼容
Hive自身并不存储用户数据,而是通过接口访问用户数据,这就使的Hive支持各种数据源和数据格式,例如它支持处理HDFS上的各种文件格式(TextFile、SequenceFile等),还支持处理HBase数据库,用户也完全可以实现自己的驱动来增加新的数据源和数据格式。一种理想的模式是将数据存储在HBase中实现实时访问,而利用Hive对HBase中的数据进行批量分析。