Hive数据仓库全套电子课件完整版ppt整本书电子教案最全教学教程_第1页
Hive数据仓库全套电子课件完整版ppt整本书电子教案最全教学教程_第2页
Hive数据仓库全套电子课件完整版ppt整本书电子教案最全教学教程_第3页
Hive数据仓库全套电子课件完整版ppt整本书电子教案最全教学教程_第4页
Hive数据仓库全套电子课件完整版ppt整本书电子教案最全教学教程_第5页
已阅读5页,还剩599页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章 Hive数据仓库基础本章主要介绍Hive数据仓库的概念、特点、体系结构、执行流程及与数据库的比较等内容。1.1.1 数据仓库的概念1.1.2 数据仓库的特点1.1.3 数据仓库的数据模型1.1.4 数据仓库的体系结构1.2 Hive数据仓库1.1 数 据 仓 库1.3 Hive体系结构及执行流程1.3.1 Hive体系结构1.3.2 Hive执行流程1.4 Hive数据仓库和数据库比较章内分节1.1.1 数据仓库的概念数据库已经在信息技术领域有了广泛的应用,社会生活的各个领域几乎都有各种各样的数据库保存着各种数据。数据仓库作为数据库的一个分支,其概念的提出相对于数据库从时间上就晚得多。

2、比尔恩门(Bill Inmon)在1991年出版的Building the Data Warehouse一书中所提出的数据仓库定义被广泛接受。数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、随时间变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。传统数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题进行组织的。主题是与传统数据库的面向应用相对应的,它是一个抽象概念,是在较高层次上将信息系统中的数据综

3、合、归类并进行分析利用的抽象。每个主题对应一个宏观的分析领域。数据仓库排除对于决策无用的数据,提供特定主题的简明视图。例如商品推荐系统是基于数据仓库所构建出来的一个系统,它最关心的主题就是商品信息。数据仓库是面向主题的数据仓库中的数据是在对原有分散的数据库中的数据进行抽取、清理的基础上,经过系统加工、汇总和整理得到的。必须消除原来的数据中的不一致性,以保证数据仓库内的信息是一致的全局信息。数据仓库是一个集成的数据库。也就是说,数据库中的数据来自分散型的、操作型的数据,把分散型的、操作型的数据从原来的数据中抽取出来,经过加工和处理,然后满足一定的要求,这样的数据才能进入数据仓库。原来的数据可以来

4、自Oracle,也可以来自MySQL,或者来自文本文件或其他的文件系统。把不同的数据集成起来就形成了一个数据仓库。数据仓库是集成的数据仓库中的数据主要供决策分析使用,所涉及的数据操作主要是数据查询。一旦某些数据进入数据仓库后,一般情况下将被长期保留。也就是说,数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期加载、刷新。数据仓库是相对稳定的数据仓库内的数据并不只是反映企业当前的状态,而是记录了从过去某一时间点到当前各个阶段的数据。数据仓库中的数据是随着时间的推移而变化并且逐渐增加的数据的集合。数据仓库是随时间变化的数据仓库的主要技术(1)并行计算的硬件环境、操作系统环境、数据

5、库管理系统及所有相关的数据库操作、查询工具和技术、应用程序等各个领域都可以从并行的最新成果中获益。(2)分区分区功能使得支持大型表和索引更容易,同时也提高了数据管理和查询性能及查询效率。(3)数据压缩数据压缩功能降低了数据仓库环境中通常需要的用于存储大量数据的磁盘系统的成本,新的数据压缩技术也已经消除了压缩数据对查询性能造成的负面影响。1.1.2 数据仓库的特点(1)效率足够高数据仓库的分析数据一般按照时间周期分为日、周、月、季、年等类型数据。以日为周期的数据要求的效率最高,要求24小时内用户能看到数据分析结果。(2)数据质量数据仓库所提供的各种数据,要求是准确的数据,但由于数据仓库工作流程通

6、常分为多个步骤,包括数据清洗、装载、查询、展现等,如果数据源有脏数据或者代码不严谨,可能导致数据失真,用户看到错误的信息就可能导致错误的决策,从而造成损失。(3)扩展性扩展性主要体现在数据建模的合理性上,数据仓库中扩展出一些中间层,使海量数据流有足够的缓冲,不至于因为数据量增大很多就运行不起来。1.1.3 数据仓库的数据模型数据仓库系统是一个信息提供平台,主要以星状模型和雪花模型进行数据组织,并为用户提供各种手段从数据中获取信息。星状模型是搭建数据仓库的基本数据模型。在星状模型基础上发展起来的一种新型模型称为雪花模型。雪花模型应用在一些更复杂的场景中。星状模型是一种由一个中心点向外辐射的模型。

