作业任务:安装Hive,有条件的同学可考虑用mysql作为元数据库安装(有一定难度,可以获得老师极度赞赏),安装完成后做简单SQL操作测试。将安装过程和最后测试成功的界面抓图提交 .

已有的当前虚拟机:

总共三台虚拟机,使用CentOS。一台是NameNode,另两台为DataNode,由于搭载虚拟机的内存不是很足,所以不打算再新增一台虚拟机来另外安装mysql,所以选择其中一台datanode虚拟机来安装mysql,由于很早时候已经安装布署了hadoop,所以不再累述hadoop如何安装使用:

主机名

作用

将要布置的工作

bogon

hadoop的NameNode节点

安装hive client

DataNode1

hadoop的DataNode节点

安装mysql,安装hive metastore server

DataNode2

hadoop的DataNode节点

 

安装的系统或软件版本:

CentOs 6.3 32位,

jdk 1.7_u45,

hadoop 1.2.1,

hive 0.12.0,

mysql 5.7.3 Linux 32位 社区版

第一步:下载安装mysql:

由于我要安装的是mysql是linux版本,为保证软件最新和官方性,所以我都是从官方网站下载。这里我要吐嘈一下,不知为何现在的官方网站只提供window版的安装包,对于其他版本的安装包和源码都没有明显的下载链接,不知是Oracle以后为了不开源而作准备了,我在官网查了半天,才在说明书上查找到了下载的镜像站点列表: http://dev.mysql.com/downloads/mirrors.html,

随便找一个镜像链接,点击FTP就可以查看到最新的下载安装包

1、这里我下载使用的是linux版二进制包文件,下载并放置在DataNode1主机内:

注意:用二进制包手动安装会比较繁琐,而且如果稍有不注意都会有各种问题发生,我因为解决各种问题而在安装mysql方面花费了不少时间。如果你觉得麻烦,还是建议你用rpm安装包更简单些。

2、解压二进制包:

3、建立mysql专用的帐号和群组,并更改mysql安装目录为的所属人和群组为新建立的帐号和群组:

建议:从这一步开始到mysql启动,应该转换成root帐号来操作了,否则在往后的mysql操作当中,会有很多因权限不足导致安装设置失败的问题。如果你的mysql仅仅用来学习测试,且虚拟机并非商用无入侵风险,可以忽略此步骤。

4、运行初始化脚本,建立mysql原始数据库,在安装目录下执行:scripts/mysql_install_db –-user=mysql --datadir=/var/lib/mysql

注意:如果你已经跳过之前的第3步,那么这里的—user改为用root;另外datadir参数是可选参数,指定核心数据库文件的安装位置,虽然这是可选参数,但我在忽略后执行过程发现会默认安装到安装目录下的一个子目录(好像是data子目录),这与mysql配置文件中指定的目录位置不一样(配置文件指定的位置是/var/lib/mysql),所以在执行时最好带上这个选项,否则在启动mysql时会因找不到核心数据库而启动不成功。这也是很多情况下,手动安装mysql时出现各种问题的诸多原因,要么是权限问题、要么是缺少某些文件或者配置又不对……

执行时可能会出现以下这样的错误:

这是缺少的libaio软件的错误提示,用yum安装:

以下是初始化原始数据库成功的提示:

5、将mysql安装目录设为root权限,其子目录为mysql权限:

提示:如果你的mysql仅仅用来学习测试,且虚拟机并非商用无入侵风险,可以忽略此步骤。

6、将子目录plugin的可写权限去除(防止select…into dumpfile语句将执行代码写入文件):

提示:如果你的mysql仅仅用来学习测试,且虚拟机并非商用无入侵风险,可以忽略此步骤。

7、在mysql安装目录下运行:bin/mysqld_safe --user=mysql &,并测试mysql是否运行正常:

提示:如果你在之前跳过了第3和第5步,那么这里的参数user就直接使用root。

在启动过程中,如果提示找不到/tmp/mysql.sock,查找了tmp目录,确实没有这个文件。查看下/etc/my.cnf配置文件:

发现该文件在/var/lib/mysql目录下。这样我做个文件链接:

再kill掉mysqld_safe进程,重启一次mysql:

再次检测运行情况:

OK,正常返回数据库的信息!

总结:我是纯折腾自己才手动安装mysql,实际上可以下载rpm包安装的,但我只是想体验下手动安装过程。虽然在上面写的貌似有些简单,但实际上这个过程中对于我这个从没用linux安装过mysql的初学者来说是相当折磨人的。

