Hadoop数据仓库工具hive介绍.docx
文本预览下载声明
HIVE介绍简介是什么hive是一个基于hadoop的数据仓库。使用hadoop-hdfs作为数据存储层;提供类似SQL的语言(HQL),通过hadoop-mapreduce完成数据计算;通过HQL语言提供使用者部分传统RDBMS一样的表格查询特性和分布式存储计算特性。类似的系统有yahoo的pig[1],google的sawzall[2],microsoft的DryadLINQ[3]。架构图表1 hive架构图操作界面:CLI,Web,Thriftdriver:hive系统将用户操作转化为mapreduce计算的模块(重点)hadoop:hdfs+mapreducemetastore:存储元数据语言一般有DDL和DML两种:hive采用DDL方式和少量DML方式,类似sql;pig使用DML方式。DDL:data definition language(只讲definition,不讲实现){create/alter/drop}{table/view/partition}create table as selectDML:data manipulation language(有关于实现操作)insert overwritehive示例加载load data local input ‘/logs/urls.txt’ into table urls partition (ds=’2010-01-01’);写入INSERTOVERWRITE TABLE result操作SELECT category, AVG(pagerank) FROM urls WHERE pagerank 0.2 GROUP BY category;pig示例加载urls = LOAD ‘/logs/urls.txt’ USING myLoad() AS (category,pagerank);操作good_urls = FILTER urls BY pagerank 0.2; groups = GROUP good_urls BY category; output = FOREACH groups GENERATE category, AVG(good_urls.pagerank);写入STOREoutput INTO ‘myoutput’ USING myStore();hive中使用自定义map-reduce FROM ( FROM pv_usersMAP pv_users.userid, pv_users.dateUSING map_script AS dt, uid CLUSTER BY dt) map_output INSERT OVERWRITE TABLE pv_users_reducedREDUCE map_output.dt, map_output.uidUSING reduce_script AS date, count;其他一些功能能够ALERT一个table,主要是add一个column。分区(partition):建表的时候指定分区方式:CREATE TABLE invites (foo INT, bar STRING) PARTITIONED BY (ds STRING);导入的时候指定分区依据:LOAD DATA LOCAL INPATH ./examples/files/kv2.txt OVERWRITE INTO TABLE invites PARTITION (ds=2008-08-15);LOAD DATA LOCAL INPATH ./examples/files/kv3.txt OVERWRITE INTO TABLE invites PARTITION (ds=2008-08-08);类似 select * from tbl 的查询不需要 MapReduce。hive不只是可以mapreduce图表2 hive结合HBase的逻辑图[5]”图表3 reduce阶段写入HBase的方式[5]”图表4map-only job写入HBase的方式[5]”实现原数据(Metadata)hive的元数据存储在传统的RDBMS中,现在为mysql中。采用JDO(JPOX)。原因:访问这些Metadata,我们想要“很低的延时”,而存在hdfs中是无法满足。(元数据对hive是相当重要的,因此一般要求有备份机制)使用:元数据都是在HQL语句编译的时候,就被生成一个xml文件(包含此次编译所有需要的元数据信息)存储在hdfs中,然后运行mapreduce时传递给mapper和reducer。(减少后期访问)查询解析(query parser)这一步是实现中最主要的操作,即架构图中Driver的大部分
显示全部