大数据开发之Apache Hive

大数据开发之Apache Hive

1.概述

Apache Hive 是一款建立在hadoop生态之上的开源数据仓库系统,可以把储存在Hadoop文件中结构化,半结构化得到数据文件映射成一张数据库表,然后基于数据库表提供一种类似SQL的查询模型,也叫Hive 查询语言 ,简称HQL;

然后是Hive 的核心就是把HQL转化成MapReduce 程序,然后把转化后的 MapReduce 程序提交到Hadoop 集群执行

为什么使用Hive

直接编写Hadoop 的MapReduce 程序 是需要一定的学习成本,比如要有Java基础,后再是复杂数据查询关联,排序,去重等逻辑编写较为复杂;

Hive提供类似SQL 的方式,我们可以快速上手,编写SQL 来分析和处理海量数据;

Hive和Hadoop 的关系

作为一款数据仓库软件,最起码要有这个数据存储和数据分析的能力;

Hive 借助hadoop 来实现

  • 数据存储 Hive 利用Hadoop的Hdfs 来存储数据
  • 数据分析 Hive 利用Hadoop的MapReduce来分析数据

可以看到Hive 其实做的就只有一个功能,解析HQL变成MapReduce , 存储分析的能力都是基于Hadoop 的组件来完成的

2.Hive架构

大数据开发之Apache Hive_第1张图片

  • UI – 用户向系统提交查询和其他操作的用户界面。截至 2011 年,该系统具有命令行界面,并且正在开发基于 Web 的 GUI。
  • Driver – 接收查询的组件。该组件实现了会话句柄的概念,并提供了以 JDBC/ODBC 接口为模型的执行和获取 API。
  • 编译器——包括语法解析器、计划编译器、优化器、执行器;解析查询,对不同的查询块和查询表达式进行语义分析,并最终在从元存储中查找的表和分区元数据的帮助下生成执行计划。
  • Metastore – 存储仓库中各种表和分区的所有结构信息的组件,包括列和列类型信息、读取和写入数据所需的序列化器和反序列化器以及存储数据的相应 HDFS 文件。
  • 执行引擎——执行编译器创建的执行计划的组件。该计划是一个阶段的 DAG。执行引擎管理计划的这些不同阶段之间的依赖关系,并在适当的系统组件上执行这些阶段。Hive本身并不直接处理数据文件。而是通过执行引擎处理,当下Hive支持MapReduce、Tez、Spark3种执行引擎

3.Hive Metastore

Hive Metastore 是管理Hive 元数据的一个组件或者叫服务

Metadata,又称元数据,描述数据的数据;比如说我们常见的数据库字段,这个可以叫做元数据;

Hive 的元数据Hive Metadata,我们都知道Hive 的数据存储是使用Hadoop中文件保存的,那这些个hadoop的文件对应我们HQL 里面那个表? 这个是有Hive Metastore 来进行记录的;Hive Metastore包括Hive 的database ,table,字段属性,字段顺序,表的hadoop-hdfs 存储的位置;

元数据的存储方式两大类,一个Hive 自带的Derby存储,或者第三方的存储比如MySQL;

Hive Metastore预案数据服务管理 hive Metadata,对外提供服务地址,客户端连接Hive Metastore 而不是直接保存元数据的数据库,一定程度上保证了元数据的安全

metastore服务配置有3种模式:内嵌模式、本地模式、远程模式

内嵌模式 本地模式 远程模式
Metastore 单独部署启动
Metadata 存储 自带Derby 第三方MySQL 第三方MySQL

4.Hive 部署

前置准备

Hadoop集群正常可用,集群时间同步,防火墙设置,主机名称,免密登录,JDK ,环境变量等安装成功;

4.1 Hadoop Hive整合

Hive需要把数据存储在HDFS上,此需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行

修改Hadoop中core-site.xml,并且Hadoop集群同步配置文件,重启生效


<property>
    <name>hadoop.proxyuser.root.hostsname>
    <value>*value>
property>

<property>
    <name>hadoop.proxyuser.root.groupsname>
    <value>*value>
property>

4.2 MySQL 安装

略略略

4.4 安装包

在主节点上安装Hive

tar zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin/ hive
# 解决Hive与Hadoop之间guava版本差异
cd /soft/server/apache-hive-3.1.2-bin/
rm -rf lib/guava-19.0.jar
cp /soft/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/

修改 hive-env.sh

cd /soft/server/apache-hive-3.1.2-bin/conf
mv hive-env.sh.template hive-env.sh
vim hive-env.sh
export HADOOP_HOME=/soft/server/hadoop-3.3.0
export HIVE_CONF_DIR=/soft/server/apache-hive-3.1.2-bin/conf
export HIVE_AUX_JARS_PATH=/soft/server/apache-hive-3.1.2-bin/lib

新增 hive-site.xml

<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://192.168.141.155:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionDriverName</name>
	<value>com.mysql.jdbc.Driver</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionUserName</name>
	<value>root</value>
</property>

<property>
	<name>javax.jdo.option.ConnectionPassword</name>
	<value>hadoop</value>
</property>

<!-- H2S运行绑定host -->
<property>
    <name>hive.server2.thrift.bind.host</name>
    <value>node1</value>
</property>

<!-- 远程模式部署metastore metastore地址 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node1:9083</value>
</property>

<!-- 关闭元数据存储授权  --> 
<property>
    <name>hive.metastore.event.db.notification.api.auth</name>
    <value>false</value>
</property>
</configuration>

4.5 初始化

上传MySQL JDBC驱动到Hive安装包lib路径下 mysql-connector-java-5.1.32.jar,初始化Hive的元数据

cd /soft/server/apache-hive-3.1.2-bin/
bin/schematool -initSchema -dbType mysql -verbos

4.6 启动服务

#前台启动
/soft/apache-hive-3.1.2-bin/bin/hive --service metastore
#前台启动开启debug日志
/soft/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console
##后台启动、
nohup /soft/apache-hive-3.1.2-bin/bin/hive --service metastore &

4.7 hive 客户端

大数据开发之Apache Hive_第2张图片

分别对应下面的脚本 beeline 和hive

[root@node1 bin]# pwd
/soft/apache-hive-3.1.2-bin/bin
[root@node1 bin]# ll
总用量 44
-rwxr-xr-x. 1 root root   881 823 2019 beeline
drwxr-xr-x. 3 root root  4096 712 21:45 ext
-rwxr-xr-x. 1 root root 10158 823 2019 hive
....

首先启动metastore服务,然后才可以启动hiveserver2服务

nohup /soft/servers/hive/bin/hive --service metastore &
nohup /soft/servers/hive/bin/hive --service hiveserver2 &

5.Hive 使用

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

你可能感兴趣的:(大数据之路,hive,大数据,hadoop)