大数据主题
Hive是一种以SQL风格进行任何大小数据分析的工具,其特点是采取类似关系数据库的SQL命令。其特点是通过 SQL处理Hadoop的大数据,数据规模可以伸缩扩展到100PB+,数据形式可以是结构或非结构数据。
Hive与传统关系数据库比较有如下几个特点:
Hive架构图如下:
Hive目前支持的SQL数据类型和SQL语句如下:
INT
TINYINT/SMALLINT/BIGINT
BOOLEAN
FLOAT
DOUBLE
STRING
BINARY
TIMESTAMP
ARRAY, MAP, STRUCT, UNION
DECIMAL
SQL语法:
SELECT, LOAD, INSERT from query
Expressions in WHERE and HAVING
GROUP BY, ORDER BY, SORT BY
CLUSTER BY, DISTRIBUTE BY
Sub-‐queries in FROM clause
GROUP BY, ORDER BY
ROLLUP and CUBE
UNION
LEFT, RIGHT and FULL INNER/OUTER JOIN
在Hive中可使用Join语法,这是一般NoSQL的弱项,因为根据CAP定律,Join阻碍了分区,但是在Hive中Join的实现有其特殊性:
Hive的Join策略有三种,各有利弊:
Hive文件形式:
–ORCFile
高压缩率
高性能
灵活的数据模型:maps, structs 和 unions.
Hive 0.11比0.10性能更高
– RCFile
– Avro
– Delimited Text
– Regular Expression
– S3 Logfile
– Typed Bytes
Stinger不是一个项目或产品,而是一种提议,旨在将Hive性能提升100倍,包括Hive的改进和Tez项目两个部分。
Hive 0.11中的改变包括:
Tez是一个可替换MapReduce的数据数据框架,着重于低延迟高性能,Stinger核心,Tez是可插拔的Input, Processor 和 Output,如下图。另外,YARN 的ApplicationMaster用来运行Tez 任务。
Hive/MR 和 Hive/Tez比较:执行同一个如下SQL Join语法:
SELECT a.state, COUNT(*), AVERAGE(c.price)
FROM a
JOIN b ON (a.id = b.id)
JOIN c ON (a.itemId = c.itemId)
GROUP BY a.state
两者比较结果,Tez节约了HDFS磁盘写操作,因而性能提升。
YARN类似Hadoop 2.0, 重新架构了集群资源管理,低延迟,支持流,可支持10,000+服务器。