第二步、下载安装hive:

1、在NameNode节点下解压安装Hive:

解压后:

注意:如果解压后所属用户和群组都是root,如果你不是用root操作,建议将所属用户和群组改为你的常用帐号和群组。

2、添加和编辑环境变量:

此步骤在安装了mysql的DataNode1的主机也执行一次。

3、重新登录一次使上面设置的环境变量生效,然后启动hadoop。在HDFS中建立/tmp目录和/user/hive/warehouse目录,设置两目录的所属群组有写入权限:

注意:这里设置的目录是hive存放缓存和数据库文件,用的是默认目录。

4、在hive目录的conf目录下,将hive-default.xml.template和hive-env.sh.template两个配置模板文件复制一份,并更名为以下:

这段时间为了能成功设置hive,一开始犯个了低级错误,我以为只是将.template后缀去除即可,谁知道这其中的hive-default.xml.template并非如此,不仅去掉.template后缀,还要改为hive-site.xml……,导致了我的后期的设置从过年前一直弄到年后都不成功!我还以为我的mysql出了什么问题,查阅了相当多的资料也不知怎么回事……!真想去官网吐嘈一下!

5、编辑hive-env.sh:

6、编辑hive-site.xml:

(1)设置metaStore存在指定的mysql,该值模式:

jdbc:mysql://<hostname>/<database name>?createDatabaseIfNotExist=true

(2)设置连接mysql的驱动为jdbc:

(3)设置连接mysql使用的帐号和密码,为了简便这里都用hive为帐号和密码:

(4)设置hive的表数据存放路径:(这里默认不修改,因为与刚才在hdfs建立的路径一致)

(5)设置Thrift metastore Server,格式thrift://<host_name>:<port>,host_name就是DataNode1主机,端口号使用默认的9083:

7、在mysql官方网下载最新的mysql连接器,存放在hive安装目录下的lib目录:

8、将安装配置好的hive安装目录复制一份到DataNode1主机的相同目录内,这里用了scp命令:

9、回到DataNode1主机,在mysql目录下执行mysql客户端:

10、创建hive数据库,并创建hive帐号并赋予权限:

11、在namenode主机下,启动hadoop:(如果在这之前已经启动,此步骤请忽略)

12、在DataNode1主机下,启动hive metastore服务:

13、然后回到namenode下,启动hive客户端:

14、测试下:

以下是遇到的hive错误:

  1. 配置文件格式的错误:

这是hive的0.12.0 release发行版的专有错误,错在hive-site.xml配置文件格式有误。将此文件中的2000行处的</auth>结尾处更正过来即可(真不明白发行版是怎么出来的,这种明显的错误也会在发行时显现):

2、version information not found in metastore(版本信息找不到):

看过网上的解决方案是在配置文件中将hive-site.xml 里面 hive.metastore.schema.verification 的值改为 false后不会出现问题。

根据错误检查了下ObjectStore.java源代码,该异常会在检查metastore的版本号时,如果从metastore数据源中没有返回版本号,则会根据上面所说的schema.verification来确定是否招抛出这个异常:

由于第一次启动metastore服务时,mysql作为数据源的hive数据库内没有生成任何表和数据,所以会出现返回的版本号为空的情况。我们可以暂时在hive.metastore.schema.verification里设置成false,在第一次启动自动生成了数据后,那么就可以将这个配置值再改回true,往后也相关无事了。在我看来,其实是hive在配置远端metastore的一个小bug。

3、MetaException:specified key was too long……

与数据库的编码格式有关,将数据库的编码改为:

