资源描述
单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2021/9/7,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2021/9/7,#,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,2021/9/7,#,第,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,数据仓库的概念,数据库已经在信息技术领域有了广泛的应用,社会生活的各个领域几乎都有各种各样的数据库保存着各种数据。数据仓库作为数据库的一个分支,其概念的提出相对于数据库从时间上就晚得多。,比尔恩门(,Bill Inmon,)在,1991,年出版的,Building the Data Warehouse,一书中所提出的数据仓库定义被广泛接受。数据仓库(,Data Warehouse,)是一个面向主题的(,Subject Oriented,)、集成的(,Integrated,)、相对稳定的(,Non-Volatile,)、随时间变化(,Time Variant,)的数据集合,用于支持管理决策(,Decision Making Support,)。,传统数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题进行组织的。主题是与传统数据库的面向应用相对应的,它是一个抽象概念,是在较高层次上将信息系统中的数据综合、归类并进行分析利用的抽象。每个主题对应一个宏观的分析领域。数据仓库排除对于决策无用的数据,提供特定主题的简明视图。例如商品推荐系统是基于数据仓库所构建出来的一个系统,它最关心的主题就是商品信息。,数据仓库是面向主题的,数据仓库中的数据是在对原有分散的数据库中的数据进行抽取、清理的基础上,经过系统加工、汇总和整理得到的。必须消除原来的数据中的不一致性,以保证数据仓库内的信息是一致的全局信息。数据仓库是一个集成的数据库。也就是说,数据库中的数据来自分散型的、操作型的数据,把分散型的、操作型的数据从原来的数据中抽取出来,经过加工和处理,然后满足一定的要求,这样的数据才能进入数据仓库。,原来的数据可以来自,Oracle,,也可以来自,MySQL,,或者来自文本文件或其他的文件系统。把不同的数据集成起来就形成了一个数据仓库。,数据仓库是集成的,数据仓库中的数据主要供决策分析使用,所涉及的数据操作主要是数据查询。一旦某些数据进入数据仓库后,一般情况下将被长期保留。也就是说,数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期加载、刷新。,数据仓库是相对稳定的,数据仓库内的数据并不只是反映企业当前的状态,而是记录了从过去某一时间点到当前各个阶段的数据。数据仓库中的数据是随着时间的推移而变化并且逐渐增加的数据的集合。,数据仓库是随时间变化的,数据仓库的主要技术,(,1,)并行,计算的硬件环境、操作系统环境、数据库管理系统及所有相关的数据库操作、查询工具和技术、应用程序等各个领域都可以从并行的最新成果中获益。,(,2,)分区,分区功能使得支持大型表和索引更容易,同时也提高了数据管理和查询性能及查询效率。,(,3,)数据压缩,数据压缩功能降低了数据仓库环境中通常需要的用于存储大量数据的磁盘系统的成本,新的数据压缩技术也已经消除了压缩数据对查询性能造成的负面影响。,1.1.2,数据仓库的特点,(,1,)效率足够高,数据仓库的分析数据一般按照时间周期分为日、周、月、季、年等类型数据。以日为周期的数据要求的效率最高,要求,24,小时内用户能看到数据分析结果。,(,2,),数据质量,数据仓库所提供的各种数据,要求是准确的数据,但由于数据仓库工作流程通常分为多个步骤,包括数据清洗、装载、查询、展现等,如果数据源有脏数据或者代码不严谨,可能导致数据失真,用户看到错误的信息就可能导致错误的决策,从而造成损失。,(,3,)扩展性,扩展性主要体现在数据建模的合理性上,数据仓库中扩展出一些中间层,使海量数据流有足够的缓冲,不至于因为数据量增大很多就运行不起来。,1.1.3,数据仓库的数据模型,数据仓库系统是一个信息提供平台,主要以星状模型和雪花模型进行数据组织,并为用户提供各种手段从数据中获取信息。,星状模型是搭建数据仓库的基本数据模型。在星状模型基础上发展起来的一种新型模型称为雪花模型。雪花模型应用在一些更复杂的场景中。,星状模型是一种由一个中心点向外辐射的模型。例如,对于商品推荐系统,面向的主题就是商品信息。与商品信息相关联的首先是用户信息,用户会购买商品,商品会形成订单,所以与订单信息是相关的。商品进行物流,所以肯定也会有物流信息,另外也会有促销信息。商品是由厂家生产的,所以肯定有厂家信息。这样就以商品信息为核心建立起来一个星状模型,这是一个面向商品信息主题的模型。,雪花模型是基于星状模型发展起来的。在商品信息这个主题的基础上进行扩展,例如以用户信息为核心,用户信息又是一个主题,与用户信息相关的会有用户的家庭信息、用户的地址信息、用户的教育背景信息,另外还有用户的银行信息等。当然,还会有其他信息与用户相关。这是以用户信息为主题来看的,也可以以其他主题来看,比如厂家信息,与厂家信息相关的信息很明显就有厂家的地址信息、员工信息等。所以这个模型就会越扩展越大,从而形成雪花模型。,星状模型和雪花模型是大型数据仓库中最基本的两个模型,用户可以根据自己的实际情况选择一种合适的模型来搭建数据仓库。,1.1.3,数据仓库的数据模型,以商品推荐系统为例建立星状模型和雪花模型,详见图,1-1,和图,1-2,。,图,1-1,星状模型 图,1-2,雪花模型,1.1.3,数据仓库的数据模型,1.1.4,数据仓库的体系结构,从功能结构划分,数据仓库系统至少应包含数据获取(,Data Acquisition,)、数据存储(,Data Storage,)、数据访问(,Data Access,)三个核心部分。,数据源是数据仓库系统的基础,是整个数据仓库系统的数据源泉。数据通常存储在关系型数据库中,比如,Oracle,或者,MySQL,。数据还可能来自文档资料,比如,CSV,文件或者,TXT,文件。数据也可能来自一些其他的文件系统。数据库是整个数据仓库系统的核心,是数据存放的地方并提供对数据检索的支持。,元数据是描述数据仓库内数据的结构和建立方法的数据。元数据为访问数据仓库提供了一个信息目录(,Information Directory,),这个目录全面描述了数据仓库中都有什么数据、这些数据怎么得到的及怎么访问这些数据,是数据仓库运行和维护的中心。数据仓库服务器利用它来存储和更新数据,用户通过它来了解和访问数据。,数据仓库的体系结构,对不同的数据进行抽取(,Extract,)、转换(,Transform,)和装载(,Load,)的过程,也就是通常所说的,ETL,过程。抽取是指把数据源的数据按照一定的方式从各种各样的存储方式中读取出来。对各种不同数据存储方式的访问能力是数据抽取工具的关键。因为不同数据源的数据的格式可能会有所不同,不一定能满足需求,所以还要按照一定的规则进行转换。,数据转换包括:删除对,决策,应用没有意义的数据,转换为统一的数据名称和定义及格式,计算统计和衍生数据,给缺值数据赋予默认值,把不同的数据定义方式统一。只有转换后符合要求的数据才能进行装载。装载就是将满足格式要求的数据存储到数据仓库中。,数据仓库的体系结构,数据的存储与管理是整个数据仓库系统的核心。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式,并针对现有各业务系统的数据进行抽取、清理及有效集成,按照主题进行组织。,数据仓库管理包括:管理安全和权限;跟踪数据的更新;检查数据质量;管理和更新元数据;审计和报告数据仓库的使用及状态;删除数据;复制、分割和分发数据;备份和恢复;存储管理。,数据仓库的体系结构,数据仓库的一个重要功能就是对外提供服务,所以需要数据仓库引擎。而在数据仓库引擎中包含不同的服务器,不同的服务器会提供不同的服务。比如,服务里面有数据的查询或者报表工具,还有数据的分析工具及其他的应用。这些功能都称为前端展示。前端展示的数据来自数据仓库引擎的各个服务,而服务又读取数据库中的数据。,信息发布系统功能是把数据仓库中的数据或其他相关的数据发送给不同的,地点,或用户。基于,Web,的信息发布系统是多用户访问的最有效方法。,数据仓库的体系结构,1.2 Hive,数据仓库,Hadoop,是由,Apache,基金会开发的分布式系统基础架构,是利用集群对大量数据进行分布式存储和处理的软件框架。用户可以轻松地在,Hadoop,集群上开发和运行处理海量数据的应用程序。,Hadoop,框架最核心的设计就是,HDFS,(,Hadoop Distributed File System,,,Hadoop,分布式文件系统)和,MapReduce,。,HDFS,为海量的数据提供了存储服务,,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 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,语句快速实现简单的,MapReduce,统计计算,十分适合数据仓库的统计分析。,所有,Hive,处理的数据都存储在,HDFS,中,,Hive,在加载数据过程中不会对数据进行任何修改,只是将数据移动或复制到,HDFS,中,Hive,设定的目录下。所以,Hive,不支持对数据的改写和添加,所有数据都是在加载时确定的。,Hive,数据仓库,Hive,定义了类,SQL,查询语言,称为,HQL,(,Hive Query Language,,,Hive,查询语言)。,Hive,是,SQL,语句解析引擎,,Hive,将用户的,SQL,语句通过解释器等工具转换为,MapReduce,任务,并提交到,Hadoop,集群上,,Hadoop,监控任务执行过程,然后返回任务执行结果给用户。,Hive,不是为联机事务处理(,OLTP,)而设计的,,Hive,并不提供实时的查询和基于行级的数据更新操作。,Hive,数据仓库,简单、容易上手,简化了,MapReduce,应用程序的编写。,操作接口采用,HQL,语法,提供快速开发的能力。,Hive,常用于数据分析,对实时性要求不高。,Hive,常用于处理大数据,对于处理小数据没有优势。,用户可以根据需求来实现用户自定义函数。,Hive,的优点,(,1,),Hive,的,HQL,语句表达能力有限,无法表达迭代算法。,不擅长数据挖掘,,Hive,常用于数据分析。,(,2,),Hive,的效率比较低,Hive,自动生成,MapReduce,任务,不够智能化。,Hive,调优比较困难。,Hive,的缺点,1.3 Hive,体系结构及执行流程,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,语句,这条语句实际上会被解析成,MapReduce,任务,并提交到集群上,得到的最终结果会被反馈给客户端,这个工作就是由,JobTracker,完成的。有了,Hadoop,集群之后,就可以在其上构建,Hive,数据仓库。,Hadoop,集群,由于在,Hive,中需要操作,Hadoop,集群,所以在,Hive,体系结构中,会有,Hive,驱动器。,Hive,驱动器包括解析器、编译器、优化器和执行器,负责,HQL,语句的执行过程。,Hive,执行的,HQL,语句首先提交给驱动器,然后调用编译器解释驱动,最终解释成,MapReduce,任务执行,最后将结果返回给客户端。,解析器(,HQL Parser,):将,HQL,语句转换成抽象语法树(,AST,);对,AST,进行语法分析,比如表是否存在、字段是否存在、,HQL,语义是否正确。,编译器(,Compiler,):将,AST,编译生成逻辑执行计划。,优化器(,Query Optimizer,):对逻辑执行计划进行优化。,执行器(,Execution,):把逻辑执行计划转换成可以运行的,MapReduce,任务。,驱动器,用户接口主要有三个:,CLI,(,Command Line Interface,)、,Thrift Server,和,HWI,(,Hive Web Interface,),其中最常用的是,CLI,。,Client,是,Hive,的客户端,,Hive,启动后,用户连接至,HiveServer,。客户端可以直接在命令行模式下进行操作。通过命令行,用户可以创建表、执行查询等操作。,Hive,提供了,Thrift Server,,用来提供访问服务。通过这个服务器,可以使用不同的程序语言,如,Java,、,Python,,它们都可以连接到,Thrift Server,上,通过解析器、编译器、优化器和执行器,执行,Hadoop,集群的操作。,Hive,提供了更直观的,Web,操作控制台,可以执行查询语句和其他命令,这样就可以不用登录到集群中的某台计算机上使用,CLI,来进行查询工作。,用户接口,Hive,中的表对应于,Hadoop,集群中的目录,所以表的存储位置等信息会存储在元数据中。这种信息与表中数据没有任何关系,它反应的是表本身的信息,这种信息称为元数据。,Hive,中的元数据包括表名、表所属的数据仓库、表的所有者、列,/,分区字段、表的类型(是否是外部表)、表的数据所在目录等。,由于,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,目录,,student,表有,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,通过给用户提供的一系列交互接口,接收用户的指令,HQL,,然后使用自己的驱动器,结合元数据存储,将这些指令翻译成,MapReduce,任务,提交到,Hadoop,集群中执行,最后将执行的结果返回并输出到用户接口。,Hive,执行流程的大致步骤如下。,用户提交查询等任务给驱动器。,编译器获得该用户的任务计划,Plan,。,编译器根据用户任务计划去,MetaStore,中获取需要的,Hive,元数据信息。,编译器得到元数据信息,对任务计划进行编译。先将,HQL,语句转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑查询计划,重写逻辑查询计划,将逻辑计划转化为物理计划(,MapReduce,),最后选择最佳的策略。,将最终的计划提交给驱动器。,驱动器将计划转交给执行器去执行,获取元数据信息,并提交给,JobTracker,或者,SourceManager,执行该任务,任务会直接读取,HDFS,中的文件进行相应的操作。,取得并返回执行结果。,Hive,执行流程,1.4 Hive,数据仓库和数据库比较,Hive,数据仓库与传统意义上的数据库是有区别的。一般来说,基于传统方式,可以用,Oracle,数据库或,MySQL,数据库来搭建数据仓库,数据仓库中的数据保存在,Oracle,或,MySQL,数据库中。,Hive,数据仓库和它们是不一样的,,Hive,数据仓库建立在,Hadoop,集群的,HDFS,之上。也就是说,,Hive,数据仓库中的数据是保存在,HDFS,上的。,Hive,数据仓库可以通过,ETL,的形式来抽取、转换和加载数据。,Hive,提供了类似,SQL,的查询语句,HQL,,可以用“,select*from,表名,;,”来查询到,Hive,数据仓库中的数据,这与关系型数据库的操作是一样的。,其实从结构上来看,,Hive,数据仓库和数据库除了拥有类似的查询语言,再无类似之处。下面将从多个方面来阐述,Hive,数据仓库和数据库的差异。,(,1,),查询语言,针对,Hive,特性设计了类,SQL,的查询语言,HQL,,因此,熟悉数据库,SQL,的开发者可以很方便地使用,Hive,进行开发统计分析。,(,2,),数据存储系统,Hive,数据仓库使用,Hadoop,集群的,HDFS,来存储数据,而数据库则将数据保存在本地文件系统中。,Hive,数据仓库和数据库比较,(,3,),数据更新,数据库中的数据通常是需要经常进行修改更新的,因此可以使用,INSERT,添加数据、使用,UPDATE,修改更新数据。由于,Hive,是针对数据仓库应用设计的,而数据仓库的内容是读多写少的,因此,,Hive,数据仓库中不建议对数据进行改写,所有的数据都是在加载时确定好的。,(,4,),数据规模,由于,Hive,数据仓库建立在,Hadoop,集群上并可以利用,MapReduce,进行并行计算,因此支持很大规模的数据;相对而言,数据库支持的数据规模较小。,Hive,数据仓库和数据库比较,(,5,),执行延迟,Hive,数据仓库中大多数查询的执行是通过,Hadoop,集群提供的,MapReduce,来实现的,而数据库通常有自己的执行引擎。,Hive,数据仓库在查询数据时,由于没有对数据中的某些,key,建立索引,需要扫描整个表中的所有数据,因此访问延迟较高。由于,MapReduce,本身具有较高的延迟,因此在利用,MapReduce,执行,Hive,查询时,也会有较高的延迟。当数据规模大到超过数据库的处理能力时,,Hive,数据仓库的并行计算显然能体现出优势。,(,6,),可扩展性,Hive,数据仓库是建立在,Hadoop,集群之上的,所以,Hive,数据仓库的可扩展性和,Hadoop,集群的可扩展性是一致的。而数据库的扩展性非常有限。,Hive,数据仓库和数据库比较,(,7,),应用场景,Hive,数据仓库是为海量数据做数据分析设计的,而数据库是为实时查询业务设计的。,Hive,数据仓库的实时性很差,实时性的差别导致,Hive,数据仓库的应用场景和数据库有很大不同。,Hive,数据仓库构建在基于静态批处理的,Hadoop,集群之上,由于,Hadoop,集群通常都有较高的延迟并且在作业提交和调度时需要大量的开销,因此,,Hive,数据仓库并不适合那些需要低延迟的应用。它最适合应用在基于大量不可变数据的批处理作业中,例如网络日志分析。,Hive,数据仓库和数据库比较,第,2,章,Hive,环境搭建,本章主要介绍,Hive,运行环境的完整安装过程与详细配置方法,包括,Hive,安装及配置、,MySQL,安装及配置、,Hive,元数据配置、,Hive JDBC,连接及,Hive,常见属性配置等内容。这些内容是,Hive,正常运行的基础和保证。,2.1 Hive,安装及配置,章内分节,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,配置元数据到,MySQL,2.3.3,多终端启动,Hive,2.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.5.3,运行日志信息配置,2.5.4 Hive,参数配置方式,2.1 Hive,安装及配置,Hive,是依赖于,Hadoop,集群的,因此在安装,Hive,之前,需要保证已经,搭建,好,Hadoop,集群环境。在这里假设,Hadoop,集群环境已经安装成功。,2.1.1 Hive,的安装模式,Hive,有,3,种安装模式,分别对应不同的应用场景。,元数据保存在内嵌的,Derby,数据库中,只允许一个会话连接。,Hive,嵌入模式有很大的局限性,只创建一个连接意味着同一时间只能有一个用户操作,Hive,数据仓库,所以嵌入模式用于演示。当尝试多个会话连接时会报错。,嵌入模式,使用关系型数据库(如,MySQL,)来存储元数据,是一种多用户的模式,支持多个用户的客户端连接同一个数据库。这里有一个前提条件,每个用户必须要有对,MySQL,数据库的访问权利,即每个客户端使用者需要具有登录,MySQL,数据库的用户名和密码。,MySQL,数据库与,Hive,运行在同一台物理机器上。一般本地模式用于开发和测试。,本地模式,与本地模式一样,远程模式也会将元数据存储在,MySQL,数据库中,区别是远程模式可以将元数据存储在另一台物理机器上,也可以将元数据存储在另一种操作系统上。这种模式需要,Hive,安装目录下提供的,Beeline,和,HiveServer2,配合使用,将元数据作为一个单独的服务进行启动。各个用户的客户端通过,Beeline,来连接,连接之前无须知道数据库的登录密码。远程模式一般用于生产环境中,允许多个连接是经常使用的模式。,远程模式,2.1.2 Hive,安装及配置过程,本书,Hive,版本使用,apache-hive-2.1.0-bin.tar.gz,安装包,该安装包可以直接从,Hive,官网下载。,下面来介绍,Hive,本地模式的安装及属性配置方法。,(,1,)目录创建,在,/opt,目录下创建,datas,、,software,目录,用于存放数据文件和安装软件:,hadoopSYNU:/opt$sudo mkdir datas,hadoopSYNU:/opt$sudo mkdir software,(,2,)目录权限修改,修改,datas,、,software,目录的所有者为用户,hadoop,:,hadoopSYNU:/opt$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,的名称更改为,hive,:,hadoopSYNU:/usr/local/apache-hive-2.1.0-bin$mv,apache-hive-2.1.0-bin/hive,Hive,安装及配置,(,4,)查看,Hive,目录结构,hadoopSYNU:/usr/local/hive$ll,总用量,140,drwxr-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 4096 1,月,23 13:49 conf/,-rw-rw-r-1 hadoop hadoop 0 1,月,19 15:38 derby.log,drwxr-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 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.txt,drwxr-xr-x 4 hadoop hadoop 4096 11,月,5 2020 scripts/,Hive,安装及配置,(,5,)重要目录,bin,目录:存放,Hive,相关服务执行操作的脚本。,conf,目录:,Hive,的配置文件目录,存放,Hive,的配置文件。,lib,目录:存放,Hive,的各种依赖,JAR,包。,example,目录:存放,Hive,的文档和官方案例。,(,6,)配置环境变量,sudo vi/etc/profile,export HIVE_HOME=/usr/local/hive,export PATH=$PATH:$HIVE_HOME/bin,source/etc/profile,Hive,安装及配置,(,7,)修改配置文件名称,把,/usr/local/hive/conf,目录下的,hive-env.sh.template,名称更改为,hive-env.sh,:,hadoopSYNU:/usr/local/hive/conf$mv hive-env.sh.template hive-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,和,YARN,hadoopSYNU:/usr/local/hadoop$sbin/start-dfs.sh,hadoopSYNU:/usr/local/hadoop$sbin/start-yarn.sh,(,2,)创建目录,在,HDFS,上创建,/tmp,和,/user/hive/warehouse,两个目录:,hadoopSYNU:/usr/local/hadoop$bin/hadoop fs-mkdir/tmp,hadoopSYNU:/usr/local/hadoop$bin/hadoop fs-mkdir-p /user/hive/warehouse,(,3,)修改同组权限为可执行权限,hadoopSYNU:/usr/local/hadoop$bin/hadoop fs-chmod g+w/tmp,hadoopSYNU:/usr/local/hadoop$bin/hadoop fs-chmod g+w/user/hive/warehouse,2.1.3 Hive,基本操作,(,1,)启动,Hive,hadoopSYNU:/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 test values(100,Doug);,(,9,)查询表中的数据,hive select*from test;,(,10,)退出,Hive,hive quit;,2.2 MySQL,安装及配置,Hive,元数据默认存储在自带的,Derby,数据库中。,Derby,数据库只支持单用户模式,不能并发调用,Hive,。而,MySQL,数据库存储元数据支持多用户模式,可以并发调用,Hive,,因此还需要安装,MySQL,。,2.2.1 MySQL,安装包准备,MySQL,安装包为,mysql-libs.zip,压缩文件。,(,1,)查看,MySQL,是否安装,如果安装了,则卸载,MySQL,rootSYNU,桌面,#rpm-qa|grep i mysql,mysql-libs-5.1.73-7.el6.x86_64,(,2,)解压安装包文件到,software,目录下,rootSYNU:/opt/software#unzip mysql-libs.zip,rootSYNU:/opt/software#ls,mysql-libs.zip,mysql-libs,MySQL,安装包准备,(,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-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.rpm,2.2.2 MySQL,服务器端安装,(,1,)安装,MySQL,服务器端,rootSYNU:/opt/software/mysql-libs#rpm ivh,MySQL-server-5.6.24-1.el6.x86_64.rpm,(,2,)查看产生的随机密码,rootSYNU:/opt/software/mysql-libs#cat/root/.mysql_secret,OEXaQuS8IWkG19Xs,(,3,)查看,MySQL,状态,rootSYNU:/opt/software/mysql-libs#service mysql status,(,4,)启动,MySQL,rootSYNU:/opt/software/mysql-libs#service mysql start,2.2.3 MySQL,客户端安装,(,1,)安装,MySQL,客户端,rootSYNU:/opt/software/mysql-libs#rpm-ivh,MySQL-client-5.6.24-1.el6.x86_64.rpm,(,2,)连接登录,MySQL,rootSYNU:/opt/software/mysql-libs#mysql-uroot,-pOEXaQuS8IWkG19Xs,(,3,)修改密码,mysqlSET PASSWORD=PASSWORD(000000);,(,4,)退出,MySQL,mysqlexit;,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 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.xml,hadoopSY
展开阅读全文