Hive的三种搭建模式及远程方式详细搭建步骤

hive搭建

hive三种方式区别和搭建按照Hive中metastore(元数据存储)不同位置分为三种方式:

  • 内嵌Derby方式 :hive将源数据存储在HDFS中,而元数据默认存储在hive自带的数据库Derby中。但是Derby不支持多用户同时访问,所以这种模式仅供测试使用。
  • Local方式:使用mysql数据库替代Derby来存储元数据,以解决多用户并发访问问题
  • Remote方式:以本地模式为基础,mysql数据库所在的节点提供metastore service服务,其他节点可以连接该服务来获取元数据信息

1,安装Hive

	解压下载好的apache-hive-1.2.1-bin.tar.gz安装包到 /opt/apache-hive-1.2.1目录下
tar -zxvf apache-hive-1.2.1-bin.tar.gz /opt/apache-hive-1.2.1

2,配置环境变量


export HIVE_HOME=/opt/apache-hive-1.2.1
export PATH=$HIVE_HOME/bin:$PATH

3,三种方式的搭建(配置文件的不同)
①Derby方式
修改hive-site.xml
配置文件,修改如下

  
  javax.jdo.option.ConnectionURL  
  jdbc:derby:;databaseName=metastore_db;create=true  
  
  
  javax.jdo.option.ConnectionDriverName  
  org.apache.derby.jdbc.EmbeddedDriver  
  
  
  hive.metastore.local  
  true  
  
  
  hive.metastore.warehouse.dir  
  /user/hive/warehouse  
  

启动hive

./hive

注意:将hive/lib目录下的jline jar包拷贝到hadoop的yarn lib下

这种模式的弊端
使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则会提示如下错误

[html] view plaincopyprint?
hive> show tables;  
FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db', see the next exception for details.  
NestedThrowables:  
java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details.  
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask  
hive> show tables;
FAILED: Error in metadata:
javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db',
see the next exception for details.
NestedThrowables:
java.sql.SQLException: Failed to start
database 'metastore_db', see the next exception for details.
FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.DDLTask

②Local(mysql)方式

这种存储方式需要在本地运行一个mysql服务器,并作如下配置(下面两种使用mysql的方式,需要将	mysql的jar包拷贝到$HIVE_HOME/lib目录下)。 即是hive和mysql都配置在客户端修改hive-site.xml,配置如下

  
  hive.metastore.warehouse.dir  
  /user/hive_remote/warehouse  
  
  
  hive.metastore.local  
  true  
  
  
  javax.jdo.option.ConnectionURL  
  jdbc:mysql://localhost/hive_remote?createDatabaseIfNotExist=true  
  
  
  javax.jdo.option.ConnectionDriverName  
  com.mysql.jdbc.Driver  
  
  
  javax.jdo.option.ConnectionUserName  
  hive  
  
  
  javax.jdo.option.ConnectionPassword  
  password  
 

注意一个坑:
权限,虽然hive用户对hive_meta数据库是由操作权限的,但是这个数据库如果不存在,hive用户也是没有权限创建这个数据库,所以需要提前创建好hive_remote数据库

③Remote(mysql)方式

  1. 配置server端hive-site.xml
  
  hive.metastore.warehouse.dir  
  /user/hive/warehouse  
  
  
  javax.jdo.option.ConnectionURL  
  jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=true  
  
  
  javax.jdo.option.ConnectionDriverName  
  com.mysql.jdbc.Driver  
  
  
  javax.jdo.option.ConnectionUserName  
  root  
  
  
  javax.jdo.option.ConnectionPassword  
  123456  
 
  1. 配置客户端hive-site.xml
  
  hive.metastore.warehouse.dir  
  /user/hive/warehouse  
  
  
  hive.metastore.local  
  false  
  
  
  hive.metastore.uris  
  thrift://192.168.57.5:9083  

启动hive服务端程序

hive --service metastore  

客户端启动

hive

Remote方式搭建详细步骤

1.安装mysql

  1. 检查是否已安装mysql
rpm ‐qa|grep mysql
  1. 如果已安装,卸载,然后使用上一步命令查看是否已卸载
rpm ‐e ‐‐nodeps mysql‐libs‐5.1.73‐5.el6_6.x86_64(后面是响应的版本名称)
  1. 在线安装mysql
yum install -y mysql-server
  1. 开启mysql服务
service mysqld start
  1. 设置mysql 服务自启动
chkconfig mysqld on
  1. 新安装的mysql没有密码输入以下命令即可进入,提示输入密码直接回车
mysql -uroot -p
  1. 进入mysql后,设定权限,修改密码
修改root权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
刷新:
flush privileges;
  1. 添加用户
添加用户:
CREATE USER 'hive'@'%' IDENTIFIED BY '123';
授权用户:这里给hive用户操作hive_meta数据库的权限
grant all privileges on hive_meta.* to hive@"%" identified by '123';
刷新:
flush privileges;
  1. 为hive用户创建数据库 hive_mata,然后查看一下数据库
mysql> create database if not exists hive_mata;
Query OK, 1 row affected (0.04 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hive_meta          |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
  1. 使用mysql数据库
mysql> use mysql;
  1. 查看表,里面有一个user表存储着数据库用户的信息,这里可能会出现权限冲突问题,所以我们将多余用户信息删除
mysql> show tables;
mysql> delete from user where Host != '%';
  1. 退出mysql,使用hive登录
mysql -uhive -p123

2. 安装hive

  1. 打开最开始解压后hive安装包进入conf目录下,
cp hive-default.xml.template hive-site.xml
  1. 修改hive-site.xml 将原有的所有配置文件全部删除,用以下内容替换

         hive.metastore.warehouse.dir  
         /user/hive_localmysql/warehouse
 
 
         hive.metastore.local 
         true
 
 
         javax.jdo.option.ConnectionURL 
         jdbc:mysql://localhost/hive_meta?createDatabaseIfNotExist=true
 
 
         javax.jdo.option.ConnectionDriverName 
         com.mysql.jdbc.Driver
  
 
         javax.jdo.option.ConnectionUserName 
         hive
 
 
         javax.jdo.option.ConnectionPassword 
         123
  
  1. 环境变量配置
    vim /etc/profile
export HIVE_HOME=/opt/zgl/hive-1.2.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$PATH
  1. 将mysql的连接驱动包放到 hive 的 lib 目录下
  2. 将hive lib下的 jline 的jar包拷到 hadoop的 share/hadoop/yarn/lib 中(这里因为hadoop内的 jline 的jar包过时了,我们令其和 hive 中的版本保持一致)
  3. 服务端启动metastore服务(启动后台运行)
hive --service metastore >> /tmp/meta.log 2>&1 &
  1. 启动HDFS和YARN,在命令行输入hive即可进入hive shell,在这里便可以对hive进行操作。
客户端配置

配置步骤和以上服务端基本一致,可以直接用scp命令发送到客户端节点
唯一不同的地方修改hive-site.xml


        hive.metastore.local 
        false


        hive.metastore.uris 
        thrift://node04:9083 

然后,在客户端直接 hive 即可进入hive shell。这里的数据库存放的是源数据,默认只有一个default

到此就配置结束了 QAQ。

你可能感兴趣的:(大数据学习,hive搭建,hive安装)