Hadoop生态圈(七)──Hive的认识的安装

文章目录

  • 为什么要使用Hive(优点)
  • Hive系统结构
  • 数据想象
  • Hive的Driver的原理
  • Hive的搭建
  • 今日总结
  • ==友情链接==

前言
Hadoop生态圈(七)──Hive的认识的安装_第1张图片

Hive 是建立在 Hadoop 基础上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 QL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hadoop生态圈(七)──Hive的认识的安装_第2张图片
Hive 是 SQL解析引擎,它将SQL语句转译成Map/Reduce Job然后在Hadoop执行。Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在Map/Reduce Job里使用这些数据。

为什么要使用Hive(优点)

1.解决了MapReduce编程的复杂性。我们在早期学习MapReduce 的时候,都知道它需要创建Mapper,Reduce和Job。写起逻辑来不是太容易的,学习成本是比较高的。底层封装了MapReduce和HDFS…
Hadoop生态圈(七)──Hive的认识的安装_第3张图片
2.Hdfs上的文件缺少Schema。例如:缺少 字段名,数据类型等,不方面数据进行有效管理。

2.1 什么是Schema

在数据库中,Schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas andschemata都可以作为复数形式。模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系。(翻译自:http://database.guide/what-is-a-database-schema/**)

3. 解决海量结构化数据的统计问题

4.如果是我们做项目使用MapReduce的话项目周期比较短的话,无法满足项目对时间的要求

5.操作类接口采用mysql的话可以帮助我们快速开发

6.从扩展性来说:可自由扩展集群规模而无需重启服务,还支持用户自定义函数

Hive系统结构

Hadoop生态圈(七)──Hive的认识的安装_第4张图片

借图说话,我们可以看出Hive的组成部分大致可以分为两种,一种是客户端组件而另一种是服务端组件。而我们的客户端组件是有哪些组成的?而我们的服务端的又是那些部分组成的呢?
 
 客户端组件:
 
  1.Cli:Command Line Interface 命令行接口
 
  2.Thrift客户端:Thrift是一款由Fackbook开发的可伸缩、跨语言的服务开发框架,该框架已经开源并且加入的Apache项目。Thrift主要功能是:通过自定义的Interface Definition Language(IDL),可以创建基于RPC的客户端和服务端的服务代码。数据和服务代码的生成是通过Thrift内置的代码生成器来实现的。Thrift 的跨语言性体现在,它可以生成C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml , Delphi等语言的代码,且它们之间可以进行透明的通信。说白了,增加扩展性让我们的Hive更加的完善。
3.WEBGUI:hive客户端提供了一种通过网页的方式访问hive所提供的服务。这个接口对应hive的hwi组件(hive web interface),使用前要启动hwi服务。

 
服务端组件:

Driver组件:该组件包括ComplierOptimizerExecutor,它的作用是将我们写的HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,然后调用底层的mapreduce计算框架。
  Metastore组件:元数据服务组件,这个组件存储hive的元数据,hive的元数据存储在关系数据库里,hive支持的关系数据库有derby、mysql。元数据对于hive十分重要,因此hive支持把metastore服务独立出来,安装到远程的服务器集群里,从而解耦hive服务和metastore服务,保证hive运行的健壮性,这个方面的知识,我会在后面的metastore小节里做详细的讲解。
  Thrift服务端:thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。

数据想象

 元数据和源数据的理解,首先我们可以进行场景的想象,我相信大家在儿时上学的时候都会背着一个大书包去快乐的上学去。
 里面装满了很多文具盒,课本,练习手册....我们可以把我们身上背的书包可以理解是元数据,专业术语解释:元数据就是描述数据的数据,我们把它理解为数据的容器。
 而我们的文具和书籍就可以理解为源数据,源数据就是数据。
 对于数据库而言,元数据相当于我们表中的字段,而字段的内容就是数据......

Hive的Driver的原理

Hadoop生态圈(七)──Hive的认识的安装_第5张图片
Hive当中的Driver负责的功能是解析Sql和优化sql,负责把任务提交给MapReduce处理然后交给Hadoop集群。

SQL转化为MapReduce任务的,整个编译过程分为下面几个阶段:

1.首先定义sql语法规则,完成sql的编译。它会找出sql语句的关键字,比如说是我的sql是
select id from stu; 那么它会寻找出处select关键字.
2.优化:将select进行优化,转化为树。相当于放入hive树林之中。
3.编译:将select进行编译,会对sql进行逻辑的编写。根据不同的业务逻辑进行sql的编写。
4.执行阶段:将逻辑计划实现,然后交给MapReduce进行执行。

Hive的搭建

1.准备Hive的安装包
我在这里准备的是1.2.1版本的jar包,对于版本我想几个注意的地方:我们在公司开发项目前,都会对版本进行一个调查,去官网准备。尤其是在做大数据开发的时候Hive的版本和Hadoop集群的不匹配的话,也会导致发生错误。所以在开发的时候,一定要注意这些版本的控制与梳理。
在这里插入图片描述
2.解压文件

 tar -zxvf hive-1.2.1.tar.gz

3.安装mysql

安装mysql数据库
   推荐yum 在线安装(运行脚本安装)

4.修改配置文件

(a)配置HIVE_HOME环境变量  
		vi conf/hive-env.sh 
		配置其中的$hadoop_home
		
(b)配置元数据库信息  
		vi  hive-site.xml 
		添加如下内容:
		
		
		javax.jdo.option.ConnectionURL
		jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
		JDBC connect string for a JDBC metastore
		

		
		javax.jdo.option.ConnectionDriverName
		com.mysql.jdbc.Driver
		Driver class name for a JDBC metastore
		

		
		javax.jdo.option.ConnectionUserName
		root
		username to use against metastore database
		

		
		javax.jdo.option.ConnectionPassword
		root
		password to use against metastore database
		
		

5.mysql权限管理

安装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
	如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
	mysql -uroot -p
	
	设置密码
	set password=password('root');
	
	#(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)
	GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
	
	FLUSH PRIVILEGES;
	
	
	通过mysql -uroot -proot

6.Jline版本冲突

. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 
	6.1、 cp hive/lib/jline-2.12.jar /opt/software/hadoop-2.6.4/share/hadoop/yarn/lib/
	6.2、装hive和mysq完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下

今日总结

一.安装Hive出现的问题

1.首先版本冲突的问题 Hadoop的版本和Hive版本jar包要保持一致
2.hive配置的mysq配置 root 和 value 一致一致一致!(重要的事情说三遍)
3.配置信息 一定要source
4.使用hive 一定要开启集群 不开启集群你想啥呢!!!

二.认知

有的时候面对一些事情你真的无能为力,但是这个世界没有你想象的那么糟糕!一切刚刚好…

友情链接

1.特别喜欢的一位博主:https://www.cnblogs.com/edisonchou/p/4426096.html
2.友情连接:https://www.cnblogs.com/qingyunzong/p/8707885.html

你可能感兴趣的:(Hadoop,Hive)