您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页大数据培训之hive学习

大数据培训之hive学习

来源:好走旅游网
HIVE编程实战

一 HIVE基础

1.1 什么是hive?

Hadoop生态系统是为了处理大数据集而产生的一个合乎成本效益的解决方案。 Hadoop实现了一个特别的计算模型,即MapReduce,其可以将计算认为分割成多个处 理单元然后分散到Hadoop集群中的家用或服务器级别的硬件机器上,从而降低成本并提 供动态扩展的能力。基于这个计算模型的下面是一个被称之为HDFS(Hadoop分布式文件 系统)的分布式文件系统。

不过,仍然存在一个挑战,那就是用户如何从一个现有的数据基础架构转移到Hadoop 上,而这个基础架构是基于传统关系型数据库和结构化SQL语言的。对于大量的关系型数 据库的维护、实施、开发人员,这个问题将如何解决呢?这就是Hive出现的原因。

Hive提供了一个被称之为Hive查询语言,简称HQL的SQL方言(与MYSQL及其类 似),用来查询存储在Hadoop集群中的数据。Hive可以将大多数的查询转换为 MapReduce的job任务,从而使得采用简单的SQL编程方式,来替换掉原有的 MapReduce中的复杂java编程。

Hive最适合于数据仓库应用程序,使用该应用程序进行相关的静态数据分析,不需要 快速响应给出结果,而且数据本身不会频繁变化。

Hive不是一个完整的数据库,其中最大的限制就是hive不支持记录级别的更新、插入 或者删除,但是用户可以通过查询生成新表或者将查询结果导入到文件中。同时,基于 Mapreduce的hive查询延时比较严重,没有传统的RDBMS查询速度快,hive不支持事

物。

因此,hive是最适合数据仓库应用程序的,其可以维护海量数据,而且可以对数据进 行分析,然后形成统计结果以及报表等。

1.2 HIVE组成模块

所有的命令和查询都会进入到Driver(驱动模块),通过该模块对输入进行解析编译, 对需求的计算进行优化,然后按照指定的步骤执行。当需要启动MapReduce任务时,Hive 本身是不会生成Java Mapreduce程序。Hive通过一个表示“job执行计划”的XML文件 驱动执行内置的、原声的Mapper和Reducer模块。

Hive通过和JobTracker通信来初始化Mapreduce任务,而不必部署在JobTracker 所在的管理节点上执行。

Hive是一个sql解析引擎,可以把用户编写的sql语句转换成Mapreduce的job来

执行,同时,hive可以把在hive中建立的表、字段等内容转换成HDFS中的文件存储内容。 这一整套的转换工具,在hive中称之为metastore,默认hive是使用的derby来存储, 但是由于derby的局限性以及不支持同时访问行,在企业开发中,这一套metastore,一 般是采用oracle或者mysql等关系型数据库来存储。

二 HIVE基础

2.1 hive安装配置

2.1.1 hive下载

首先去在 http://archive.apache.org/dist/hive/ 中下载hive的原文件,hive的版本很多, 我们教程选用的是最新的 hive-0.13.0 版本。进入目录,选择apache-hive-0.13.0-bin.tar.gz (52M)。

在centos中,新建一个hive目录,将apache-hive-0.13.0-bin.tar.gz文件上传至hive目录 中。(我的目录是在~下,也即:/home/hadoop目录中)。 显示内容如下:

解压文件:tar -zxvf apache-hive-0.13.0-bin.tar.gz。解压效果如下:

由于解压的文件夹名称太长,我们为文件夹换个简单的名字,就叫hive:

所以,hive的地址就为:/home/hadoop/hive。

2.1.2 配置环境变量

在bash_profile中加入HIVE_HOME,并在PATH中增加HIVE_HOME/bin,最后export。保存 后,记得用source命令。 source .bash_profile

2.1.3 修改配置文件

与hadoop一样,hive在启动过程中,也需要修改一些hive的配置文件。在

HIVE_HOME/conf文件夹中,hive自带了4个模板文件,如果我们需要使hive生效,就复制 这些模板文件进行相应的修改即可生效。

2.1.3.1 配置hive-env.sh文件

hive-env.sh文件,是hive的环境配置文件,里面需要根据需求修改一些内容。

使用cp命令,复制一个hive-env.sh.template文件,并命名为hive-env.sh. cp hie-env.sh.template hive-env.sh

