作业任务:安装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. Ucos系统常用的数据结构有哪些?

    1)表 链表 表中主要了解链表,尤其是单向链表. 2)数组 一维数组 二维数组 使用数组有什么好处,在c语言中,数组是一组连续数字的集合它们数组的下标,代表了数组的相对位置,所以说,在一些高效的查表过 ...

  2. .NET面试题解析(05)-常量、字段、属性、特性与委托

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 弱小和无知不是生存的障碍,傲慢才是!——<三体> 常见面试题目: 1. const和reado ...

  3. 让你心动的 HTML5 & CSS3 效果【附源码下载】

    这里集合的这组 HTML5 & CSS3 效果,有的是网站开发中常用的.实用的功能,有的是先进的 Web 技术的应用演示.不管哪一种,这些案例中的技术都值得我们去探究和学习. 超炫的 HTML ...

  4. 前端开发教程:使用 CSS3 Transforms 构建圆形导航

    在本教程中我将告诉你如何使用 CSS 变换来创建圆形导航.教程逐一讲解实现这个样式将要涉及一些基本的数学知识并配合 CSS 变换来创建这些样式.不过不用担心,这里用到的数学知识真的是很简单的.教程使用 ...

  5. 一:验证微信的Token

    前言:申请到微信公众号的同学,可能会挺感兴趣的,毕竟微信公众号,确实是一个好东西,它提供了一个很好的平台,而且它自带有一套管理模板,对于微信公众号可以很好的管理. 但是也仅仅是很好的管理,因为作为开发 ...

  6. java基础题目总结

    有些基础题目由于工作中用的比较少但却又是不可少的,这样回答起来就会反应慢,不确定,不准确,特此开了文章记录遇到的不确定或者回答比较拗口的问题. 1.servlet是单例的吗,是安全的吗,是多线程吗 s ...

  7. JS包装对象

    一.包装对象 var s = "hello word"; s.len = 4; var t = s.len; //=>undefined 原因由于s是一个字符串,在执行第二行 ...

  8. 插入排序---希尔插入排序算法(Javascript版)

    取一个小于n的整数作为第一个增量,把序列分组.所有距离为增量的倍数的元素放在同一个组中.先在各组内进行直接插入排序:然后,取第二个增量(第二个<第一个)重复上述的分组和排序,直至所取的增量=1, ...

  9. 【iOS】desctiption和debugDescription

    一.简介 与.NET一样,在.NET上得Object对象有个ToString()方法可以用于输出对象的信息,在iOS上的NSObject也有一个方法,为description,该方法返回objc对象的 ...

  10. 奔跑的歌颂 diskgenius 找回了20G数据

    2.0同学家的电脑不慎重装系统,结果默认重新分区.其他倒没什么数据,就是几千张记录孩子成长的照片最为珍贵.为了找回数据,用U盘启动,使用Diskgenius全部找回,在此奔歌一下.