Hive简介

1.hive概念
  hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。hive依赖于HDFS和MapReduce。
2.hive功能
  hive也是支持使用SQL来进行数据处理。包括解析SQL,优化SQL,策略选择,消耗模型等。一张表有两种数据,元数据和源数据。元数据就是描述表结构的数据,存储在本地的关系型数据库中。源数据就是表内数据,存储在HDFS上。
3.hive架构
  用户操作hive的接口有三个:CLI,Client,和WebUI。CLI就是在命令行中输入hive,进入hive脚本,编写SQL语句。Client包括JDBC和Beeline,它们通过连接hive提供的thrift server服务来操作hive。WebUI就是通过web页面,在页面中编写SQL语句通过hive执行,但是用户交互不好,不建议使用。hive还依赖于MetaStore,就是存储元数据的数据库,默认是derby。
4.hive搭建
  搭建hive工具的模式有三种:

  • local本地:元数据库与工具都是在本地。元数据库使用默认的derby。这种模式只需修改hive-site.xml文件。直接解压的hive安装包没有这个文件,需要将hive-default.xml.template文件改名为hive-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> 

注意点:Hadoop中的jline包,应该与hive中的版本一致。Hadoop的jline包在hadoop/share/hadoop/yarn/lib中。因为hive依赖于hdfs和mapreduce,所以需要启动hdfs集群和yarn集群(需要计算的时候启动就可以)。这种模式有一个缺点是不允许多个用户同时操作hive,是由于derby的缺陷导致的。

  • local(mysql):元数据库和hive工具是在同一节点上。元数据库用的是MySQL数据库。使用这种模式首先需要安装mysql,步骤是
安装mysql  
Yum install mysql-server -y

修改mysql权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
删除多余会对权限造成影响的数据
刷新权限
flush privileges;
添加用户:
CREATE USER 'hive'@'%' IDENTIFIED BY '123';
授权用户:
grant all privileges on hive_meta.* to hive@"%" identified by '123';
flush privileges;
设置开机启动
chkconfig mysqld on
注意一个坑:
关于权限,虽然hive用户对hive_meta数据库是由操作权限的,但是这个数据库如果不存在,hive用户
也是没有权限创建这个数据库,所以需要提前创建好hive_remote数据库。

然后还需要将mysql的jar包拷贝到hive的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>

  • 基于MySQL的远程模式:hive提供了一个服务叫做,meta store service。这种模式的原理就是,在服务端的hive就按照第二种模式搭建,客户端的hive工具则不再需要配置和元数据库相关的配置信息,它只需要连接服务端提供的meta store服务,和服务端共用同一个元数据库即可。使用这种模式服务都需要启动meta store服务命令为hive -service metastore,所以客户端的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.57.5:9083</value>  
</property>  
  
</configuration> 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值