使用vi命令查看hive-env.sh可以查看文件内容

可以看出,hive-env.sh中,主要是设置一些hive的环境信息。我们需要修改以下内容: 1、 修改HADOOP_HOME的地址:由于我们的HADOOP_HOME的地址为:

/home/hadoop/hadoop/hadoop-1.1.2,所以需要将HADOOP_HOME的地址修改为我们的 真实地址,并将前面的#注释给删除。

2、 修改HIVE_CONF_DIR:由于我们的HIVE_CONF地址为/home/hadoop/hive/hive/conf,

所以需要将HIVE_CONF_DIR修改为我们的HIVE_CONF地址,并将前面的#注释删除。

3、 默认hadoop的堆大小为1G,如果有特殊需要,可以调的大一些,我们这里就用默

认的就可以了。

保存退出。

2.1.3.2 安装mysql作为hive的metastore

Mysql安装步骤请参见附件一:安装mysql

同时,需要将mysql的连接驱动 放入hive/lib目录中 2.1.3.3 配置hive-site.xml文件

对于hive自身的配置文件,需要在hive-site.xml文件中进行配置。Conf下有一个文件, 名为:hive-default.xml.template,用cp命令复制一份并重命名为hive-site.xml。 cp hive-default.xml.template hive-site.xml

接下来,我们使用mysql作为metastore来替代默认的derby数据库: 修改hive-site.xml文件,替换的内容 内容如下:

hive.metastore.local

true

javax.jdo.option.ConnectionURL

jdbc:mysql://192.168.97.100:3306/hive?characterEncoding=UTF-8

javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName root

javax.jdo.option.ConnectionPassword root

2.1.3.4 配置mysql中hive库的操作权限

2.1.4 启动hive

启动hive以前,启动先保证hadoop启动成功。 使用命令hive,即可启动hive

三 hive操作

3.1 基本操作

查询hive中所有的库,类似于mysql的操作,show databases

附件一:安装Mysql

1.1 删除mysql

切换到root用户

在安装mysql以前,首先需要保证系统没有安装过mysql,如果安装了mysql,需要进 行卸载。

先用rpm –qa|grep MySQL查看安装的rpm包。

发现已经有一个mysql的文件了,首先我们把它删除。删除命令为: rpm -e --nodeps 文件名

可以看到,经过操作,已经删除了mysql的安装文件。

1.2安装Mysql

用root用户,在根目录下建立root文件夹。上传mysql的服务器段软件和客户端软件,文 件名如下:MySQL-client-5.6.17-1.el6.i686.rpm和MySQL-server-5.6.17-1.el6.x86_64.rpm。

1.2.1 安装mysql服务器端

接下来开始安装mysql的服务器端,软件包为MySQL-server-5.6.17-1.el6.x86_64.rpm。 rpm -ivh MySQL-server-5.6.17-1.el6.x86_64.rpm

等待一会,安装完毕。

接下来启动mysq,我们采用安全模式后台启动,命令为:mysqld _safe &

可以发现,mysql已经启动成功了。 1.2.2 安装mysql客户端

接下来开始安装mysql的客户端,软件包为MySQL-client-5.6.17-1.el6.x86_64.rpm。 rpm -ivh MySQL-client-5.6.17-1.el6.x86_64.rpm

很快,客户端就安装完毕了。 1.2.3 为mysql创建密码

安装完mysql以后,默认的用户名为root,密码为空,为了安全起见,需要修改mysql中root 用户的密码,在这里我们把密码也设置为root。

使用命令:mysql_secure_installation来设置mysql密码

是否更改mysql密码,这里输入Y

输入新密码 root,再一次输入新密码root

接下来询问是否删除匿名用户,这里我们输入 n

这里是询问是否关闭root的远程登录,我们也输入 n

这里询问是否删除mysql的测试数据库,我们也输入 n

这里询问是否重新刷新权限表,我们输入 Y。

思数云BIhuman 零一零 八二七五六七九七

1.2.4配置mysql中hive库的操作权限

由于我们在hive中使用mysql的数据库名为hive(详情请参见2.1.3.3),为了hive库可以远 程登录及拥有操作的权限,我们使用grant为hive库赋权。 命令为:grant all on hive.* to 'root'@'%' identified by 'root';

service mysql restart

接下来,我们就可以用root root 登录mysql了,命令为:mysql –uroot –proot

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务