1、Hive安装地址
1)Hive官网地址hive.apache.org/
2)文档查看地址cwiki.apache.org/confluence/…
3)下 载 地 址 archive.apache.org/dist/hive/
4) github 地 址github.com/apache/hive
2、Hive安装部署
2.1、安装部署Hive
- 1、把apache-hive-3.1.2-bin.tar.gz上传到linux的/opt/software目录下
- 2、解压到module目录中
tar zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module
- 3、修改名字为hive
mv apache-hive-3.1.2-bin /opt/module/hive
- 4、修改/etc/profile.d/my_env.sh文件,将hive的/bin目录添加到环境变量
sudo vim /etc/profile.d/my_env.sh
添加如下配置
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
source一下
source /etc/profile.d/my_env.sh
- 5、需要将hive的/lib目录下的log4j-slf4j-impl-2.10.0.jar重命名即可
mv lib/log4j-slf4j-impl-2.10.0.jar lib/log4j-slf4j-impl-2.10.0.back
- 6、在hive根目录下,使用/bin目录中的schematool命令初始化hive自带的Derby元数据库
bin/schematool -dbType derdy -initSchema
2.2、启动Hive
- 1、执行/bin目录下的hive命令,就可以启动hive,并通过cli方式连接到hive
bin/hive
- 2、使用Hive
show databases;
show tables;
select * from test2;
2.3、Hive自带的元数据库的问题
Hive默认使用的元数据库为derby并且部署方式是内嵌式,在开启Hive之后就会独占元数据库,且不与其他客户端共享数据,如果想多窗口操作就会报错,操作比较局限。因此我们可以使用元数据服务的方式MetaStore元数据库或者直接采用MySQL*作为元数据库,就可以支持多窗口操作。
3、MySql安装
3.1、MySQL安装部署
- 1、检查当前系统是否安装过Mysql,如果存在就是用下列命令移除,如果不存在则忽略
rpm -ga|grep mariadb
- 2、如果存在则卸载
sudo rpm -e --nodeps mariadb-libs
- 3、将MySQL安装包上传到/opt/software目录下
- 4、在software目录中创建目录mysql_jars(注意用的tar的结尾的包需要用-xf命令来解压)
mkdir mysql_jars
tar -xf /opt/software/mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C /opt/software/mysql_jars
- 5、执行一下代码
sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
- 6、切换到mysql_jars的目录中
cd mysql_kars
- 7、执行以下命令
sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rp
sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
- 8、删除mysql的数据存储目录下的所有数据,目录地址在/etc/my.cnf文件中datadir指向的目录下的所有内容
cd /var/lib/mysql
sudo rm -rf ./*
- 9、初始化数据库(这个是mysql数据库安装后的初始化)
sudo mysqld --initialize --user=mysql
- 10、初始化完成后,查看临时生成的root用户的密码,也是首次登录msql的密码
sudo cat /var/log/mysqld.log
- 11、启动MySQL服务
sudo systemctl start mysqld
- 12、登录MySQL数据库
mysql -uroot -p
Enter password: (你的暂时密码) //输入临时生成的密码
- 13、设置新的密码否则无法使用
set password = password("新密码")
- 14、需要其他用户直接访问使用修改mysql库下的user表中的root用户允许任意ip连接
update mysql.user set host='%' where user='root';
- 15、刷新,使的修改生效
flush privileges;
4、配置Hive元数据库为MySql
4.1、拷贝驱动
- 1、先上传驱动包mysql-connector-java-5.1.37.jar到software
cp mysql-connector-java-5.1.37.jar /opt/module/hive/lib
- 2、配置Metastore到MySql 在$HIVE_HOME/conf目录下新建hive-site.xml文件添加如下内容
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>你的密码</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- Hive元数据存储的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- 元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
4.2 Hive初始化元数据库
- 1、登陆MySQL
mysql -uroot -p你的密码
- 2、新建Hive元数据库
create database metastore;
- 3、初始化Hive元数据
bin/schematool -initSchema -dbType mysql -verbose
4.3、启动Hive
- 1、先启动hadoop集群
- 2、启动Hive
bin/hive
- 3、使用Hive
- 4、开启另一个窗口测试,是否支持客户端并发访问测试
5、元数据的三种访问方式
在此模式中会连接到一个in-memory的数据库Derby中,一般用于单元测试。 在内嵌模式下,命令行执行jps –ml命令,只能看到一个CliDriver进程。
5.1、元数据库内嵌模式
jps -ml
7170 sun.tools.jps.Jps -ml
2467 org.apache.hadoop.hdfs.server.namenode.NameNode
2676 org.apache.hadoop.hdfs.server.datanode.DataNode
3364 org.apache.hadoop.yarn.server.nodemanager.NodeManager
3656 org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer
6127 org.apache.hadoop.util.RunJar /opt/module/hive/lib/hive-cli-3.1.2.jar org.apache.hadoop.hive.cli.CliDriver
5.2元数据库直连模式
通过网络连接到一个关系型数据库中,上面我们配置元数据库位MySQL时,就是这种模式
5.3 MetaStore 访问元数据库模式
在服务器端启动MetaStore服务,客户端利用Thrift协议通过MetaStore服务访问元数据库。
元数据服务的访问方式更适合在生产环境中部署使用,相比内嵌式,该方式更加的灵活。
将Derby最为元数据库,部署元数据服务
- 1、首先,将hive的元数据库配置为Derby
vim conf/hive-site.xml
- 2、在hive-site.xml文件中添加如下配置信息
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
- 3 启动元数据服务(在配置了此参数后,启动hive之前必须先启动元数据服务,否则,hive启动后无法连接到元数据服务)
bin/hive --service meatstor
- 4、启动hive,查看表及表中数据,是否是Derby数据库中的表
- 5、1) 在另一个窗口启动hive,测试多客户端能否同时连接操作。
5.4 将Mysql做为元数据库,部署元数据服务
- 1、首先,将hive的元数据库配置为Mysql
vim conf/hive-site.xml
- 2、在hive-site.xml文件中添加如下配置信息
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
- 3、启动元数据服务
bin/hive --service metastore
- 4、启动 hive,查看表及表中数据,是否是Mysql数据库中的表。
- 5、在另一个窗口启动hive,测试多客户端能否同时连接操作。