DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉1第四课:SparkSQL原理和实践DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉2法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。课程详情访问炼数成金培训网站大数据平台第一版讲师:马军辉3上周回顾Spark的运行架构调度器TaskSchedulerYarnClusterSchedulerYarnClientClusterSchedulerDATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉4本周内容hive原理和架构hive演示shark原理和架构shark演示SparkSQL原理和架构SparkSQL演示DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉5本周内容hive原理和架构hive演示shark原理和架构shark演示SparkSQL原理和架构SparkSQL演示DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉6什么是hive由facebook开源,最初用于解决海量结构化的日志数据统计问题;–ETL(Extraction-Transformation-Loading)工具构建于hadoop的hdfs和mapred之上,用于管理和查询结构化/非结构化数据的数据仓库设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据–使用HQL作为查询接口–使用HDFS作为底层存储–使用MapRed作为执行层2008年facebook把hive项目贡献给ApacheDATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉7为什么hive大数据的挑战海量数据时代的到来–IDC数据表明,全球企业数据正以55%的速度逐年增长,IDC预计,到2020年,全球数字信息总量将增长44倍。以某网络视频公司为例:每天新增数据量高达500G。非结构化数据的爆炸式增长–有超过80%的数据都是非结构化的,如网站访问日志、移动互联网数据和聊天交流工具记录等。存储和查询分析需要–愈加激烈的竞争要求对客户进行更加深入细致的分析。传统技术无法胜任大数据的存储、管理、分析和挖掘–传统的关系型数据库以及BI分析工具通常只能处理GB级别的结构化数据DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉8为什么hive大数据的挑战虽然Hadoop的hdfs和mapred已经能够很好的解决大数据的存储和分析问题,但是对于传统的数据分析人员来说,他们还面临着以下挑战:–理解mapred计算模型–自行开发代码实现业务逻辑Hive的出现,完美的解决了传统数据分析人员所面临的问题。–Hive使用类SQL查询语法,最大限度的实现了和SQL标准的兼容。–JDBC接口/ODBC接口也使开发人员更易开发应用为超大数据集设计的计算/扩展能力–MR作为计算引擎,HDFS作为存储系统统一的元数据管理–可与Pig、Presto等共享DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉9hive的缺点Hive的HQL表达的能力有限–有些复杂运算用HQL不易表达Hive效率较低–Hive自动生成MapReduce作业,通常不够智能;–HQL调优困难,粒度较粗–可控性差DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉10hive的运行架构hive系统架构元数据存储(Metastore)驱动(Driver)–编译器–优化器–执行器接口–CLI–HWI–ThriftServerHadoop–用MapReduce进行计算–用HDFS进行存储DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉11hive的运行架构DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉12hive的运行架构元数据存储(MetaStore)–Derby–MySQLDATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉13hive的运行架构驱动(Driver)–编译器(hive的核心)●语法解析器(ParseDriver)–将查询字符串转换成解析树表达式●语法分析器(SemanticAnalyzer)–将解析树转换成基于语句块的内部查询表达式。●逻辑计划生成器(logicalplangenerator)–将内部查询表达式转换为逻辑计划,这些计划由逻辑操作树组成。–操作符是hive的最小处理单元,每个操作符处理代表一道HDFS操作或MR作业●查询计划生成器(queryplangenerator)–将逻辑计划转化成物理计划(MRTask)–优化器●优化器是一个演化组件。当前,它的规则是:列修剪,谓词下压。–执行器●编译器将操作树切分为一个Task链(DAG),执行器会顺序执行其中所有Task;如果Task链(DAG)不存在依赖关系时,可采用并发执行的方式进行Job的执行DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉14hive的运行架构接口–CLI:为命令行工具,为默认服务●启动方式bin/hive或bin/hive--servicecli–hwi:为web接口,可以通过浏览器访问hive,默认端口9999●启动方式为bin/hive--servicehwi。–ThriftServer:通过Thrift对外提供服务,默认端口10000●启动方式为bin/hive--servicehiveserver。其他服务(bin/hive--service–help)–metastore(bin/hive--servicemetastore)–hiveserver2(bin/hive--servicehiveserver2)●HiveServer2是HiveServer的改进版本,它提供新的ThriftAPI来处理JDBC或者ODBC客户端,Kerberos身份验证,多个客户端并发●HiveServer2还提供了新的CLI:BeeLine,Beeline是hive0.11引入的新的交互式CLI,它基于SQLLine,可以作为HiveJDBCClient端访问HiveServer2,启动一个beeline就是维护了一个session。DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉15hive的运行架构Hadoop–用MapReduce进行运算–存储在HDFS●hive中所有数据存储在HDFS上,包括数据模型中的Table、Partition、Bucket●hive的默认数据仓库目录是/user/hive/warehouse,在hive-site.xml中由hive.metastore.warehouse.dir项定义●除了ExternalTable,每个Table在数据仓库下都有一个相应的存储目录●当数据被加载至表中时,不会对数据进行任何转换,只是将数据移动到数据仓库目录。●Table被删除时,表数据和元数据都被删除●ExternalTable被删除时,元数据都被删除,表数据不删除●表中的一个Partition对应表下的一个子目录–表log-/user/hive/warehouse/log–log中含year和month两个partition,则:–对于year=2014,month=6的子目录为log/year=2014/month=6–对于year=2014,month=7的子目录为log/year=2014/month=7●每个Bucket对应一个文件DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉16hive的数据模型DatabaseTablePartitionBucketFileDATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉17hive的数据模型DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉18hive的数据模型DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉19hive的数据模型DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉20hive的操作DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉21hive的操作DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉22hive的安装前提:安装和配置hadoop集群下载hive安装包,解压至安装目录配置hive-site.xml和hive-env.sh配置环境变量启动服务或cliDATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉23本周内容hive原理和架构hive演示shark原理和架构shark演示SparkSQL原理和架构SparkSQL演示DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉24hive演示hive安装日志数据演示订单交易数据演示DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉25本周内容hive原理和架构hive演示shark原理和架构shark演示SparkSQL原理和架构SparkSQL演示DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉26shark是什么DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉27shark运行架构DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉28shark运行架构DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉29shark运行架构动态优化(DynamicQueryOptimization)–未发生数据加载过程中的新数据,缺乏数据统计信息;结合普遍使用的UDF缺乏,就必须使用动态优化查询。–允许基于在运行时收集的数据统计信息来动态优化查询计划DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉30shark运行架构基于列的压缩和存储(ColumnarMemoryStore)–DefaultmemorystoreistostoredatapartitionsascollectionsofJVMobjects.●SharkstoresallcolumnsofprimitivetypesasJVMprimitivearrays.●ComplexdatatypessupportedbyHive,suchasmapandarray,areserializedandconcatenatedintoasinglebytearray.–EachcolumncreatesonlyoneJVMobject,leadingtofastGCsandacompactdatarepresentation.–ThespacefootprintofcolumnardatacanbefurtherreducedbycheapcompressiontechniquesatvirtuallynoCPUcost.–Columnardatarepresentationalsoleadstobettercachebehavior,especiallyforanalyticalqueriesthatfrequentlycomputeaggregationsoncertaincolumns.DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉31shark运行架构More...DATAGURU专业数据分析社区Spark大数据平台第一版讲师:马军辉32shark的操作同hive的操作,但要注意