hive安装及安装过程中的问题

前言: hive是基于hadoop的,数据存储在hdfs上并且对客户端提供hql支持,将hql语句转换为mapreduce任务的数仓工具,hive就相当于hadoop的一个另一种形式的客户端 hql,hive的底层是用java实现的!

一、安装准备:

安装hive之前保证hadoop、zookeeper、jdk

二、安装版本:

主流是1.2和2.3 版本
镜像地址: https://mirrors.tuna.tsinghua.edu.cn/apache/
这里以安装 2.3.2版本为例!

三、安装节点:

一个节点就可以了

1、安装模式:

1.1使用自带的元数据库 (了解)

1)上传
将压缩包上传至节点
2)解压

	 tar -xvzf apache-hive-2.3.2-bin.tar.gz

3)配置环境变量
建一个hive的软链

	ln -s apache-hive-2.3.2-bin hive

配置环境变量

	vim /etc/profile
	export HIVE_HOME=/home/hadoop/apps/hive
	export PATH=$PATH:$HIVE_HOME/bin
	source /etc/profile

4)元数据库初始化

schematool -dbType derby -initSchema

初始化过程:
①创建元数据库
默认创建的元数据库的名字 metastore_db
jdbc:derby:;databaseName=metastore_db;create=true
schemaTool completed 成功标志
②初始化成功后初始化的当前目录:
derby.log 数据库的日志信息 metastore_db 元数据库 derby库中的数据存在这个目录下的
schemaTool failed 失败
5)启动
hive
启动hive之前要一定保证hadoop是启动的
否则报错:Caused by: java.net.ConnectException: Connection refused

启动过程中日志信息如下:
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive>
直接3)跳到5)执行命令 报错
FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
原因:元数据初始化没有做好

格式化成功后在格式化的目录启动hive是正常可以使用的,但是换个目录启动hive运行命令报错

FAILED: SemanticException
 org.apache.hadoop.hive.ql.metadata.HiveException:
  java.lang.RuntimeException: Unable to instantiate
   org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

元数据格式化问题

derby数据库的缺陷:
1)单用户的数据库
在格式化的时候当前目录下生成derby的数据库文件,在那个目录启动hive的时候只会找当前目录下的元数据库,一旦启动的目录和格式化的目录不同,这个时候启动运行命令仍然会报元数据没有初始化,启动目录的下没有元数据库格式化的文件;
2)不同目录下的元数据不能共用的。

该方法不适用生产环境

1.2使用mysql作为元数据库(重点)

1)上传压缩包
2)解压
3)修改配置文件
4)需要先安装mysql数据库
rpm包
yum方式安装
1)安装mysql并配置好mysql的用户名密码
yum安装mysql
①配置yum源

  • 在/mnt创建目录cdrom
    mkdir cdrom
  • 挂载
    sudo mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom/
  • 配置本地的yum源
	 sudo rename .repo .repo.bak * 
	 sudo cp CentOS-Media.repo.bak CentOS-Media.repo  
	 
	 sudo yum clean all
	 yum repolist

②安装mysql

sudo yum install -y mysql-server
sudo service mysqld start

③修改mysql的用户名、密码

use mysql;
delete from user where user='';
update user set host='%' where host='localhost';
update user set password=PASSWORD('123456') where user='root';
flush privileges;
退出mysql
重启mysql服务

5)修改hive的配置文件

cd /home/hadoop/apps/hive/conf
  • 换掉默认的元数据库
    touch hive-site.xml
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/bd1901?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
<!-- hive连接mysql的连接url 如果 mysql 和 hive 在同一个服务器节点,连接的主机名最好为 localhost bd1901 hive的元数据库 -->
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>

6)将hadoop的 hdfs-site core-site 添加到hive的conf目录下

cp /home/hadoop/apps/hadoop/etc/hadoop/core-site.xml
 /home/hadoop/apps/hadoop/etc/hadoop/hdfs-site.xml 
 /home/hadoop/apps/hive/conf/

7)初始化hive的元数据库
①将mysql的驱动放在hive安装目录的lib下
②格式化(在hive的conf目录下运行)
生成mysql中hive对应的元数据库,在mysql中创建一个数据库,然后在库中执行下面的命令:

schematool -dbType mysql -initSchema

执行完后会生成了一些列的表(存储元数据用的)
8)启动
hive使用过程中:
一般启动hive的本地模式,在hive的客户端执行

	set hive.exec.mode.local.auto=true; 

只对当前客户端生效

四、hive的安装过程中两个常见问题

1、mysql的密码过期问题

报错如下:
Underlying cause: java.sql.SQLException : Your password has expired. To log in you must change it using a client that supports expired passwords.

mysql中的mysql库下user表中的password_expired字段标识密码是否过期
过期 Y 没有N

如果遇到过期的解决办法:

执行语句:
update user set password_expired="N" where user="root";
flush privileges;
重启mysql服务 service mysql restart

2、mysql的用户名 密码不对

报错如下:
Underlying cause: java.sql.SQLException : Access denied for user ‘root’@‘localhost’ (using password: YES)

root(mysql用户)’@‘localhost (主机名)
mysql --> user
user表中 user host password password_expired
root(mysql用户)’@'localhost (主机名)
@之前 对应的 user表中的user字段
@之后 对应的 user表中的host字段值

| user | host | password |
±-----±----------±------------------------------------------+
| root | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | hdp03 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| root | 127.0.0.1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |

root@localhost
根据 hive-site.xml中配置的mysql连接来得
localhost:
url:
jdbc:mysql://localhost:3306
root:

javax.jdo.option.ConnectionUserName
root
username to use against metastore database

用户名密码问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值