Hive的安装和配置

来源:千峰科技王从明老师

第三节:Hive的简介

3.1 什么是Hive

Hive是一个数据仓库的工具,它可以将一个分布式文件系统上的有结构的文件映射成一张表,可以使用类sql语言

进行对文件的查询、管理等操作。这种类sql语言,我们称之为Hql。Hive其实就是封装了MR,当我们使用hql语言进行查询时,底层代码会将hql翻译成MR的程序。

Hive也可以使用spart引擎,默认使用mr引擎。

3.2 Hive的优缺点

1)Hive的优点

--1. 学习成本低,  简单,易用,不需要单独再学习java语言或者Mapreduce,只需要会hql
--2. 扩展性好
--3. 延展性好,可以自定义函数
--4. 统一管理映射关系的元数据

2)Hive的缺点

--1.表达能力有限
    --特别的复杂的算法不能实现
--2. 调优困难,粒度粗糙

3.3 Hive的架构和工作原理

[图片上传失败...(image-31e90b-1576409230209)]

上图是Hive的体系架构图

第一层:客户端接口,包括命令行接口,jdbc接口,web接口
Thrift server:第三方服务接口,供Jdbc接口来连接的
元数据库:metastore, 存储的是映射关系的元数据信息,文件名和表名、字段、用户,数据库、权限等映射关系
驱动器:
    -- 编译器,将hql编译成mr程序代码,包括抽象树表达语法等
    -- 优化器,优化mr程序
    -- 执行器,提交mr程序,提交到hdfs,用yarn来管理资源的使用
hadoop: 包括hdfs、mapreduce、yarn   

[图片上传失败...(image-fc25aa-1576409230209)]

上图是Hive的工作原理(工作流程)

--1. 用户将hql语句提交给Driver驱动器
--2. Driver驱动器将hql提交给Comppiler编译器,进行翻译成MR程序
--3. 编译器跟原数据库进行交互
--4. 获取对应的元数据信息,再次编译MR程序、进行优化操作
--5. 将mr程序提交给Driver驱动器
--6. 由驱动器将mr程序提交给执行引擎
--7. 执行引擎将mr的job作业提交到hadoop
--7.1 如果由元数据信息更新,会于原数据库进行交互
--8. hadoop将处理结果返回给执行器
--9. 执行器将数据发送给驱动器Driver
--10.Driver将结果返回给客户端

第四节:Hive的安装

4.1 说明:

Hive的安装方式有三种

-- 内嵌模式:使用自带的derby数据来存储元数据,只支持一个session
-- 本地模式:元数据库使用mysql,支持多session.  hive的相关服务在同一台机器上,并且不是单独启动相关服务,而是内置在hive指令中
-- 远程模式:hive的相关服务是单独启动的,比如hiveserver2,metastore这样的服务都是单独启动。

[图片上传失败...(image-3ab70d-1576409230209)]

4.2 安装

1)环境要求:

-- jdk环境   1.7+
-- hadoop环境
-- mysql数据库

2)mysql数据库的安装

mysql是单独的进程,只要metastore服务可以连上即可,因此mysql可以安装到任意一台机器上

--1. minimal版本没有以下软件,需要手动安装  
  yum -y install perl
  yum -y install libaio
  yum -y install numactl
  
--2. 查询是否已经安装过mysql相关的内容,如果有,先卸载
[root@worker2 software]# rpm -qa | grep mysql  
mysql-libs-5.1.71-1.el6.x86_64
[root@worker2 software]# rpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps
--3.安装common
[root@worker2 software]# tar -xvf mysql-5.7.21-1.el6.x86_64.rpm-bundle.tar
[root@worker2 software]# rpm -ivh mysql-community-common-5.7.21-1.el6.x86_64.rpm
--4.安装libs
[root@worker2 software]# rpm -ivh mysql-community-libs-5.7.21-1.el6.x86_64.rpm
--5.安装client
[root@worker2 software]# rpm -ivh mysql-community-client-5.7.21-1.el6.x86_64.rpm
--6.安装server
[root@worker2 software]# rpm -ivh mysql-community-server-5.7.21-1.el6.x86_64.rpm
--7. 开启mysql服务
[root@worker2 software]# service mysqld start   ,失败再开启一次
--8. 查找提供的默认密码
当开启服务后,会在/var/log/目录下生成一个服务日志文件mysqld.log,这里有密码
[root@worker2 software]# cat /var/log/mysqld.log | grep password
--9.进入mysql服务,修改密码
alter user 'root'@localhost identified by '123456';  # by 后的字符串是新密码
--10. 进行授权远程连接
 grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

3)安装hive

3.1 环境搭建

--1.上传,解压
[root@master04 software]# tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/apps/
--2. 更名操作
[root@master04 software]# cd ../apps/
[root@master04 apps]# mv apache-hive-1.2.1-bin/ hive
--3. 配置环境变量
[root@master04 apps]# vi ~/.bash_profile
........省略......
#hive environment
export HIVE_HOME=/opt/apps/hive
export PATH=$HIVE_HOME/bin:$PATH
--4. 使之生效
[root@master04 apps]# source ~/.bash_profile

3.2)配置hive-env.sh

[root@master04 hive]#  cd $HIVE_HOME/conf 
[root@master04 conf]# cp hive-env.sh.template  hive-env.sh
[root@master04 conf]# vi  hive-env.sh
........省略......
找到以下内容,修改hadoop_home,添加java_home
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/opt/apps/hadoop
JAVA_HOME=/opt/apps/jdk
........省略......

3.3)配置hive-site.xml

[root@master04 conf]# cp hive-default.xml.template  hive-site.xml


    javax.jdo.option.ConnectionDriverName
    com.mysql.jdbc.Driver
    Driver class name for a JDBC metastore


    javax.jdo.option.ConnectionURL
    jdbc:mysql://worker2:3306/hive?createDatabaseIfNotExist=true&characterEncoding=latin1
    JDBC connect string for a JDBC metastore


    javax.jdo.option.ConnectionUserName
    root
    Username to use against metastore database


    javax.jdo.option.ConnectionPassword
    123456
    password to use against metastore database

3.4) 将mysql的连接jar包放入hive的lib下

mysql-connector-java-5.1.28-bin.jar

3.5)如果想使用metastore服务的远程连接需要在作为服务节点的hive-site.xml中配置以下属性信息


    hive.metastore.uris 
    thrift://ip:9083


解析:thrift:是协议名称
     ip为metastore服务所在的主机ip地址
     9083是默认端口号

3.6)单独启动metastore服务

[root@master04 conf]# hive --service metastore & 2>&1 >/dev/null

3.7)测试

--1. 首先要开启hdfs和yarn
--2. 输入hive

3.8)如果在启动hive时报错

 java.net.URISyntaxException: Relative path in absolute URI: 
${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

创建一个目录
[root@master04]# mkdir /opt/apps/hive_config/tmp/
修改hive配置文件 
[root@master04 conf]# vi  hive-env.sh
查找${system:java.io.tmpdir}
进入vi后按下/,输入要查找的关键字,按n下一个,按N上一个
替换为 /opt/apps/hive_config/tmp/
查找${system:user.name}
替换为${user.name}

你可能感兴趣的:(Hive的安装和配置)