专栏首页数据分析1480大数据之脚踏实地学09--Hive嵌入式安装

大数据之脚踏实地学09--Hive嵌入式安装

还没关注?

快动动手指!

前言

经过前面几期内容的介绍,相信大家已经把Hadoop的环境搭建好了吧。正如前几期所说,Hadoop的搭建实际上最核心的就是HDFS(文件存储系统)、Map-Reduce(运算系统)和Yarn(资源调配系统)三个组间。

接下来我们将在Hadoop集群的基础上,搭建其他的应用App(如本期所介绍的Hive工具,它的功能是帮助我们使用SQL语句快速完成数据的查询)。Hive框架如下图所示:

读者可以将Hive理解为中转站,一头连接关系型数据库(如自带的Derby数据库或常用的MySQL数据库),如图中的Metastore,它是用来存储数据的元信息(如表名称、字段名称、字段类型、索引信息等);另一头连接数据的实际存储源,如图中的HDFS。当用户从客户端(如图中的CLI或JDBC)发送一条SQL语句时,会经过包含4个组间的驱动器,分别用于SQL解析(如检查语法是否正确,查询的字段是否包含在元信息中等)、SQL编译(将SQL语法编译成MapReduce认识的语言,即Java语言)、SQL优化最终的执行(即把优化好的语法通过执行器扔给MapReduce进行数据的运算和抓取)。

在了解了Hive框架后,我们开始在Linux系统中安装Hive工具吧,操作步骤见下文。

解压Hive

首先从Apache网站(http://archive.apache.org/dist/)下载一个稳定版的Hive(如本文使用的是稳定版Hive2.3.4),然后将该软件通过Xftp上传至master机器中,最后要做的就是解压tar.gz软件。

查看上传后的文件

解压tar.gz文件,并重命名为hive

配置Hive

解压完Hive工具后,还需要做几件事情,一个是配置环境变量,这样可以确保在任何一个目录下都可以启动Hive;另一个是修改Hive的配置文件hive-site.xml,这样可以确保Hive的正常工作。

配置Hive的环境变量

vim /etc/profile

配置hive-site.xml文件

进入到hive的配置目录,发现并没有hive-site.xml文件,但有一个template文件,我们只需要将其复制一份,副本的名称改为hive-site.xml即可。

配置Hive是一件非常头疼的事,在hive-site.xml文件中必须有三处内容需要修改,否则会各种报错。具体操作如下:

  • 修改hive.metastore.schema.verification,将对应的值设置为false,即阻止hive校验HDFS、Map-Reduce和Yarn的版本;
  • 创建一个tmp目录(如/opt/SoftWare/hive/tmp),替换配置文件中的${system:java.io.tmpdir}内容;
  • 替换${system:user.name}为root(根据实际的登录用户,假设root用户登录就换为root);

【个人建议】你可以将Linux系统中的hive-site.xml文件下载到本地主机,然后在本地修改会比较方便哦。修改好后再重新上传至hive的配置目录中。

启动Hive

启动Hive之前需要启动dfs和yarn,因为Hive就是在Hadoop集群之上运行的(具体可以查看Hive框架图),启动命令如下:

start-dfs.sh

start-yarn.sh

由于Hive自带了Derby数据库用于存储数据的元信息,故需要在Hive的目录内初始化Durby数据库,用于启动Hive之后原数据的存储。初始化代码如下:

schematool -initSchema -dbType derby

此时,你会发现在Hive目录内会多一个metastore_db目录,紧接着我们就可以启动Hive了,启动过程很简单,直接在Hive目录下输入hive命令即可(千万不能切换目录哦,因为初始化的metastore_db目录在Hive目录内)。

成功启动后会出现"hive>"提示符,这里输入了show databases;语句,用于查询derby包含的数据库名称(仅显示default一个数据库)。接下来我们创建一张表,并把root家目录下的200M+的文件导入到Hive中(数据来源于Kaggle网站,是关于美国911电话呼叫的记录,总计约280万数据)。

建表语法

导入数据并查询数据

运行过程如下:

如上图所示,在数据查询过程中能够清晰地看见map和reduce的过程,在经过174秒后,查询出满足条件的307,680条数据(如果你的电脑配置比较高,查询速度会更快哦)。

结语

本期的内容就介绍到这里,下一期我们将介绍Hive的独立式安装,即使用MySQL数据库作为数据元信息的存储(这种场景在实际的应用中最常见)。如果你有任何问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让更多的人学习和进步。

本文分享自微信公众号 - 数据分析1480(lsxxx2011)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-01-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • spring boot框架学习4-spring boot核心(3)

    本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中第四篇 spring boot框架学习4-spring boot核心(3)

    凯哥Java
  • 单元测试框架系列教程9-测试方法、类以及组的概念

    本篇来介绍Test Methods, Test classes ,Test groups的基本概念。了解这三个基本概念,有助于我们学习其他的功能。前面介绍了@T...

    凯哥Java
  • Android必知必会--使用shape制作drawable素材

    版权声明:本文为[他叫自己Mr.张]的原创文章,转载请注明出...

    他叫自己MR.张
  • 单元测试框架系列教程10 testNg配置文件实现依赖关系

    这篇来介绍下依赖关系,前面我们简单介绍了@Test中的dependsOnMethods。这篇,我们主要学习dependOnGroups和如何在testng.xm...

    凯哥Java
  • SpringMVC配置Tomcat返回406问题探索

    1:Google了一下Tomcat 406问题,Stackoverflow(问题地址 有很多个,大家可以自行搜索,这里只贴一个)上说缺少jar包,于是将以下ja...

    Dylan Liu
  • Shiro学习系列教程三:集成web

    本节主要内容:   1:shiro怎么集成到web开发中。  涉及到的网站:  shiro官网:http://shiro.apache.org/web.html...

    凯哥Java
  • Android必知必会-Android Studio修改包名

    版权声明:本文为[他叫自己Mr.张]的原创文章,转载请...

    他叫自己MR.张
  • spring boot框架学习1-认识spring boot和快速入门

    本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中spring boot框架学习1-认识spring boot和快速入门。

    凯哥Java
  • 使用liquibase与h2助力单元测试

    liquibase在其官网首页中有一个很明确的定位,那就是Source Control For Your Database,Liquibase记录你的数据库变更...

    Dylan Liu
  • Caused by: org.hibernate.HibernateException: Unanticipated return type [java.lang.Long] for UUID ...

    Caused by: org.hibernate.HibernateException: Unanticipated return type [java.lan...

    一个会写诗的程序员

扫码关注云+社区

领取腾讯云代金券