
hive起源于facebook,它是建立在Hadoop上的数据仓库基础架构。它提供了一系列的工具(api),可以用来进行数据提取转化加载ETL(数据清洗),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive定义了简单的类SQL查询语言,成为HQL,它允许熟悉SQL的用户查询数据。同时,这个语言也允许熟悉MapReduce开发者的开发自己定义的mapper和reducer来处理内建的mapper和reudcer无法完成的复杂的分析工作。
Hive非常类似mysql,它支持数据存储,类sql查询,分析。Hive只能新作和追加。
Hive不支持事务。
Hive把Hadoop包装了一下,Hadoop的所有内容就直接可以用了,hdfs存储数据,mr调用海量数据的处理,yarn进行管理。

基本概念
Hive中的所有数据都存储在HDFS中,Hive包含以下数据类型
表(Table),外部表(External Table),分区(Partition),桶(Bucket)
- Hive中的表和数据库中的表的概念是类似的,每一个表在Hive中都有一相应的目录存储数据,但是Hive中的表是文件
- 分区对应于数据库中的分区列的密集索引,但是Hive中分区的组织方式与数据库中的不同。在Hive中一个分区对应于表下的一个目录,所有的分区数据都存储在对应的目录中。(如数据库中的分库【一个库拆成好几个库】分表)
- 桶对指定列计算哈希值,根据哈希值切分数据,目的是为了并行,每个桶对应一个文件(类似于redis分片-分布式内存数据库-使得节点不受内存影响-分片算法:hash一致性算法)
- 外部表指向HDFS中存在的数据,可以创建分区。它和表在元数据的组织上是相同的,而实际存储则有较大的差异。(可以先有HDFS【数据】再有表)
Hive的进程是RunJar,基于Java写的,如果有重复地启动hive,使用kill -9 端口号杀死进程
网友评论