7、例如,对于商品推荐系统,面向的主题就是商品信息。与商品信息相关联的首先是用户信息,用户会购买商品,商品会形成订单,所以与订单信息是相关的。商品进行物流,所以肯定也会有物流信息,另外也会有促销信息。商品是由厂家生产的,所以肯定有厂家信息。这样就以商品信息为核心建立起来一个星状模型,这是一个面向商品信息主题的模型。雪花模型是基于星状模型发展起来的。在商品信息这个主题的基础上进行扩展,例如以用户信息为核心,用户信息又是一个主题,与用户信息相关的会有用户的家庭信息、用户的地址信息、用户的教育背景信息,另外还有用户的银行信息等。当然,还会有其他信息与用户相关。这是以用户信息为主题来看的,也可以以其他主题

8、来看,比如厂家信息,与厂家信息相关的信息很明显就有厂家的地址信息、员工信息等。所以这个模型就会越扩展越大,从而形成雪花模型。星状模型和雪花模型是大型数据仓库中最基本的两个模型,用户可以根据自己的实际情况选择一种合适的模型来搭建数据仓库。1.1.3 数据仓库的数据模型以商品推荐系统为例建立星状模型和雪花模型,详见图1-1和图1-2。 图1-1 星状模型 图1-2 雪花模型1.1.3 数据仓库的数据模型1.1.4 数据仓库的体系结构从功能结构划分,数据仓库系统至少应包含数据获取(Data Acquisition)、数据存储(Data Storage)、数据访问(Data Access)三个核心部分

9、。数据源是数据仓库系统的基础,是整个数据仓库系统的数据源泉。数据通常存储在关系型数据库中,比如Oracle或者MySQL。数据还可能来自文档资料,比如CSV文件或者TXT文件。数据也可能来自一些其他的文件系统。数据库是整个数据仓库系统的核心,是数据存放的地方并提供对数据检索的支持。元数据是描述数据仓库内数据的结构和建立方法的数据。元数据为访问数据仓库提供了一个信息目录(Information Directory),这个目录全面描述了数据仓库中都有什么数据、这些数据怎么得到的及怎么访问这些数据,是数据仓库运行和维护的中心。数据仓库服务器利用它来存储和更新数据,用户通过它来了解和访问数据。数据仓库

10、的体系结构对不同的数据进行抽取(Extract)、转换(Transform)和装载(Load)的过程,也就是通常所说的ETL过程。抽取是指把数据源的数据按照一定的方式从各种各样的存储方式中读取出来。对各种不同数据存储方式的访问能力是数据抽取工具的关键。因为不同数据源的数据的格式可能会有所不同,不一定能满足需求,所以还要按照一定的规则进行转换。数据转换包括:删除对决策应用没有意义的数据,转换为统一的数据名称和定义及格式,计算统计和衍生数据,给缺值数据赋予默认值,把不同的数据定义方式统一。只有转换后符合要求的数据才能进行装载。装载就是将满足格式要求的数据存储到数据仓库中。数据仓库的体系结构数据的存

11、储与管理是整个数据仓库系统的核心。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式,并针对现有各业务系统的数据进行抽取、清理及有效集成,按照主题进行组织。数据仓库管理包括:管理安全和权限;跟踪数据的更新;检查数据质量;管理和更新元数据;审计和报告数据仓库的使用及状态;删除数据;复制、分割和分发数据;备份和恢复;存储管理。数据仓库的体系结构数据仓库的一个重要功能就是对外提供服务,所以需要数据仓库引擎。而在数据仓库引擎中包含不同的服务器,不同的服务器会提供不同的服务。比如,服务里面有数据的查询或者报表工具,还有数据的分析工具及其他的应用。这些功能都称为前端展示。前

12、端展示的数据来自数据仓库引擎的各个服务,而服务又读取数据库中的数据。信息发布系统功能是把数据仓库中的数据或其他相关的数据发送给不同的地点或用户。基于Web的信息发布系统是多用户访问的最有效方法。数据仓库的体系结构1.2 Hive数据仓库Hadoop是由Apache基金会开发的分布式系统基础架构,是利用集群对大量数据进行分布式存储和处理的软件框架。用户可以轻松地在Hadoop集群上开发和运行处理海量数据的应用程序。Hadoop框架最核心的设计就是HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)和MapReduce。HDFS为海量的数据提供了存储

