hive搭建

搭建Hive

本地方式(内嵌derby)
步骤
解压

修改安装包内conf文件夹下的hive-default.xml.template,并重命名为hite-site.xml

<configuration>  
  
<property>  
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionDriverName</name>  
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>  
</property>  
   
<property>  
  <name>hive.metastore.local</name>  
  <value>true</value>  
</property>  
   
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/user/hive/warehouse</value>  
</property>  
   
  
</configuration>  
  • 将hive/lib目录下的jline jar包拷贝到hadoop的yarn lib下,并将原jar包删除或改名令其失效。 否则会报版本不匹配的错误 问题
  • 使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。 这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,多个用户登录时会报错。(这是由于derby数据库的局限性造成的)
Local(mysql)

这种存储方式需要在本地运行一个mysql服务器,并作如下配置

步骤

安装一个mysql数据库

yum  install mysql-server -y

拷贝mysql驱动包到$HIVE_HOME\lib目录下

修改hive-site,xml

<configuration>  
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/user/hive_remote/warehouse</value>  
</property>  
   
<property>  
  <name>hive.metastore.local</name>  
  <value>true</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionURL</name>  
  <value>jdbc:mysql://localhost/hive_meta?createDatabaseIfNotExist=true</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionDriverName</name>  
  <value>com.mysql.jdbc.Driver</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionUserName</name>  
  <value>hive</value>  
</property>  
   
<property>  
  <name>javax.jdo.option.ConnectionPassword</name>  
  <value>123</value>  
</property>  
</configuration> 

启动sql服务

service mysqld start

设置开机启动

chkconfig mysqld on

修改root用户权限

  • 登录mysql
     mysql -uroot
  • 修改权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
  • 刷新
flush privileges; 

添加用户并修改权限

  • 创建hive用户和密码
CREATE USER 'hive'@'%' IDENTIFIED BY '123';
  • 赋予权限
grant all privileges on hive_meta.* to hive@"%" identified by '123';
flush privileges; 

删除多余权限

  • 进入mysql数据库
use mysql;
  • 查看用户
select host,user,password from user;
  • 删除多余会对权限造成影响的数据
delete from user where password = '';

将hive/lib目录下的jline jar包拷贝到hadoop的yarn lib下
配置HIVE_HOME,hive启动
问题
注意一个坑: 权限,虽然hive用户对hive_meta数据库是由操作权限的,但是这个数据库如果不存在,hive用户也是没有权限创建这个数据库,所以需要提前创建好hive_meta数据库

远程(remote)模式

当有多个客户端使用hive时,若使用各自本地的hive和mysql,会导致各端元数据不一致,不易于管理,可能会出现各种问题。
在一个基于本地mysql数据库的hive作为服务端,启动一个metastore服务,其他客户端通过thrift协议连接metastore使用服务端hive,从而使用同一份mysql内的元数据。

步骤

  1. 在一个搭建好基于mysql的hive的节点启动metastore服务作为服务端
hive --service metastore  
  1. 在客户端解压安装包并修改hive-site.xml
<configuration>  
<property>  
  <name>hive.metastore.warehouse.dir</name>  
  <value>/user/hive/warehouse</value>  
</property>  
   
<property>  
  <name>hive.metastore.local</name>  
  <value>false</value>  
</property>  
  
<property>  
  <name>hive.metastore.uris</name>  
  <value>thrift://192.168.23.134:9083</value>  
</property>  
  
</configuration>  
  1. 拷贝jline的jar包以及配置HIVE_HOME(同上)

hive启动

问题
metastore的启动会一直启动在前台,可利用如下方法解决

hive --service metastore >> meta.log 2>&1 &

将日志打印到meta.log 错误日志(2)重定向到正常日志(1)
&表示后台执行
这种方式服务端只提供元数据,客户端运行自己的hive

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值