设为首页 加入收藏

TOP

HadoopHA4_Hive的安装和相关异常
2019-05-03 00:52:59 】 浏览:46
Tags:HadoopHA4_Hive 安装 相关 异常

前言

hive将相对复杂的mapreduce过程转化为类sql语言,极大的降低了学习成本
安装的易错点在于mysql数据库的配置

环境 版本
linux centos_6.7
jdk 1.8.0_60
hadoop 2.7.1
zookeeper 3.4.7
mysql 5.6.26
hive 1.2.1-bin
hbase 1.2.1

第一步:安装并配置mysql

1. 安装mysql

使用rpm安装,可能会因为缺少某些环境依赖而报错.如果看到了相关错误提示,用yum查找并安装对应的依赖即可
需要注意的是安装结束之后,软件可能会有提示内容,一定不要简单的忽略掉
比如,mysql安装完成后,会有提示初始密码的位置和修改密码的方法

简单记录下安装流程(先安装mysql的服务端)

功能 语句
尝试安装 rpm -ivh /apps/mysql/MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
安装依赖 yum -y install perl.x86_64
安装依赖 yum -y install libaio.x86_64
尝试安装 rpm -ivh /apps/mysql/MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
强制安装 rpm -ivh --force --nodeps /apps/mysql/MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
安装客户端 rpm -ivh /apps/mysql/MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
启动服务 service mysql start
开机启动 chkconfig mysql on
查看密码 cat /root/.mysql_secret
修改密码 /usr/bin/mysql_secure_installation
尝试登录 mysql -u root -p

2. 配置mysql

1)新建hive用户

# create user 'hive' identified by 'hive'
注:虽然可以直接使用root用户,但是推荐新建hive用户

2)更改hive用户的权限,刷新权限

# grant all privileges on *.* to 'hive'@'%' identified by 'hive' with grant option;
注:允许从任意地址登录的hive用户访问数据库中的任意内容
# flush privileges;	

3)更改mysql的默认编码为utf8

# vi /etc/my.cnf
[mysql]
default-character-set=utf8  
[mysqld]
character-set-server=utf8
#注意:两个字符集的设置分别在[mysql]和[mysqld]下,一定要正确对应

4)重启数据库(更改配置后重启服务是个好习惯)

# service mysql restart
(5.1版本以前的mysql服务命令是mysqld)

5)新建数据库,起名为hive(注意设置编码格式为latin1)

create database hive default character set latin1;
注:hive数据库一定要设置字符为latin1,因为它对其他字符的支持性不是很好

第二步:配置hive

1)上传hive
2)解压缩到HIVE_HOME

# tar -zxvf /root/hive_1.2.1 -C /apps
注:-z解压缩,-x解包,-v打印过程到控制台,-f使用归档文件,-C重定向

3)修改配置文件

	# cp hive-default.xml.template hive-site.xml
	注:hive默认配置文件就是hive-default.xml.template,拷贝修改即可
	# vi hive-site.xml
	<xml version="1.0" encoding="UTF-8" standalone="no">
	<xml-stylesheet type="text/xsl" href="configuration.xsl">
	<configuration>
	 
	<property>
	  <!-- 这是设置hive元数据的位置,是hdfs上的地址 -->
	  <name>hive.metastore.warehouse.dir</name>
	  <value>/user/hive/warehouse</value>
	  <description>location of default database for the warehouse</description>
	</property>

	<property>
	  <!-- 设置mysql的地址,不一定要在本机
		hive的本机模式只是说mysql服务和hive公用同一个jvm -->
	  <name>javax.jdo.option.ConnectionURL</name>
	  <value>jdbc:mysql://hadoop01:3306/hive</value>
	</property>
	
	<property>
	  <!-- 指定jdbc的驱动 -->
	  <name>javax.jdo.option.ConnectionDriverName</name>
	  <value>com.mysql.jdbc.Driver</value>
	</property>

	<!-- 设置连接到数据库的用户名和密码 -->
	<property>
	  <name>javax.jdo.option.ConnectionUserName</name>
	  <value>hive</value>
	  <description>username to use against metastore database</description>
	</property>
	<property>
	  <name>javax.jdo.option.ConnectionPassword</name>
	  <value>hive</value>
	  <description>password to use against metastore database</description>
	</property>

	</configuration>

4)配置并刷新环境变量

	# vi /etc/profile
	HIVE_HOME=/apps/hive
	PATH=$PATH:$HIVE_HOME/bin
	# source /etc/profile

5)将mysql的驱动包放在HIVE_HOME下的lib目录下
6)主机模式搭建完成,尝试运行hive

	# hive
	注:出现 hive> 表示hive成功安装

注意: 如果在my.cnf中指定了字符集后,出现异常:

ERROR! The server quit without updating PID file (/var/lib/mysql/mini2.pid).

查看mysql的日志,如果错误提示是:

unknown variable 'default-character-set=utf8

可以在my.cnf中改变此项设置为:

character_set_server=utf8

异常:

1)mysql注册了新用户和密码,却无法用登录
解决: https://blog.csdn.net/chrisjingu/article/details/50457486
2)更改mysql配置文件后,hive提示mysql拒绝访问
解决: 尝试重启mysql
3)可以登录hive,但是建表失败,并反复提示:

Moved: 'hdfs://mini2:9000/user/hive/warehouse/demo.db' to trash at: hdfs://mini2:9000/user/root/.Trash/Current

解决: 检查mysql中的默认编码格式是否为latin1
过程: 查看日志后发现提示:

For direct MetaStore DB connections, we don't support retries at the client level.

尝试更换了mysql的驱动,发现没有用
最后才发现要删除mysql中的hive表,并重新建表:

# create database hive default character set latin1;

补充: 客户端上运行hive

1)客户端解压hive并配置环境变量
2)更改hive-site.xml

# vi hive-site.xml
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://192.168.91.3:9083</value>
  <description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property>

3)启动服务端
主机模式的计算机可以视为服务端,直接启动相应服务

# hive --service metastore &

4)尝试运行hive

# hive
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇hive:Access denied for user .. 下一篇hive的安装与使用

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目