13、服务,MapReduce为海量的数据提供了计算服务。此外,Hadoop还包括Hive、HBase、ZooKeeper、Pig、Avro、Sqoop、Flume、Mahout等项目。在Hive官网上可以看到关于Hive的描述:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in

14、 storage. A command line tool and JDBC driver are provided to connect users to Hive.从这段英文描述中,可以了解到以下几点: Hive是工具; Hive可以用来构建数据仓库; Hive具有类似SQL的操作语句HQL。Hive数据仓库Hive是用来开发SQL类型脚本,用于开发MapReduce操作的平台。Hive最初由Facebook开源,用于解决海量结构化日志的数据统计分析。Hive是建立在Hadoop集群的HDFS上的数据仓库基础框架,其本质是将类SQL语句转换为MapReduce任务运行。可以通过类SQL语句

15、快速实现简单的MapReduce统计计算,十分适合数据仓库的统计分析。所有Hive处理的数据都存储在HDFS中,Hive在加载数据过程中不会对数据进行任何修改,只是将数据移动或复制到HDFS中Hive设定的目录下。所以Hive不支持对数据的改写和添加,所有数据都是在加载时确定的。Hive数据仓库Hive定义了类SQL查询语言,称为HQL(Hive Query Language,Hive查询语言)。Hive是SQL语句解析引擎,Hive将用户的SQL语句通过解释器等工具转换为MapReduce任务,并提交到Hadoop集群上,Hadoop监控任务执行过程,然后返回任务执行结果给用户。Hive不是

16、为联机事务处理(OLTP)而设计的,Hive并不提供实时的查询和基于行级的数据更新操作。Hive数据仓库 简单、容易上手,简化了MapReduce应用程序的编写。 操作接口采用HQL语法,提供快速开发的能力。 Hive常用于数据分析,对实时性要求不高。 Hive常用于处理大数据,对于处理小数据没有优势。 用户可以根据需求来实现用户自定义函数。Hive的优点(1)Hive的HQL语句表达能力有限 无法表达迭代算法。 不擅长数据挖掘,Hive常用于数据分析。(2)Hive的效率比较低 Hive自动生成MapReduce任务,不够智能化。 Hive调优比较困难。Hive的缺点1.3 Hive体系结构

17、及执行流程Hive是为了简化用户编写MapReduce应用程序而生成的一种框架。1.3.1 Hive体系结构在Hive体系结构中,主要包括Hive用户接口、元数据存储(MetaStore)、驱动器(Driver)等。在Hive体系结构中,底层是操作系统,一般会使用Linux操作系统,如CentOS、Ubuntu。Hive体系结构详见图1-3。图1-3 Hive体系结构在操作系统之上,就是Hadoop集群。在Hadoop集群中,有名称节点,用来管理整个集群的工作,也有若干个数据节点,用来存储数据。在Hadoop集群中还有一个JobTracker,负责整个任务的调度。在Hive中执行一条HQL语句

18、,这条语句实际上会被解析成MapReduce任务,并提交到集群上,得到的最终结果会被反馈给客户端,这个工作就是由JobTracker完成的。有了Hadoop集群之后,就可以在其上构建Hive数据仓库。Hadoop集群由于在Hive中需要操作Hadoop集群,所以在Hive体系结构中,会有Hive驱动器。Hive驱动器包括解析器、编译器、优化器和执行器,负责HQL语句的执行过程。Hive执行的HQL语句首先提交给驱动器,然后调用编译器解释驱动,最终解释成MapReduce任务执行,最后将结果返回给客户端。 解析器(HQL Parser):将HQL语句转换成抽象语法树(AST);对AST进行语法分

19、析,比如表是否存在、字段是否存在、HQL语义是否正确。 编译器(Compiler):将AST编译生成逻辑执行计划。 优化器(Query Optimizer):对逻辑执行计划进行优化。 执行器(Execution):把逻辑执行计划转换成可以运行的MapReduce任务。驱动器用户接口主要有三个:CLI(Command Line Interface)、Thrift Server和HWI(Hive Web Interface),其中最常用的是CLI。Client是Hive的客户端,Hive启动后,用户连接至HiveServer。客户端可以直接在命令行模式下进行操作。通过命令行,用户可以创建表、执行查

20、询等操作。Hive提供了Thrift Server,用来提供访问服务。通过这个服务器,可以使用不同的程序语言,如Java、Python,它们都可以连接到Thrift Server上,通过解析器、编译器、优化器和执行器,执行Hadoop集群的操作。Hive提供了更直观的Web操作控制台,可以执行查询语句和其他命令,这样就可以不用登录到集群中的某台计算机上使用CLI来进行查询工作。用户接口Hive中的表对应于Hadoop集群中的目录,所以表的存储位置等信息会存储在元数据中。这种信息与表中数据没有任何关系,它反应的是表本身的信息,这种信息称为元数据。Hive中的元数据包括表名、表所属的数据仓库、表的

