Hive教程(一) Hive入门教程

 

 

Hive教程() Hive入门教程

 

1 Hive入门教程

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,总归为大数据,并使得查询和分析方便。

Hive中,HiveSQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。Hive的表其实就是HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/RJob里使用这些数据。

最初,Hive是由Facebook开发,后来由Apache软件基金会开发,并作为进一步将它作为名义下ApacheHive为一个开源项目。它用在好多不同的公司。例如,亚马逊使用它在Amazon ElasticMapReduce 

1.1 Hive原理图


1-1 Hive系统架构图

1.2 Hive系统架构

Hive系统架构图:

1、用户接口:

CLI,即Shell命令行。

JDBC/ODBC HiveJava,与使用传统数据库JDBC的方式类似。

WebGUI是通过浏览器访问 Hive

2、Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++,Java, Go,Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript,Node.js, Smalltalk, and OCaml这些编程语言间无缝结合的、高效的服务。

3、解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。

4、Hive的数据存储在 HDFS中,大部分的查询由 MapReduce完成(包含 * 的查询,比如 select *from table不会生成 MapRedcue任务)。

5、Hive将元数据存储在数据库中(metastore),目前只支持mysqlderbyHive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

 

Metastore组件:

HiveMetastore组件是Hive元数据集中存放地。Metastore组件包括两个部分:Metastore服务和后台数据的存储。后台数据存储的介质就是关系数据库,例如Hive默认的嵌入式磁盘数据库derby,还有mysql数据库。Metastore服务是建立在后台数据存储介质之上,并且可以和Hive服务进行交互的服务组件,默认情况下,Metastore服务和Hive服务是安装在一起的,运行在同一个进程当中。我也可以把Metastore服务从Hive服务里剥离出来,Metastore独立安装在一个集群里,Hive远程调用Metastore服务,这样我们可以把元数据这一层放到防火墙之后,客户端访问Hive服务,就可以连接到元数据这一层,从而提供了更好的管理性和安全保障。使用远程的Metastore服务,可以让Metastore服务和hive服务运行在不同的进程里,这样也保证了Hive的稳定性,提升了Hive服务的效率。

 

Hive的执行流程如下图所示:


Hive的执行流程图

 

1.3 前置条件

Hive是建立Hadoop环境安装之上的,所以需要Hadoop的集群环境搭建,Hive即需要依赖于HDFS又需要依赖YARN。安装好Hadoop后需要进行启动HDFSYARN

环境安装参考资料:

1、安装《VMware安装Linux教程》地址:http://blog.csdn.net/yuan_xw/article/details/49827477

2、安装《Linux网络配置与远程连接》地址:http://blog.csdn.net/yuan_xw/article/details/49945007

3、安装《Hadoop教程()Hadoop分布式集群部署安装》

地址:http://blog.csdn.net/yuan_xw/article/details/51175171

4、安装《MySQL环境安装()》地址:http://blog.csdn.net/yuan_xw/article/details/77983704

 

5、Hive规划图

主机名

IP

安装软件

运行进程

Hadoop1

192.168.197.128

JdkHadoop

NameNodeDFSZKFailoverController

Hadoop2

192.168.197.129

JdkHadoop

NameNodeDFSZKFailoverController

Hadoop3

192.168.197.130

JdkHadoop

ResourceManagerHiveMySQL

Hadoop4

192.168.197.131

JdkHadoopZookeep

DataNodeNodeManagerJournalNodeQuorumPeerMain

Hadoop5

192.168.197.132

JdkHadoopZookeep

DataNodeNodeManagerJournalNodeQuorumPeerMain

Hadoop6

192.168.197.133

JdkHadoopZookeep

DataNodeNodeManagerJournalNodeQuorumPeerMain

 

环境安装参考资料:

1、Hive下载地址:http://mirror.bit.edu.cn/apache/hive/hive-2.3.0/apache-hive-2.3.0-bin.tar.gz

2、HadoopHbase版本关系表:

Hive版本

Hadoop版本

Hive-2.3.0

2.x.y

Hive-2.2.0

2.x.y

Hive-2.1.1

2.x.y

Hive-2.1.0

2.x.y

Hive-2.0.0

2.x.y

Hive-1.2.2

1.x.y2.x.y

Hive-1.2.1

1.x.y2.x.y

Hive-1.0.1

1.x.y2.x.y

Hive-1.1.1

1.x.y2.x.y

Hive-1.0.1

1.x.y2.x.y

Hive-1.0.0

1.x.y2.x.y

Hive-0.13.1

0.20.x 0.23.x.y1.x.y 2.x.y

Hive-0.13.0

0.20.x 0.23.x.y1.x.y 2.x.y

Hive-0.12.0

0.20.x 0.23.x.y1.x.y 2.x.y

Hive-0.11.0

0.20.x 0.23.x.y1.x.y 2.x.y

Hive-0.10.0

0.20.x 0.23.x.y1.x.y 2.x.y

 

