1.Hive产生背景

Hive是基于Hadoop的一个数据仓库工具,可以将 结构化的数据文件 映射为一张表 (类似于RDBMS中的表),并提供类SQL查询功能;Hive是由Facebook开源,用于解决海量结构化日志的数据统计。
Hive本质是:将 SQL 转换为 MapReduce 的任务进行运算
底层由HDFS来提供数据存储
可以将Hive理解为一个:将 SQL 转换为 MapReduce 任务的工具

2.Hive架构

image.png

3. Hive安装配置

Hive官网:http://hive.apache.org
下载网址:http://archive.apache.org/dist/hive/
文档网址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual

3.1 安装软件:Hive(2.3.7) + MySQL (5.7.26)

备注:Hive的元数据默认存储在自带的 derby 数据库中,生产中多采用MySQL

  1. # 整体的安装步骤:
  2. 1、安装MySQL
  3. 2、安装配置Hive
  4. 3Hive添加常用配置

3.1.1 MySQL安装

  • 删除MariaDB

    1. # 查询是否安装了mariadb
    2. rpm -aq | grep mariadb
    3. # 删除mariadb。-e 删除指定的套件;--nodeps 不验证套件的相互关联性
    4. rpm -e --nodeps mariadb-libs
  • 安装依赖

    1. yum install perl -y
    2. yum install net-tools -y
  • 安装MySqL

    1. # 解压缩
    2. tar xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
    3. # 依次运行以下命令
    4. rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
    5. rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
    6. rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
    7. rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
  • mysql相关配置 ```

    启动数据库

    systemctl start mysqld

    查找root密码

    grep password /var/log/mysqld.log

    修改root口令

    进入MySQL,使用前面查询到的口令

    mysql -u root -p

    设置口令强度;将root口令设置为12345678;刷新

    set global validate_password_policy=0; set password for ‘root’@’localhost’ =password(‘12345678’); flush privileges;

  1. - 创建hive用户

— 创建用户设置口令、授权、刷新 CREATE USER ‘hive’@’%’ IDENTIFIED BY ‘12345678’; GRANT ALL ON . TO ‘hive’@’%’; FLUSH PRIVILEGES;

  1. <a name="Tbwxd"></a>
  2. #### 3.1.2 Hive安装

下载Hive软件,并解压缩 cd /opt/lagou/software tar zxvf apache-hive-2.3.7-bin.tar.gz -C ../servers/ cd ../servers mv apache-hive-2.3.7-bin hive-2.3.7

  1. - 修改环境变量

在 /etc/profile 文件中增加环境变量

export HIVE_HOME=/opt/lagou/servers/hive-2.3.7 export PATH=$PATH:$HIVE_HOME/bin

执行并生效

source /etc/profile

  1. - 修改 Hive 配置
  2. - cd $HIVE_HOME/conf vi hive-site.xml 增加以下内容

<?xml version=”1.0” encoding=”UTF-8” standalone=”no”?> <?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>

javax.jdo.option.ConnectionURL jdbc:mysql://ndoe-3:3306/hivemetadata? createDatabaseIfNotExist=true&useSSL=false JDBC connect string for a JDBC metastore javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver Driver class name for a JDBC metastore

javax.jdo.option.ConnectionUserName hive username to use against metastore database javax.jdo.option.ConnectionPassword 12345678 password to use against metastore database

  1. - 拷贝 MySQL JDBC 驱动程序
  2. - mysql-connector-java-5.1.46.jar 拷贝到 $HIVE_HOME/lib
  3. - 初始化元数据库

[root@linux123 ~]$ schematool -dbType mysql -initSchema

  1. - 启动Hive,执行命令

启动hive服务之前,请先启动hdfs、yarn的服务

[root@linux123 ~]$ hive hive> show functions;

  1. - Hive 属性配置
  2. 可在 hive-site.xml 中增加以下常用配置,方便使用 <br /> 数据存储位置

hive.metastore.warehouse.dir /user/hive/warehouse location of default database for the warehouse

  1. 显示当前库

hive.cli.print.current.db true Whether to include the current database in the Hive prompt.

  1. 显示表头属性

hive.cli.print.header true

  1. 本地模式

hive.exec.mode.local.auto true Let Hive determine whether to run in local mode automatically

  1. - Hive的日志文件
  2. Hivelog默认存放在 /tmp/root 目录下(root为当前用户名);这个位置可以修 改。

vi $HIVE_HOME/conf/hive-log4j2.properties

添加以下内容:

property.hive.log.dir = /opt/lagou/servers/hive-2.3.7/logs

  1. - 添加第三方用户(Hadoop

groupadd hadoop

-m:自动建立用户的登入目录

-g:指定用户所属的起始群组

-G<群组>:指定用户所属的附加群组

-s:指定用户登入后所使用的shell

useradd -m hadoop -g hadoop -s /bin/bash passwd hadoop visudo

在100行后添加。允许用户执行sudo,免密

hadoop ALL=(ALL) NOPASSWD:ALL

  1. <a name="InWsp"></a>
  2. ## 4. Hive命令
  3. - -e不进入hive交互窗口,执行sql语句

hive -e “select * from users”

  1. - -f:执行脚本中sql语句

创建文件hqlfile1.sql,内容:select * from users

执行文件中的SQL语句

hive -f hqlfile1.sql

执行文件中的SQL语句,将结果写入文件

hive -f hqlfile1.sql >> result1.log

  1. - 在命令行执行 shell 命令 / dfs 命令

hive> ! ls; hive> ! clear; hive> dfs -ls / ; ```