21、所有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等。由于Hive的元数据需要不断地更新、修改,而HDFS中的文件是读多改少的,显然不能将Hive的元数据存储在HDFS中。所以Hive将元数据存储在数据库中,这个数据库又称为MetaStore,也可以是MySQL或Oracle或者是Derby数据库。Hive默认采用Derby数据库元数据存储图1-4给出了Hive表与元数据的映射关系。在Hive数据仓库中有两个表:一个student表和一个score表,student表对应于HDFS中的/hive/student目录,score表对应于HDFS中的/hive/score目录,stu

22、dent表有sid、sname、dname字段,score表有cname、sid、score字段。元数据被默认保存在Derby数据库中,有一个表用于保存表的信息,如表ID、表的名称、存储位置。student表ID为1,名称为student,存储位置为/hive/student;score表ID为2,名称为score,存储位置为/hive/score,这样保存了表的元数据。同样,把列的信息保存在Derby列信息表中,sid为1,对应表的ID也为1。Hive表与元数据的映射关系Hive表与元数据的映射关系图1-4 Hive表与元数据的映射关系1.3.2 Hive执行流程Hive通过给用户提供的一系

23、列交互接口,接收用户的指令HQL,然后使用自己的驱动器,结合元数据存储,将这些指令翻译成MapReduce任务,提交到Hadoop集群中执行,最后将执行的结果返回并输出到用户接口。Hive执行流程的大致步骤如下。 用户提交查询等任务给驱动器。 编译器获得该用户的任务计划Plan。 编译器根据用户任务计划去MetaStore中获取需要的Hive元数据信息。 编译器得到元数据信息,对任务计划进行编译。先将HQL语句转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑查询计划,重写逻辑查询计划,将逻辑计划转化为物理计划(MapReduce),最后选择最佳的策略。 将最终的计划提交给驱动

24、器。 驱动器将计划转交给执行器去执行,获取元数据信息,并提交给JobTracker或者SourceManager执行该任务,任务会直接读取HDFS中的文件进行相应的操作。 取得并返回执行结果。Hive执行流程1.4 Hive数据仓库和数据库比较Hive数据仓库与传统意义上的数据库是有区别的。一般来说,基于传统方式,可以用Oracle数据库或MySQL数据库来搭建数据仓库,数据仓库中的数据保存在Oracle或MySQL数据库中。Hive数据仓库和它们是不一样的,Hive数据仓库建立在Hadoop集群的HDFS之上。也就是说,Hive数据仓库中的数据是保存在HDFS上的。Hive数据仓库可以通过E

25、TL的形式来抽取、转换和加载数据。Hive提供了类似SQL的查询语句HQL,可以用“select * from表名;”来查询到Hive数据仓库中的数据,这与关系型数据库的操作是一样的。其实从结构上来看,Hive数据仓库和数据库除了拥有类似的查询语言,再无类似之处。下面将从多个方面来阐述Hive数据仓库和数据库的差异。(1)查询语言针对Hive特性设计了类SQL的查询语言HQL,因此,熟悉数据库SQL的开发者可以很方便地使用Hive进行开发统计分析。(2)数据存储系统Hive数据仓库使用Hadoop集群的HDFS来存储数据,而数据库则将数据保存在本地文件系统中。Hive数据仓库和数据库比较(3)

26、数据更新数据库中的数据通常是需要经常进行修改更新的,因此可以使用INSERT添加数据、使用UPDATE修改更新数据。由于Hive是针对数据仓库应用设计的,而数据仓库的内容是读多写少的,因此,Hive数据仓库中不建议对数据进行改写,所有的数据都是在加载时确定好的。(4)数据规模由于Hive数据仓库建立在Hadoop集群上并可以利用MapReduce进行并行计算,因此支持很大规模的数据;相对而言,数据库支持的数据规模较小。Hive数据仓库和数据库比较(5)执行延迟Hive数据仓库中大多数查询的执行是通过Hadoop集群提供的MapReduce来实现的,而数据库通常有自己的执行引擎。Hive数据仓库

