资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Page,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Page,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Hive,基础,1,2,Hive,结构,Hive,基础操作,目录,3,Hive,的,MAP/RED,3,4,山东现场实际应用,Hive,结构图,数据存储,Hive,数据以文件形式存储在,HDFS,的指定目录下,Hive,语句生成查询计划,由,MapReduce,调用执行,用户接口,解析器,:生成,抽,象语法树,语法分析器,:,验证查询语,句,逻辑计划生成,器,(包括优化器):生成,操作符,树,查询计划生成,器,:转换为,map-reduce,任务,CLI,:,启动的时候,会同时启动一个,Hive,副本,Client,:,Hive,的客户端,用户连接至,Hive Server,WUI,:,通,过浏览器访问,Hive,语句,转换,Hive,元数据,元数据存,储在,关系数据库如,mysql,,,derby,,,oracle,中,解,析用户提交,hive,语句,对其进行解析,分解为表、字段、分区等,hive,对,象,根,据解析到的信息构建对应的表、字段、分区等对象,从,SEQUENCE_TABLE,中获取构建对象的最新,ID,,与构建对象信息,(,名称,类型等,),一,同写,入到元数据表中去,成功后将,SEQUENCE_TABLE,中对应的最新,ID+5,。,Hive,和普通关系数据库的异同,数据存储,数据格式,数据更新,执行延迟,Hive,是建立在,Hadoop,之上的,所有,Hive,的数据都是,存储,在,HDFS,中的,。,数,据库则可以将数据保存在块设备或者,本地文件系统,中,Hive,中没有定义专门的数据格式,,由,用户指定,,需,要指定三个属性:列分隔,符,,,行,分隔,符,,,以,及读取文件数据的方,法,数据库中,,存,储引,擎定,义了自己的数据格式。所有数据都会按照一定的组织存储,Hive,在查询数据的时候,,需,要扫描整个,表,(,或分区,),,,因此延迟较,高,,因此,hive,只有在处理大数据时才有优势,数据,库,在处理小数据时,执,行延迟,较低,Hive VS,RDBMS,Hive,的,内容是读多写少,的,因此,,不,支持对数据的改写,和,删除,,数,据都是在加载的时候中确定好,的,数据库中的数据通常是需要经常进行修改,1,2,Hive,结构,Hive,基础操作,目录,3,Hive,的,MAP/RED,3,4,山东现场实际应用,Hive,客户端,CLI,Load,,,Insert,usage:hive,-d,-define,-e,-f,-h -hiveconf,-hivevar,-i,-S,-silent,-v,-verbose,DDL,DML,Create/Drop Database,Create/Drop Table,Alter Table/Partition,Create/Drop View,Create/Drop Function,Create/Drop Index,Show/Describe,CREATE TABLE,a_test_ms,(,op_time,string,event_name,string),PARTITIONED BY(,pt_time,_ string),ROW FORMAT DELIMITED,FIELDS TERMINATED BY t,STORED AS TEXTFILE,LOCATION,hdfs:/ocdccluster/asiainfo/SDDW/ODS/a_test_ms;,Load,语法:,LOAD DATA LOCAL INPATH,OVERWRITE INTO TABLE,tablename,PARTITION(partcol1=val1,partcol2=val2.),Load,操作只是单纯的复制,/,移动操作,将数据文件移动到,Hive,表对应的位置,。,可以是本地路径,也可以是,HDFS,的路径,加,载的目标可以是一个表或者分区,(静态分区),。如果表包含分区,必须指定每一个分区的分区名,在,load,时,hive,会检查加载的数据文件与建表时,指定,的,是否,匹配,Insert,语法:,INSERT INTO/OVERWRITE TABLE tablename1 PARTITION(partcol1=val1,partcol2=val2.)select_statement1 FROM,from_statement,;,INSERT OVERWRITE LOCAL DIRECTORY directory1 SELECT.FROM,.,Inser,语句可以把,select,语句查询出来的记录插入到目标表中,也可以把查出的记录以文件的形式导出到本地,Select,Joins,语法:,SELECT ALL|DISTINCT,select_expr,select_expr,.FROM,table_reference,WHERE,where_condition,GROUP BY,col_list,CLUSTER BY,col_list,|DISTRIBUTE BY,col_list,SORT BY,col_list,LIMIT number,group,:进行聚合,order by,:全局排序,一个,reduce,sort by,:单机排序,多个,reduce,DISTRIBUTE BY,:按照指定的字段对数据进行划分到不同的输出,reduce/,文件中。与,sort by,配合使用,避免,数据的重叠和丢失,CLUSTER BY,:等于,Distribute By+Sort By,倒序排序,语法,:,table_reference,JOIN,table_factor,join_condition,|,table_reference,LEFT|RIGHT|FULL OUTER JOIN,table_reference,join_condition,|,table_reference,LEFT SEMI JOIN,table_reference,join_condition,|,table_reference,CROSS JOIN,table_reference,join_condition,(as of Hive 0.10),Hive,只支持等值连接(,equality joins,)、外连接(,outer joins,)和(,left/right joins,)。,Hive,支持多于,2,个表的连接。,LEFT SEMI JOIN,是,IN/EXISTS,子查询的一种更高效的实现,1,2,Hive,结构,Hive,基础操作,目录,3,Hive,的,MAP/RED,3,4,山东现场实际应用,JOIN,Map,:,以,ON,条件中的列作为,Key,,如果有多个列,则,Key,是这些列的组合,以,JOIN,之后所关心的列作为,Value,,当有多个列时,,Value,是这些列的组合。,按照,Key,进行排序。,Shuffle,:,根据,Key,的值进行,Hash,,并将,Key/Value,对按照,Hash,值推至不同对,的,Reduce,中。,Reduce,:,Reducer,根据,Key,值进行,Join,操作,语句:,SELECT a.pageid,b.age FROM page_view a JOIN user b ON(a.userid=b.userid);,GROUP BY,语句:,SELECT pageid,age,count(1)FROM pv_users GROUP BY pageid,age;,数据量大不是问题,数据倾斜是个问题。,jobs,数比较多的作业运行效率相对比较低。,count(distinct),效率较低,计算框架,优化手段,Join,优化,不要求全局有序时使用,Distribute By+Sort By,来排序,如果全局有序是为了得到排名靠前的结果,刚使用,limit,子句,来,减少数据量。,解决数据倾斜问题。,减少,job,数。,设置合理的,map reduce,的,task,数,对小文件进行合并,使用,MAPJOIN(),会将较小的表,加载到内存中,,使,连结过程,在,Map,阶,段完成,Hive,优化,排序优化,1,2,Hive,结构,Hive,基础操作,目录,3,Hive,的,MAP/RED,3,4,山东现场实际应用,节点,HQL,OCDC,平台,HQL,执行步骤,后台调度,10.17.254.12,hiveServer服务,10.17.254.12,Map/reduce,从OCDC平台的执行监控中,可以找到HQL对应的jobid,通过jobid可以在jobtracker的监控页面()找到对应的job,Job,执行信息查看,在jobtracker的监控页面()点击job,即可进入此job对应的执行页面监控,如下:,Job,执行日志查看,其对应的日志在后台的位置为,:,点击,map,点击,task,点击日志,注:点击日志后的页面地址需要将hostname更新为对应的IP地址,查找执行日志步骤,:,ocdcOCDC-DATA-003 attempt_2_35592_m_000000_0$pwd,/home/ocdc/app/mr1/logs/userlogs/job_2_35592/attempt_2_35592_m_000000_0,Bye Bye,
展开阅读全文