一、配置Hadoop环境

由于hive构建在Hadoop之上,先看看伪分布式下的Hadoop集群环境有没有错误的情况:

start-all.sh
jps查看伪分布式的所有进程是否完善

hive编程指南 豆瓣 hive编程指南 百度网盘_hadoop

二、解压并配置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:

下面这些需要根据进行更改。

hive编程指南 豆瓣 hive编程指南 百度网盘_xml_02

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包

hive编程指南 豆瓣 hive编程指南 百度网盘_hadoop_03

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;

优先级:配置文件<命令行参数<参数声明