今天将天翼云中的两台hadoop节点进行了hive操作,结果大吃一惊。原来实践后的hive与原来的理解完全不同。各位有机会,一定实际操作云及各项应用,这样既记忆深刻,更重要的是检验理论。今天我们来看看实际hive操作过程。
一、安装hive
因为上次安装了两个节点的hadoop最小集群(master、node节点),今天直接在master节点上安装了hive。因为hive是基于hdfs存储,因此必须先基于昨天的hadoop集群;另一方面,hive必须安装在master节点中,因为hive将基于mapreduce下发任务。
安装hive不容易,如果是大规模应用建议首先安装mysql等结构化数据,因为hive必须将数据仓库的元数据(也就是create table中的字段)放入mysql等结构化数据中。如果使用了mysql则必须将JConnector JAR包放入hive的lib目录中,作为hive程序调度使用。
接下来再安装hive程序,hive程序必须配置hive_env、hive_site.xml两个配置文件。
详细操作步骤网上有详细说明,安装步骤不是本文的重点。
二、使用hive
这里是我最吃惊的地方,原因hive是一个基于hdfs的结构数据仓库(也就是数据库)。这里有几个我意外的地方
1、启动hive,hive是一个数据仓库。用sql命令直接可以操作hdfs中的数据仓库内容。
如下图,用show databases; 直接查看数据
而在hdfs中,每个数据库是一个目录。数据表在每个目录中的一个文件
2、hive的元数据真的在mysql中。
如下图,我在hive中用create table创建了4个表。4个表的元数据全存放入了mysql中。
3、hive的insert语句居然启动了一个mapreduce任务
不得不说,hive不是一个高效率的数据库,但绝对是一个能扛重担的数据库。在轻量化的数据应用中,用hive效率也许比mysql慢,但数据量巨大,hive的集群管理功能一定会派上大用场。
用hive作数据的实时计算,一定会让你失望。他合适存放大容量的数据,进行数据二次挖掘计算。
4、hive绝对是基于hdfs之上
通过操作create、insert语句,我们的hdfs的数据块在不断增加,node1节点中存储的block从3增长到了13。
希望以上文章能帮到您。
更多内容实时更新,请访问公众号。