27、在查询数据时,由于没有对数据中的某些key建立索引,需要扫描整个表中的所有数据,因此访问延迟较高。由于MapReduce本身具有较高的延迟,因此在利用MapReduce执行Hive查询时,也会有较高的延迟。当数据规模大到超过数据库的处理能力时,Hive数据仓库的并行计算显然能体现出优势。(6)可扩展性Hive数据仓库是建立在Hadoop集群之上的,所以Hive数据仓库的可扩展性和Hadoop集群的可扩展性是一致的。而数据库的扩展性非常有限。Hive数据仓库和数据库比较(7)应用场景Hive数据仓库是为海量数据做数据分析设计的,而数据库是为实时查询业务设计的。Hive数据仓库的实时性很差,实时性

28、的差别导致Hive数据仓库的应用场景和数据库有很大不同。Hive数据仓库构建在基于静态批处理的Hadoop集群之上,由于Hadoop集群通常都有较高的延迟并且在作业提交和调度时需要大量的开销,因此,Hive数据仓库并不适合那些需要低延迟的应用。它最适合应用在基于大量不可变数据的批处理作业中,例如网络日志分析。Hive数据仓库和数据库比较第2章 Hive环境搭建本章主要介绍Hive运行环境的完整安装过程与详细配置方法,包括Hive安装及配置、MySQL安装及配置、Hive元数据配置、Hive JDBC连接及Hive常见属性配置等内容。这些内容是Hive正常运行的基础和保证。2.1 Hive安装及

29、配置章内分节2.1.1 Hive的安装模式2.1.2 Hive安装及配置过程2.1.3 Hive基本操作2.2 MySQL安装及配置2.2.1 MySQL安装包准备2.2.2 MySQL服务器端安装 2.2.3 MySQL客户端安装2.3 Hive元数据配置2.3.1 驱动复制2.3.2 配置元数据到MySQL2.3.3 多终端启动Hive2.4 Hive JDBC连接2.4.1 HiveServer2配置 2.4.2 HiveServer2启动2.4.3 Beeline启动2.4.4 HiveServer2连接2.5 Hive常见属性配置2.5.1 Hive位置配置2.5.2 信息显示配置2

30、.5.3 运行日志信息配置 2.5.4 Hive参数配置方式2.1 Hive安装及配置Hive是依赖于Hadoop集群的,因此在安装Hive之前,需要保证已经搭建好Hadoop集群环境。在这里假设Hadoop集群环境已经安装成功。2.1.1 Hive的安装模式Hive有3种安装模式,分别对应不同的应用场景。元数据保存在内嵌的Derby数据库中,只允许一个会话连接。Hive嵌入模式有很大的局限性,只创建一个连接意味着同一时间只能有一个用户操作Hive数据仓库,所以嵌入模式用于演示。当尝试多个会话连接时会报错。嵌入模式使用关系型数据库(如MySQL)来存储元数据,是一种多用户的模式,支持多个用户的

31、客户端连接同一个数据库。这里有一个前提条件,每个用户必须要有对MySQL数据库的访问权利,即每个客户端使用者需要具有登录MySQL数据库的用户名和密码。MySQL数据库与Hive运行在同一台物理机器上。一般本地模式用于开发和测试。本地模式与本地模式一样,远程模式也会将元数据存储在MySQL数据库中,区别是远程模式可以将元数据存储在另一台物理机器上,也可以将元数据存储在另一种操作系统上。这种模式需要Hive安装目录下提供的Beeline和HiveServer2配合使用,将元数据作为一个单独的服务进行启动。各个用户的客户端通过Beeline来连接,连接之前无须知道数据库的登录密码。远程模式一般用于

32、生产环境中,允许多个连接是经常使用的模式。远程模式2.1.2 Hive安装及配置过程本书Hive版本使用apache-hive-2.1.0-bin.tar.gz安装包,该安装包可以直接从Hive官网下载。下面来介绍Hive本地模式的安装及属性配置方法。(1)目录创建在/opt目录下创建datas、software目录,用于存放数据文件和安装软件:hadoopSYNU:/opt$ sudo mkdir datashadoopSYNU:/opt$ sudo mkdir software(2)目录权限修改修改datas、software目录的所有者为用户hadoop:hadoopSYNU:/opt$

33、 sudo chown hadoop:hadoop datas/ software/Hive安装准备Hive安装及配置(1)安装包导入把apache-hive-2.1.0-bin.tar.gz安装包导入Linux系统本地的/opt/software目录下。(2)解压将安装包apache-hive-2.1.0-bin.tar.gz解压到/usr/local/目录下:hadoopSYNU:/opt/software$ tar -zxvf apache-hive-2.1.0-bin.tar.gz -C /usr/local/(3)修改名称把apache-hive-2.1.0-bin的名称更改为hiv

