一、配置Hadoop环境
由于hive构建在Hadoop之上,先看看伪分布式下的Hadoop集群环境有没有错误的情况:
start-all.sh
jps查看伪分布式的所有进程是否完善
二、解压并配置Hive
Hive压缩包→ https://pan.baidu.com/s/1eOF_ICZV8rV-CEh3nX-7Xw 提取码: m31e 复制这段内容后打开百度网盘手机App,操作更方便哦
- 放在/opt/soft目录下
- 改名为hive312
1.编辑配置文件hive-site.xml
- 打开/opt/soft/hive312/conf/目录:cd /opt/soft/hive312/conf/
- 创建 hive-site.xml文件:touch hive-site.xml
[root@hadoop3 opt]# cd /opt/soft/hive312/conf/
[root@hadoop3 conf]# touch hive-site.xml
[root@hadoop3 conf]# vim hive-site.xml
配置文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/soft/hive312/warehouse</value>
</property>
<property>
<name>hive.metastore.db.type</name>
<value>mysql</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.153.134:3306/hive139?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123123</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
<description>关闭schema验证</description>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>提示当前数据库名</description>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>查询输出时带列名一起输出</description>
</property>
</configuration>
Tips:
下面这些需要根据进行更改。
2.编辑环境变量
#进入/etc/profile,添加如下代码
[root@hadoop3 conf]# vim /etc/profile
#HIVE_HOME
export HIVE_HOME=/opt/soft/hive312
export PATH=$PATH:$HIVE_HOME/bin
source一下使之生效。
3.检查系统guava版本
# 返回空值,说明没有安装
# 这里的路径是 hive312/lib 目录下
[root@hadoop3 conf]# ls ../lib/ | grep guava
我这里自带的是guava-19,为了防止版本问题导致安装失败,将其进行删除后重新安装。
# 删除guava-19
[root@hadoop3 conf]# rm -f ../lib/guava-19.0.jar
# 查找hadoop下的guava jar包
[root@hadoop3 conf]# find /opt/soft/hadoop313/ -name guava*
# 将查找到的hadoop下的guava jar包拷贝到hive目录下
[root@hadoop3 conf]# cp /opt/soft/hadoop313/share/hadoop/common/lib/guava-27.0-jre.jar ../lib/
4.更新MySQL的jar包
在hive312下面添加一个mysql-connector-java jar包
5.初始化MySQL数据库
[root@hadoop3 conf]# schematool -dbType mysql -initSchema
这样hive的安装就完成了。
hive不需要搭建集群,相当于Hadoop的一个客户端,通常使用单机就足够了。
三、启动hive
1.启动mr历史服务器
[root@hadoop3 conf]# mr-jobhistory-daemon.sh start historyserver
在端口号19888中可以看到历史命令
2.启动hive服务的三种方式
启动hive之前必须启动Hadoop的hdfs和yarn。
打开可视化窗口,可以看到我们新建的数据库。
A- shell客户端启动 - 输入hive即可
使用命令 hive 直接启动
B- 远程访问Hive - 使用beeline
需启动hiveserver2服务
前台启动:
nohup hive --service metastore &(非必须)
hive --service hiveserver2
后台启动:
nohup hive --service hiveserver2 &
输入beeline进入beeline交互模式
beeline -u jdbc:hive2://192.168.153.139:10000
3.hive服务部署
hiveserver2服务
hive的hiveserver2服务的作用是提供jdbc/odbc接口,为用户提供远程访问hive数据的功能,如用户期望在个人电脑中访问远程服务中的hive数据,就需要用到hiveserver2。
metastore服务
hive的meta store服务的作用时为hive cli或者hiveserver2提供元数据访问箭扣。
metastore运行模式
嵌入式模式:将metastore作为依赖嵌入到hiveserver2和每一个hive命令行客户端中。
独立服务模式:将metastore服务独立出来,单独启动一个服务。让metastore访问元数据库。metastore不负责存储元数据,只提供元数据的访问接口。
在生产环境中,不推荐使用嵌入式模式。因为:
- 嵌入式模式下,每个hive cli都需要直接连接元数据库。当hive cli较多时,数据库压力比较大。
- 每个客户端都需要用户元数据库的读写权限,元数据库的安全得不到恨到的保证。
四、hive使用技巧
1.hive常用交互命令
usage: hive
-d,--define <key=value> Variable substitution to apply to Hive
commands. e.g. -d A=B or --define A=B
--database <databasename> Specify the database to use
-e <quoted-query-string> SQL from command line
-f <filename> SQL from files
-H,--help Print help information
--hiveconf <property=value> Use value for given property
--hivevar <key=value> Variable substitution to apply to Hive
commands. e.g. --hivevar A=B
-i <filename> Initialization SQL file
-S,--silent Silent mode in interactive shell
-v,--verbose Verbose mode (echo executed SQL to the
console)
2.hive参数配置方式
查看当前所有的配置信息
hive> set;
参数配置的三种方式
- 配置文件方式:
默认配置文件:hive-default.xml
用户自定义配置文件:hive-site.xml。注意:用户自定义配置会覆盖默认配置 - 命令行参数方式:
启动hive时,在命令行添加 -hiveconf param=value来设定参数。仅对本次hive启动有效
查看参数设置:
hive (default)> set mapreduce.job.reduces;
mapreduce.job.reduces=-1
- 参数声明方式
在HQL中使用set关键字设定参数(仅对本次hive启动有效)。例如:
hive (default)> set mapreduce.job.reduces=10;
查看参数设置:
hive (default)> set mapreduce.job.reduces;
优先级:配置文件<命令行参数<参数声明