HadoopHA4_Hive的安装和相关异常

前言

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

环境版本
linuxcentos_6.7
jdk1.8.0_60
hadoop2.7.1
zookeeper3.4.7
mysql5.6.26
hive1.2.1-bin
hbase1.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;

4)查看mysql时, 发现没有自动生成元数据
解决: 手动生成

# schematool -initSchema -dbType mysql
补充: 客户端上运行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入门语句:https://blog.csdn.net/IAmListening/article/details/89393426
安装windows+linux双系统:https://blog.csdn.net/IAmListening/article/details/89741854
搭建时间同步服务器和yum源:https://blog.csdn.net/IAmListening/article/details/89765148
搭建hadoop高可用:https://blog.csdn.net/IAmListening/article/details/89765843
安装hbase:https://blog.csdn.net/IAmListening/article/details/89765957

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值