34、e:hadoopSYNU:/usr/local/apache-hive-2.1.0-bin$ mv apache-hive-2.1.0-bin/ hiveHive安装及配置(4)查看Hive目录结构hadoopSYNU:/usr/local/hive$ ll总用量 140drwxr-xr-x 9 hadoop hadoop 4096 1月 19 15:38 ./drwxr-xr-x 20 root root 4096 11月 5 2020 ./drwxr-xr-x 3 hadoop hadoop 4096 11月 5 2020 bin/drwxr-xr-x 2 hadoop hadoop 40

35、96 1月 23 13:49 conf/-rw-rw-r- 1 hadoop hadoop 0 1月 19 15:38 derby.logdrwxr-xr-x 4 hadoop hadoop 4096 11月 5 2020 examples/drwxr-xr-x 7 hadoop hadoop 4096 11月 5 2020 hcatalog/drwxr-xr-x 2 hadoop hadoop 4096 11月 5 2020 jdbc/drwxr-xr-x 4 hadoop hadoop 12288 1月 20 16:04 lib/-rw-r-r- 1 hadoop hadoop 29003

36、 6月 3 2020 LICENSE-rw-r-r- 1 hadoop hadoop 513 6月 3 2020 NOTICE-rw-r-r- 1 hadoop hadoop 4122 6月 3 2020 README.txt-rw-r-r- 1 hadoop hadoop 50294 6月 17 2020 RELEASE_NOTES.txtdrwxr-xr-x 4 hadoop hadoop 4096 11月 5 2020 scripts/Hive安装及配置(5)重要目录 bin目录:存放Hive相关服务执行操作的脚本。 conf目录:Hive的配置文件目录,存放Hive的配置文件。 lib

37、目录:存放Hive的各种依赖JAR包。 example目录:存放Hive的文档和官方案例。(6)配置环境变量sudo vi /etc/profileexport HIVE_HOME=/usr/local/hiveexport PATH=$PATH:$HIVE_HOME/binsource /etc/profileHive安装及配置(7)修改配置文件名称把/usr/local/hive/conf目录下的hive-env.sh.template名称更改为hive-env.sh:hadoopSYNU:/usr/local/hive/conf$ mv hive-env.sh.template hive

38、-env.sh(8)配置hive-env.sh文件 配置HADOOP_HOME路径:export HADOOP_HOME=/usr/local/hadoop 配置HIVE_CONF_DIR路径:export HIVE_CONF_DIR=/usr/local/hive/conf Hadoop集群目录创建(1)启动HDFS和YARNhadoopSYNU:/usr/local/hadoop$ sbin/start-dfs.shhadoopSYNU:/usr/local/hadoop$ sbin/start-yarn.sh(2)创建目录在HDFS上创建/tmp和/user/hive/warehouse

39、两个目录:hadoopSYNU:/usr/local/hadoop$ bin/hadoop fs -mkdir /tmphadoopSYNU:/usr/local/hadoop$ bin/hadoop fs -mkdir -p /user/hive/warehouse(3)修改同组权限为可执行权限hadoopSYNU:/usr/local/hadoop$ bin/hadoop fs -chmod g+w /tmphadoopSYNU:/usr/local/hadoop$ bin/hadoop fs -chmod g+w /user/hive/warehouse2.1.3 Hive基本操作(1)

40、启动HivehadoopSYNU:/usr/local/hive$ bin/hive(2)查看数据仓库hive show databases;(3)切换到默认(default)数据仓库hive use default;(4)显示default数据仓库中的表hive show tables;(5)在default数据仓库中创建一个表hive create table test(id int, name string);Hive基本操作(6)显示数据仓库中的表hive show tables;(7)查看表的结构hive desc test;(8)向表中插入数据hive insert into te

41、st values(100,Doug);(9)查询表中的数据hive select * from test;(10)退出Hivehive quit;2.2 MySQL安装及配置Hive元数据默认存储在自带的Derby数据库中。Derby数据库只支持单用户模式,不能并发调用Hive。而MySQL数据库存储元数据支持多用户模式,可以并发调用Hive,因此还需要安装MySQL。2.2.1 MySQL安装包准备MySQL安装包为mysql-libs.zip压缩文件。(1)查看MySQL是否安装,如果安装了,则卸载MySQLrootSYNU 桌面# rpm -qa|grep i mysqlmysql-l

42、ibs-5.1.73-7.el6.x86_64(2)解压安装包文件到software目录下rootSYNU:/opt/software# unzip mysql-libs.ziprootSYNU:/opt/software# lsmysql-libs.zipmysql-libsMySQL安装包准备(3)进入mysql-libs目录查看目录结构rootSYNU:/opt/software/mysql-libs# ll总用量 76048-rw-r-r-. 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm-rw-

