您的位置:首页 > 其它

疯狂Hive之Hivean安装部署与交互方式(一)

2020-07-18 04:10 337 查看

Hive简介

什么是Hive

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

本质是将SQL转换为MapReduce程序。

主要用途:用来做离线数据分析,比直接用MapReduce开发效率更高。

 

为什么使用Hive

当直接使用Hadoop MapReduce处理数据所面临的问题

人员学习成本高

MapReduce实现复杂查询逻辑开发难度大

使用Hive

操作接口采用类SQL语法,提供快速开发的能力

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

功能扩展很方便

 

Hive组件

用户接口:包括CLI、JDBC/ODBC、WebCUI。其中,CLI(command line interface)为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebCUI是通过浏览器访问Hive

元数据存储:通常是存储在关系型数据库如mysql/derby中。Hive将元数据存储在数据库中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),标的数据所在目录等

解释器、编译器、优化器、执行器:完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行

 

Hive与Hadoop的关系:Hive利用HDFS存储数据,利用MapReduce查询分析数据

 

Hive与传统数据库对比

Hive用于海量数据的离线数据分析

Hive具有SQL数据库的外表,但是应用场景完全不同,Hive只适合用来做批量数据统计分析

更直观的对比请看下面这张图

 

 

 

Hive安装部署

Hive安装前需要安装好JDK和Hadoop。配置好环境变量

根据元数据存储的介质不同,分为下面两个版本,其中derby属于内嵌模式。实际生产环境中则使用mysql来进行元数据的存储

 

内置derby版

解压Hive安装包

bin/hive启动即可使用

缺点:不同路径启动Hive,每一个Hive拥有一套自己的元数据,无法共享

详细步骤:

1、上传Hive安装包

 

 

 

 

  1. 解压安装包

解压命令:tar -zxvf apache-hive-1.2.1-bin.tar.gz

  1. 进入解压包并启动derby版hive

进入启动命令所在目录:cd apache-hive-1.2.1-bin/bin/

启动derby版Hive命令:./hive

 

 

  1. Hive的使用

显示已存在的数据库名称

命令:show databases;

 

 

 

创建数据库

命令:create database gw;

 

 

 

在gw数据库中创建一张表t_user

使用数据库命令:use gw;

创建表命令:create table t_user(id int,username string,password string);

 

 

 

显示数据库中的表

命令:show tables;

 

 

 

注意:derby版元数据与启动路径有关系,如果启动的路径不同,那么就会创建新的元数据(元数据不共享),一般用于测试版使用

 

Mysql版

解压、修改配置文件

vi conf/hive-site.xml

配置Mysql元数据库信息

详细步骤:

1、上传Hive安装包

 

 

 

 

2、解压安装包

解压命令:tar -zxvf apache-hive-1.2.1-bin.tar.gz

  1. yum在线安装mysql数据库

安装命令:yum install mysql mysql-server mysql-devel

安装完成后启动mysql命令:/etc/init.d/mysqld start

进入mysql交互界面命令:mysql

 

 

设置mysql用户名与密码

use mysql;

update user set password=password('root') where user='root';

flush privileges;

 

设置mysql允许远程访问

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

flush privileges;

退出mysql命令:exit

 

查看mysql服务是否启动命令:service mysqld status

 

 

设置mysql服务开机启动命令:chkconfig mysqld on

 

  1. 修改Hive配置文件

进入配置文件所在目录:cd apache-hive-1.2.1-bin/conf/

 

 

配置hive-env.sh文件

拷贝hive-env.sh文件命令:cp hive-env.sh.template hive-env.sh

编辑文件:vi hive-env.sh

在hive-env.sh中需要配置hadoop的安装路径

 

 

 

配置hive-site.xml文件

因为文件不存在,所以创建一个hive-site.xml文件

创建命令:vi hive-site.xml

在该文件中编写如下内容

<configuration>

<property>

<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name>

<value>root</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name>

<value>root</value>

</property>

</configuration>

 

添加mysql连接驱动

接下来需要将mysql连接驱动添加到hivean安装包的lib目录下

进入目录:cd apache-hive-1.2.1-bin/lib/

将以下jar包上传到该目录下

 

 

 

5、启动Hive

此时启动Hive,查看在不同路径下启动,元数据是否会共享

在apache-hive-1.2.1-bin路径下输入命令:bin/hive启动Hive,然后创建一个数据库hello,创建完成之后退出Hive

 

 

在apache-hive-1.2.1-bin/bin路径下输入命令:./hive启动Hive,查看是否存在hello数据库,如果存在,表示元数据已经共享

 

 

 

Hive的交互方式

方式一:Hive交互shell

此种交互方式就是启动Hive之后,输入一条命令,执行完成之后结果直接跟在后面打印出来。如:

在hello数据库中创建一张t_user表

使用数据库命令:use hello;

创建表命令:create table t_user(id int,username string,password string);

 

 

 

方式二:Hive启动一个服务器,来对外服务

此种方式适用于生产环境,Hive启动一个服务,其他机器可以通过某种方式连接到Hive上

  1. 启动Hive服务

在node01上启动Hive服务,在apache-hive-1.2.1-bin路径下启动服务命令为:bin/hiveserver2

 

 

此时Hive服务启动,并处于阻塞状态,等待其他机器连接

 

  1. 将Hive安装包发送到node02上

scp -r apache-hive-1.2.1-bin root@node02:/root/

 

 

 

  1. 客户端node02远程连接Hive服务

连接命令:bin/beeline

 

 

配置连接协议: ! connect jdbc:hive2://node01:10000

输入访问机器node01上Hive的用户名与密码,此时就能连接Hive服务

 

 

此时在node02上输入命令:show databases;

 

 

在node01上就会获取到监听内容,并输出OK(如果输入错误命令,在node01上 会打印相应的错误信息)

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: