浅谈Hive的功用性

以下是我通过查阅一些资料和博客所得出的对hive的个人见解,如果雷同,请见谅,如有意见或建议,请大胆提出,必虚心学习。


Q: hive是什么

A:  Hive 是基于 Hadoop 构建的一套数据仓库分析系统,是数据挖掘的一个工具(利用mapreduce挖掘hdfs上的数据)。


Q: hive能做什么
A: 它提供了一系列的工具,可以用来进行数据提取转化加载(ETL)。它也是一种可以存储、查询和分析存储在 hadoop中的大规模数据的机制。可以处理的数据有:关系型数据库(结构性)、本地数据、hdfs数据(非结构化的数据);


Q: hive作为数据仓库的优点
A: 大数据的保存、分析计算、一次写入多次读取。Hive定义了简单的类 SQL 查询语言,称为 QL ,它允许熟悉SQL  的用户查询数据。同时,这个语言也允许熟悉MapReduce  开发者的开发自定义的mapper 和 reducer 来处理内建的 mapper 和reducer  无法完成的复杂的分析工作。


Q:为什么要用hive做数据库 
A: 因为传统数据仓库无法满足快速增长的海量数据存储需求,传统数据仓库基于关系型数据库,横向扩展性较差,纵向扩展有限,也无法处理不同类型的数据,传统数据仓库只能存储结构化数据,计算和处理能力不足。而基于MapReduce的Hive尤其在扩展性和容错性具有很强的优势。
   Hive很容易扩展自己的存储能力和计算能力,最适合应用在基于大量不可变数据的批处理作业,例如网络日志等数据量大、静态的数据查询。Hive 要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。由于 MapReduce 的引入, Hive 可以并行访问数据,因此即使没有索引,对于大数据量的访问,Hive 仍然可以体现出优势。


Q: hive是怎么把存在MySQL下的元数据组合起来的
A: Hive通过metastoreServer和mysql数据库进行通信,利用hive-site.xml里面配置的数据库ip,端口,用户名,密码连接并登录到mysql.创建hive的元数据表。应该就可以做到MySQL功能中的本地连接,访问,下载数据了。跟使用JDBC访问数据库一样。


Q: 如果没有mysql,用hive做数据仓库的原因
A: hive支持jdbc和odbc数据源连接,可以连接很多种数据库,mysql、oracle等等,就算没有MySQL,还可以连接其他数据库。


Hive的特点
1、简单容易入手 
2、它是为超大数据集而设计的计算和扩展能力 
3、提供统一的元数据管理

Hive的缺点
1、Hive的HQL的表达能力有限
   1)迭代式算法无法表达,比如pagerank。
   2)数据挖掘方面,比如kmeans。
2、Hive的效率比较低
   1)hive自动生成的MapReduce作业,通常情况下不够智能化。
   2)hive调优比较困难
   3)hive可控性比较差
展开阅读全文

没有更多推荐了,返回首页