43、r-r-. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz-rw-r-r-. 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm2.2.2 MySQL服务器端安装(1)安装MySQL服务器端rootSYNU:/opt/software/mysql-libs# rpm ivhMySQL-server-5.6.24-1.el6.x86_64.rpm(2)查看产生的随机密码rootSYNU:/opt/software/mysql-l

44、ibs# cat /root/.mysql_secretOEXaQuS8IWkG19Xs(3)查看MySQL状态rootSYNU:/opt/software/mysql-libs# service mysql status(4)启动MySQLrootSYNU:/opt/software/mysql-libs# service mysql start2.2.3 MySQL客户端安装(1)安装MySQL客户端rootSYNU:/opt/software/mysql-libs# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm(2)连接登录MySQLroot

45、SYNU:/opt/software/mysql-libs# mysql -uroot -pOEXaQuS8IWkG19Xs(3)修改密码mysqlSET PASSWORD=PASSWORD(000000);(4)退出MySQLmysqlexit;2.3.1 驱动复制(1)解压mysql-connector-java-5.1.27.tar.gz驱动包rootSYNU:/opt/software/mysql-libs# tar -zxvf mysql-connector-java-5.1.27.tar.gz(2)将解压的JAR包复制到/usr/local/hive/lib/目录下rootSYNU

46、 mysql-connector-java-5.1.27# cp mysql-connector-java-5.1.27-bin.jar/usr/local/hive/lib/2.3.2 配置元数据到MySQL(1)在/usr/local/hive/conf目录下创建一个hive-site.xml文件hadoopSYNU:/usr/local/hive/conf$ touch hive-site.xmlhadoopSYNU:/usr/local/hive/conf$ vi hive-site.xml(2)将官方文档配置参数复制到hive-site.xml文件中 javax.jdo.option

47、.ConnectionURLjdbc:mysql:/localhost:3306/metastore?createDatabaseIfNotExist=true JDBC connect string for a JDBC metastore javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver2.3.2 配置元数据到MySQL Driver class name for a JDBC metastore javax.jdo.option.ConnectionUserName hive username to use again

48、st metastore database javax.jdo.option.ConnectionPassword hive password to use against metastore database在该配置文件中,创建了名字为metastore的数据库用于存储元数据信息,并设置了登录MySQL数据库的用户名和密码,分别都是hive。配置完毕后,Hive就可以正常启动。如果启动Hive异常,可以重新启动虚拟机,并启动Hadoop集群。2.3.3 多终端启动Hive(1)启动MySQLhadoopSYNU:/opt/software/mysql-libs$ mysql -uhive -

49、phive查看有几个数据库:mysql show databases;+-+| Database |+-+| information_schema | mysql | performance_schema | test |+-+(2)打开多个终端,分别启动HivehadoopSYNU:/usr/local/hive$ bin/hive多终端启动Hive(3)启动Hive后,回到MySQL窗口查看数据库,显示增加了metastore数据库mysql show databases;+-+| Database |+-+| information_schema | metastore | mysql

50、| performance_schema | test |+-+2.4 Hive JDBC连接Hive是大数据技术中数据仓库应用的基础组件,是其他类似数据仓库应用的对比基准。基础的数据操作可以通过脚本方式由Hive客户端进行处理。若要开发应用程序,则需要使用Hive的JDBC驱动进行连接。Hive内置了HiveServer和HiveServer2服务器,两者都允许客户端使用多种编程语言进行连接,但是HiveServer不能处理多个客户端的并发请求,所以产生了HiveServer2。HiveServer2允许远程客户端使用各种编程语言向Hive提交请求并检索结果,支持多客户端并发访问和身份验证。

51、HiveServer2拥有自己的CLI(Beeline)。Beeline是一个基于SQLLine的JDBC客户端。由于HiveServer2是Hive开发维护的重点,所以推荐使用Beeline。2.4.1 HiveServer2配置切换到/usr/local/hive/conf目录下,修改hive-site.xml文件,写入以下配置信息:hadoopSYNU:/usr/local/hive/conf$ vim hive-site.xml hive.server2.thrift.port 10000 hive.server2.thrift.bind.host localhost 该配置信息配置了

52、HiveServer2的端口号和主机名。2.4.2 HiveServer2启动经过以上配置后,就可以在Beeline中连接Hive了。进入Hive的安装目录启动HiveServer2,执行以下两个命令都可以启动HiveServer2服务:hadoopSYNU:/usr/local/hive$ bin/hive -service hiveserver2hadoopSYNU:/usr/local/hive$ bin/hiveserver22.4.3 Beeline启动hadoopSYNU:/usr/local/hive$ bin/beelineBeeline version 2.1.0 by Ap