hive安装--设置mysql为远端metastore的更多相关文章

  1. mysql安装设置mysql字符集utf8及修改密码

    MySQL的下载,建议下载MySQL的解压缩版本 MySQL官网下载推荐别下最新版本的原因是因为很多之前用的jar包和工具类不兼容最新版本的 可以下5.多的和六点多的 这样的压缩包解压再配置就行了 安 ...

  2. Linux上安装设置mysql 5.7.24

    一,准备 1,先查看Linux是32位还是64位 getconf LONG_BIT 如果返回的是32,那么就是32位 如果返回的是64,那么就是64位 2,如果服务器不能联网,就先去官网下载好压缩包, ...

  3. hive安装用mysql作为元数据库,mysql的设置

    mysql的设置 在要作为元数据库的mysql服务器上建立hive数据库: #建立数据库 create database if not exists hive; #设置远程登录的权限 GRANT AL ...

  4. linux安装卸载MySQL以及密码设置+Hive测试

    linux系统卸载MYSQL 1,先通过yum方式卸载mysql及相关组件 命令:yum remove mysql* 2.通过命令:rpm -qa|grep -i mysql 查找系统的有关于mysq ...

  5. Hive安装与部署集成mysql

    前提条件: 1.一台配置好hadoop环境的虚拟机.hadoop环境搭建教程:稍后补充 2.存在hadoop账户.不存在的可以新建hadoop账户安装配置hadoop. 安装教程: 一.Mysql安装 ...

  6. 一脸懵逼学习Hive的元数据库Mysql方式安装配置

    1:要想学习Hive必须将Hadoop启动起来,因为Hive本身没有自己的数据管理功能,全是依赖外部系统,包括分析也是依赖MapReduce: 2:七个节点跑HA集群模式的: 第一步:必须先将Zook ...

  7. Hive安装与配置--- 基于MySQL元数据

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

  8. 1 复习ha相关 + weekend110的hive的元数据库mysql方式安装配置(完全正确配法)(CentOS版本)(包含卸载系统自带的MySQL)

    本博文的主要内容是: .复习HA相关 .MySQL数据库 .先在MySQL数据库中建立hive数据库 .hive的配置 以下是Apache Hadoop HA的总结.分为hdfs HA和yarn HA ...

  9. Hive(2)-Hive的安装,使用Mysql替换derby,以及一丢丢基本的HQL

    一. Hive下载 1. Hive官网地址 http://hive.apache.org/ 2. 文档查看地址 https://cwiki.apache.org/confluence/display/ ...

随机推荐

  1. iOS中计算磁盘缓存文件夹的大小

    SDWebImage框架中在自动做磁盘缓存的过程中,底层实现了计算Cache的大小,框架的方法名称是getSize,但方法不容易被人理解,我就从新写了一下,附带注释 基本思想: 1. 先取出的Cach ...

  2. javascript中Date对象的应用——简易日历的实现

    × 目录 [1]效果 [2]HTML [3]CSS[4]JS 前面的话 简易日历作为javascript中Date对象的常见应用,用途较广泛.本文将详细说明简易日历的实现思路 效果演示 HTML说明 ...

  3. [c++] Associative Containers

    关联容器 和 顺序容器 的本质差别在于: 关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素. Reference: http://www.cnblogs.c ...

  4. [转载]基于TFS实践敏捷-实现用户场景

    您是新用户的 Visual Studio 应用程序生命周期管理 (ALM) 和 Team Foundation Server (TFS) 吗? 您想知道如何您和您的团队可以获得最大受益的这些工具来生成 ...

  5. Fort.js – 时尚、现代的表单填写进度提示效果

    Fort.js 是一款用于时尚.现代的表单填写进度提示效果的 JavaScript 库,你需要做的就是添加表单,剩下的任务就交给 Fort.js 算法了,使用非常简单.提供了Default.Gradi ...

  6. web前端学习笔记(CSS盒子的浮动)

    在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素的边界:而在竖直方向和兄弟元素依次排列,不能并排.使用“浮动”方式后,块级元素的表现就会有所不同.      CSS中有一个float属性 ...

  7. 关于HttpHandler的相关知识总结

    一.关于IHttpHandler.IsReusable 很多人不明白,这哥们到底干嘛的,估计是微软最初的一个想法--让一个对象可以一直不断地被重复使用 ,但这个想法不成熟,会带来很多隐藏问题,一个对象 ...

  8. ECLIPSE ANDROID PROJECT IMPORT SUMMARY

    ECLIPSE ANDROID PROJECT IMPORT SUMMARY======================================Manifest Merging:------- ...

  9. 解决在IE中获取数据的缓存问题,运行环境为node.js

    IE下默认会开启缓存策略,不管是页面还是通过ajax请求的数据都会议一个url,url是uri(统一资源定位符)的实例,url就是资源的标识符. 写一个demo进行验证,测试环境:IE8,node.j ...

  10. html的块级、内联、内联块级元素基础

    概念 块级:block 内联:inline 内联块级:inline-block 在html元素中,元素会有display属性 display属性默认值是block,那么该元素是块级元素. displa ...