欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hive简介以及安装

程序员文章站 2022-04-29 20:59:00
...

Hive 简介

Hive 由 Facebook 开源用于解决海量结构化日志的数据统计

Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类 SQL 查询的功能

Hive 是构建在 Hadoop 之上的数据仓库

使用HQL作为查询接口

使用 HDFS 存储

使用 MapReduce 进行计算,本质是把 HQL 转化为 MapReduce 程序

灵活性和扩展性比较好,支持 UDF,自定义存储格式等

比较适合离线数据处理

Hive 架构图

Hive简介以及安装

驱动器:Driver,包含:解析器,编译器,优化器,执行器

解析器:将 SQL 字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在,字段是否存在,SQL 语义是否有误,(比如 select 中被判定为聚合的字段在 group by 中是否有出现)

编译器:将 AST 编译生成逻辑执行计划

优化器:对逻辑执行计划进行优化

执行器:把逻辑执行计划转换成可运行的物理计划。对于 Hive 来说,就是 MapReduce。

Hive 优点与使用场景

(1)操作接口采用类 SQL 语法,提供快速开发的能力(简单容易上手)

(2)避免了去写 MapReduce,减少开发人员的学习成本

(3)统一的元数据管理,可与 Impala/Spark 共享元数据

(4)易扩展(HDFS + MapReduce,可以扩展集群规模,支持自定义函数)

(5)数据的离线处理,比如日志分析,海量结构化数据离线分析

Hive 的安装和使用

(1)下载

从cdh下载页下载

http://archive.cloudera.com/cdh5/cdh/5/

hive-1.1.0-cdh5.11.1.tar.gz

下载好后上传至服务器的/home/hadoop/software,并解压至/home/hadoop/app目录下

mv hive-1.1.0-cdh5.11.1.tar.gz hive

(2)配置

配置hive-env.sh(在hive主目录下的conf文件夹下)

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/home/hadoop/app/hadoop
 
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/home/hadoop/app/hive/conf

配置hive-site.xml

由于hive中的元数据(即所有的数据库信息、表信息、及表字段信息)需要存储在关系型数据库中,而hive内置了derby数据库,但是使用这个数据库的缺点是,

hive提供的hiveserver2只能一个用户访问,所以需要配置mysql,使元数据存储在mysql上

(3)安装mysql

安装mysql很容易,使用yum安装即可

首先卸载已经有的mysql

sudo rpa -qa|grep mysql

sudo yum remove …

sudo rm -rf /etc/my.conf

安装:

sudo yum install mysql mysql-server mysql-devel -y

安装完成后,设置为跟随机器启动chkconfig –list |grep mysql

chkconfig mysqld on 

启动mysql服务

service mysqld start 

设置mysql密码

(一开始安装好后,密码为空直接进去即可)

mysql -uroot -p

进去命令行之后,设置密码

SET PASSWORD=PASSWORD(“123456”)

设置所有用户都可以用root用户连接进来use mysql;select user,host,password from user;update user set host=’%’ where user=’root’ and host=’localhost’;即可

Hive简介以及安装

 

(4)配置hive的元数据服务 hive-site.xml

<configuration>
<property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://hadoop001:3306/metastore_new?createDatabaseIfNotExist=true</value>
          <description>JDBC connect string for a JDBC metastore</description>
        </property>
 
        <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
          <description>Driver class name for a JDBC metastore</description>
        </property>
 
        <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>root</value>
          <description>username to use against metastore database</description>
        </property>        <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>123456</value>
          <description>password to use against metastore database</description>
        </property>
        <property>
                <name>hive.server2.thrift.port</name>
                <value>10000</value>
        </property>
 
        <property>
                <name>hive.server2.thrift.bind.host</name>
                <value>hadoop001</value>
        </property>
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://hadoop001:9083</value>
        </property>
</configuration>

(5)下载mysql驱动包到hive的lib目录下

(6)bin/hive

即可打开命令行

相关标签: Hive技术 Hive