53、ache Hivebeeline2.4.4 HiveServer2连接在Beeline中连接HiveServer2,输入如下命令:beeline !connect jdbc:hive2:/localhost:10000Connecting to jdbc:hive2:/localhost:10000Enter username for jdbc:hive2:/localhost:10000: hiveEnter password for jdbc:hive2:/localhost:10000: *Connected to: Apache Hive (version 2.1.0)Driver:

54、Hive JDBC (version 2.1.0)Transaction isolation: TRANSACTION_REPEATABLE_READ0: jdbc:hive2:/localhost:10000 show databases;+-+-+| database_name |+-+-+| default |+-+-+此处输入的用户名及密码是在配置文件hive-site.xml中设置的用户名和密码。2.5.1 Hive位置配置 Hive数据仓库的默认存储位置是在HDFS的/user/hive/warehouse目录下。 在HDFS的/user/hive/warehouse目录下,没有为

55、默认(default)数据仓库创建目录。如果某个表属于default数据仓库,直接在该目录下新创建一个目录。 修改default数据仓库存储位置,将hive-default.xml.template中如下配置信息复制到hive-site.xml文件中:hive.metastore.warehouse.dir/user/hive/warehouselocation of default database for the warehouse2.5.2 信息显示配置 在hive-site.xml文件中添加如下配置信息,可以显示查询表的头部信息及当前数据仓库:hive.cli.print.header

56、truehive.cli.print.current.dbtrue 重新启动Hive,对比配置前后的差异,可以看到在查询结果中增加了表头的字段信息,在命令行中增加了当前所在的数据仓库信息。2.5.3 运行日志信息配置Hive的运行日志log默认存放在当前用户名下,例如/tmp/hadoop/hive.log目录下,可以更改它的存放位置。 将Hive的运行日志log存放到/usr/local/hive/logs目录下。修改/usr/local/hive/conf/perties.template文件名为perties:hadoopSYNU:/usr/local/hive/conf$perties

57、.template perties 在perties文件中修改log存放位置:hive.log.dir=/usr/local/hive/logs2.5.4 Hive参数配置方式使用set命令查看当前所有的配置信息 hive(hivedwh)set;参数配置的3种方式(1)配置文件方式Hive默认配置文件为hive-default.xml,用户自定义配置文件为hive-site.xml。当然,用户自定义配置会覆盖默认配置,并且Hive也会读入Hadoop的配置信息,因为Hive是作为Hadoop的客户端启动的,所以Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程

58、都有效。(2)命令行参数方式启动Hive时,可以在命令行添加-hiveconf param=value来设定参数。例如:hadoopSYNU:/usr/local/hive$bin/hive-hiveconf hive.cli.print.current.db= true;但这里仅对本次Hive启动有效。查看参数设置:hive(default)set hive.cli.print.current.db;参数配置的3种方式(3)参数声明方式可以在命令行模式下使用set命令设定参数。例如:hive(default)set hive.cli.print.current.db=true;这里也仅对本次

59、Hive启动有效。查看参数设置:hive(default)set hive.cli.print.current.db;上述三种设定参数配置方式的优先级依次递增,即配置文件方式命令行参数方式参数声明方式。第3章 Hive基础本章主要介绍Hive相关的基础知识,包括数据类型、运算符、Hive数据存储、文件存储格式及Hive的一些常用命令等。3.1 Hive数据类型章内分节3.1.1 基本数据类型3.1.2 复杂数据类型3.1.3 数据类型转换3.2 Hive运算符3.2.1 算术运算符3.2.3 逻辑运算符3.2.4 复杂运算符3.3 Hive数据存储3.4.1 行式存储和列式存储3.4.2 Te

60、xtFile格式3.4.3 SequenceFile格式3.4.4 ORC格式3.4.5 Parquet格式3.5 Hive常用交互命令3.2.2 比较运算符3.4 Hive表存储格式3.6 Hive其他操作命令3.1 Hive数据类型在创建Hive表时,须指定表字段的数据类型。Hive中的数据类型分为基本数据类型和复杂数据类型。基本数据类型包括数值类型、布尔类型、字符串类型、时间戳类型等。复杂数据类型包括数组(Array)类型、映射(Map)类型和结构体(Struct)类型等。3.1.1 基本数据类型基本数据类型见表3-1。基本数据类型描述示例Tinyint1字节有符号整数80Smallin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论