hive安装--设置mysql为远端metastore
作业任务:安装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错误:
- 配置文件格式的错误:
这是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的更多相关文章
- mysql安装设置mysql字符集utf8及修改密码
MySQL的下载,建议下载MySQL的解压缩版本 MySQL官网下载推荐别下最新版本的原因是因为很多之前用的jar包和工具类不兼容最新版本的 可以下5.多的和六点多的 这样的压缩包解压再配置就行了 安 ...
- Linux上安装设置mysql 5.7.24
一,准备 1,先查看Linux是32位还是64位 getconf LONG_BIT 如果返回的是32,那么就是32位 如果返回的是64,那么就是64位 2,如果服务器不能联网,就先去官网下载好压缩包, ...
- hive安装用mysql作为元数据库,mysql的设置
mysql的设置 在要作为元数据库的mysql服务器上建立hive数据库: #建立数据库 create database if not exists hive; #设置远程登录的权限 GRANT AL ...
- linux安装卸载MySQL以及密码设置+Hive测试
linux系统卸载MYSQL 1,先通过yum方式卸载mysql及相关组件 命令:yum remove mysql* 2.通过命令:rpm -qa|grep -i mysql 查找系统的有关于mysq ...
- Hive安装与部署集成mysql
前提条件: 1.一台配置好hadoop环境的虚拟机.hadoop环境搭建教程:稍后补充 2.存在hadoop账户.不存在的可以新建hadoop账户安装配置hadoop. 安装教程: 一.Mysql安装 ...
- 一脸懵逼学习Hive的元数据库Mysql方式安装配置
1:要想学习Hive必须将Hadoop启动起来,因为Hive本身没有自己的数据管理功能,全是依赖外部系统,包括分析也是依赖MapReduce: 2:七个节点跑HA集群模式的: 第一步:必须先将Zook ...
- Hive安装与配置--- 基于MySQL元数据
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...
- 1 复习ha相关 + weekend110的hive的元数据库mysql方式安装配置(完全正确配法)(CentOS版本)(包含卸载系统自带的MySQL)
本博文的主要内容是: .复习HA相关 .MySQL数据库 .先在MySQL数据库中建立hive数据库 .hive的配置 以下是Apache Hadoop HA的总结.分为hdfs HA和yarn HA ...
- Hive(2)-Hive的安装,使用Mysql替换derby,以及一丢丢基本的HQL
一. Hive下载 1. Hive官网地址 http://hive.apache.org/ 2. 文档查看地址 https://cwiki.apache.org/confluence/display/ ...
随机推荐
- KnockoutJS 3.X API 第二章 数据监控(2)监控属性数组
监控属性数组 如果要对一个对象检测和响应变化,会使用监控属性.如果要对一个序列检测并监控变化,需要使用observableArray(监控属性数组).这在你显示或编辑多个值,需要用户界面的部分反复出现 ...
- -bash: /usr/local/bin/react-native: No such file or directory
执行react-native run-android/run-ios的时候出现 -bash: /usr/local/bin/react-native: No such file or director ...
- webpack学习笔记
1.安装webpack npm install webpack -g 2.进入项目目录,初始化 npm init 3.将webpack安装到项目依赖中 npm install webpack --sa ...
- HTML&CSS学习总结(一)
上周用了一周的时间,周一到周五平均每天2-3小时,周六.周日每天各8小时,看网易云课堂燕十八的HTML+div+CSS视频,感觉还不错,按照视频的讲课思路大概做个总结吧. 基本思路:从大的方面(整体结 ...
- QT学习笔记3
对话框 新建了一个对话框,在新建项目选择类型时是Dialog即可. 添加的代码如下,注意QCheckBox 并没有添加头文件定义,只是加了类的前向声明.因为我们仅仅使用的是指针,并不涉及到这些类的函数 ...
- c#设计模式之简单工厂
1.面向对象的3大属性,封装.继承.多态,以一个加单的计算机为例: 创建一个父类Operation 有两个属性 和一个计算方法(虚方法),便于子类重写: public class Operation ...
- Emit学习(4) - Dapper解析之数据对象映射(二)
承接着上一篇, 这一篇主要以堆栈的方式来演示一下, db数据转换到类中去的一个过程. 一.先看第一张图 程序在运行到176行(上一篇贴出的代码)的时候, 就会出现上图中的第一个栈. 那在此之前, Da ...
- The Web server is configured to not list the contents of this directory.
部署一个ASP.NET MVC网站至一个全新的服务器Windows Server 2008 R2, 数据为MS SQL Server 2014 64bit Expression版本. 运行时,它第一次 ...
- MS SQL中使用UPDATE ... INNER JOIN ...
昨天的SQL编程中,有使用到一个方法,就是把一个表某一字段更新至另一个表的字段中去. 实现这个方法,Insus.NET有尝试了几个方法,下面一一分享出来,让大家参考参考. 下面的数据只是模拟了,形式与 ...
- StackExchange.Redis通用封装类分享
前两天朋友问我,有没有使用过StackExchange.Redis,问我要个封装类,由于之前都是使用ServiceStack.Redis,由于ServiceStack.Redis v4版本后是收费版的 ...