1.4 下载Hive

1、Hive下载:

执行命令:wget http://mirror.bit.edu.cn/apache/hive/hive-2.3.0/apache-hive-2.3.0-bin.tar.gz


 

2、解压Hive

bin:包含hive的命令shell脚本

binary-package-licenses:包含了LICENSE说明文件

conf:包含hive配置文件

examples:包含了示例

hcatalogMetastore操作的元数据目录

jdbc:提供了hive-jdbc-2.3.0-standalone.jar

scripts:提供了sql脚本


 

3、修改环境变量:

执行命令:vi /etc/profile

export JAVA_HOME=/usr/local/software/jdk1.8.0_66

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export HADOOP_HOME=/usr/local/software/hadoop_2.7.1

export HBASE_HOME=/usr/local/software/hbase_1.2.2

export HIVE_HOME=/usr/local/software/apache-hive-2.3.0-bin

export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin:$PATH

执行命令:source /etc/profile   刷新环境变量

1.5 修改Hive配置文件

1、修改hive-site.xml配置文件:

执行命令:

cd/usr/local/software/apache-hive-2.3.0-bin/conf/

mv hive-default.xml.templatehive-site.xml


2、新建 hdfs目录

使用 hadoop新建 hdfs目录,因为在 hive-site.xml中有默认如下配置:

<property>
	<name>hive.metastore.warehouse.dir</name>
	<value>/user/hive/warehouse</value>
	<description>location of defaultdatabase for the warehouse</description>
</property>

3、进入 hadoop安装目录执行hadoop命令新建/user/hive/warehouse目录,并授权,用于存储文件

hadoop fs -mkdir -p /user/hive/warehouse

hadoop fs -mkdir -p /user/hive/tmp

hadoop fs -mkdir -p /user/hive/log

hadoop fs -chmod -R 777 /user/hive/warehouse

hadoop fs -chmod -R 777 /user/hive/tmp

hadoop fs -chmod -R 777 /user/hive/log

 

# 用以下命令检查目录是否创建成功

hadoop fs -ls /user/hive


 

4、修改 hive-site.xml

搜索hive.exec.scratchdir,将该name对应的value修改为/user/hive/tmp

<property>
	<name>hive.exec.scratchdir</name>
	<value>/user/hive/tmp</value>
</property>

搜索hive.querylog.location,将该name对应的value修改为/user/hive/log/hadoop

<property>
	<name>hive.querylog.location</name>
	<value>/user/hive/log/hadoop</value>
	<description>Location of Hive run time structured logfile</description>
</property>

搜索javax.jdo.option.connectionURL,将该name对应的value修改为MySQL的地址

<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>
	<description>
		JDBC connectstring for a JDBC metastore.
		To use SSL toencrypt/authenticate the connection, provide
		database-specific SSL flag in theconnection URL.
		For example,jdbc:postgresql://myhost/db?ssl=true for postgres database.
	</description>
</property>

搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径

<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
	<description>Driverclass name for a JDBC metastore</description>
</property>

搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名

<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
	<description>Username touse against metastore database</description>
</property>

搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码

<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>root</value>
	<description>password to useagainst metastore database</description>
</property>

创建tmp目录

执行命令:mkdir -p/usr/local/software/apache-hive-2.3.0-bin/tmp


5、修改 hive-site.xml

${system:java.io.tmpdir}改成/usr/local/software/apache-hive-2.3.0-bin/tmp

${system:user.name}改成${user.name}


6、修改hive-env.sh

mv hive-env.sh.template hive-env.sh

HADOOP_HOME=/usr/local/software/hadoop_2.7.1

export HIVE_CONF_DIR=/usr/local/software/apache-hive-2.3.0-bin/conf



7、下载 mysql驱动包

执行命令:

cd/usr/local/software/apache-hive-2.3.0-bin/lib/

wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.38/mysql-connector-java-5.1.38.jar

 


1.6 初始化MySQL

1、MySQL数据库进行初始化,首先确保 mysql 中已经创建 hive库:

执行命令:

cd /usr/local/software/apache-hive-2.3.0-bin/bin

 ./schematool-initSchema -dbType mysql


              看到红框的内容表示初始化成功。

2、MySQL数据库进行初始化,首先确保 mysql 中已经创建 hive库:


3、查看hive库中所有的表


 

1.7 启动Hive

1、启动Hive

执行命令:/usr/local/software/apache-hive-2.3.0-bin/bin/hive


              在命令行显示:OK表示已经查看数据库成功。

 

1.8 学习Hive推荐书籍:

1. Hive编程指南》

2. Hadoop应用架构》

3. Hadoop技术内幕:深入解析Hadoop CommonHDFS架构设计与实现原理》

4. Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》

5. Hadoop技术内幕:深入解析YARN架构设计与实现原理》

 

 

                --以上为《Hive教程(一) Hive入门教程》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

                                                                                                                                                                                      ——厚积薄发(yuanxw)


  • 55
    点赞
  • 353
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值