三种模式的区别
安装模式 | matedata位置存放位置 | matestore部署方式 |
内嵌模式 | 本地内嵌数据derby中 | 内嵌 |
本地模式 | 独立数据库中 | 内嵌 |
远程模式 | 独立数据库中 | 独立启动 |
hive依赖hadoop,安装hive之前需要确保hadoop集群正常启动
hadoop安装参考:centos7安装hadoop(集群模式) - zhangyukun
几种组件之间的关系
metedata metastore hiveserver2 beeline hive客户端 之间的关系
- metadate
metadata是元数据,是描述hive的数据表和hdfs上的数据文件是怎么联系起来的。
或者说metadata就是描述数据文件映射成表的描述文件,当然还有一些事描述数据库等等的元数据。
默认是存储在内嵌的derby数据库中,可以指定到外部数据库中。
常见的数据库都可以用于存放hive的元数据mysql,oracle,postgresql,sql server,DB2 - metastore
metastore 负责存取元数据,但是它不支持多个客户端连接,多个连接需要由hiveserver2来维持。
独立启动的时候占用8083端口,启动hive客户端如果没有配置hive.metastore.uris参数会启动一个内嵌的不占用端口 - hiveserver2
维持和客户端的连接,支持多个客户端的远程连接,维持权限
hiveserver2通过hive-site.xml里面的hive.metastore.uris参数确定metastore的位置
hiveserver2默认占用10000端口,web界面端口10002 - beeline
一个可以连接hiveserver2的命令行工具 - hive客户端
一个只能直接连接metastore的命令行工具
hive客户端通过hive-site.xml里面的hive.metastore.uris参数确定metastore的位置,如果没有这个参数就会启动一个内嵌的metastore。
内嵌模式
- 修改hadoop配置文件,设置代理用户主机和代理组
cd /opt/hadoop-3.3.6/etc/hadoop
vi core-site.xml
分发配置,然后重启hadoop集群
- 用hadoop里面guava新版本的jar包替换hive里面的jar包
- 下载hive包(apache-hive-3.1.3-bin.tar.gz),然后解压,我再放/opt下面
- 修改hive配置文件
vi hive-env.sh
- 初始化数据库
初始化以后在当前目录多了一个存储metastore_db,和一个derby.log文件
- 启动hive客户端
只能在执行了初始化的目录启动,并且如果不同目录方位的到的metastore不一样,读取到的数据也不一样
本地模式
- 安装mysql
参考: - 修改hadoop配置文件,设置代理用户主机和代理组
cd /opt/hadoop-3.3.6/etc/hadoop
vi core-site.xml
分发配置,然后重启hadoop集群
- 下载hive包(apache-hive-3.1.3-bin.tar.gz),然后解压,我再放/opt下面
- 用hadoop里面guava新版本的jar包替换hive里面的jar包
- 上传mysql驱动包(mysql-connector-java-8.0.15.jar),到hive的 lib目录
- 创建配置文件hive-site.xml。(hive-default.xml.template里面有很多默认配置,下面的配置里面都有)
vi hive-site.xml
- 初始化数据库
- 初始化数据库以后会在mysql 中创建对应的数据库和表
- 启动客户端
远程模式
- 安装mysql
参考: - 修改hadoop配置文件,设置代理用户主机和代理组
cd /opt/hadoop-3.3.6/etc/hadoop
vi core-site.xml
分发配置,然后重启hadoop集群
- 下载hive包(apache-hive-3.1.3-bin.tar.gz),然后解压,我再放/opt下面
- 用hadoop里面guava新版本的jar包替换hive里面的jar包
- 上传mysql驱动包(mysql-connector-java-8.0.15.jar),到hive的 lib目录
- 创建配置文件hive-site.xml。(hive-default.xml.template里面有很多默认配置,下面的配置里面都有)
vi hive-site.xml
- 初始化数据库
- 初始化数据库以后会在mysql 中创建对应的数据库和表
- 启动metastore
- 启动 hiveserver2
hiveserve2连接的是metastore(更具hive.metastore.uris参数指定的地址)
- 启动客户端(hive客户端默认连接的本地的metastore)
- 启动beeline客户端,并且连接hiveserver2