元数据--引入

  • 回顾Hive的功能:
  • 问题1:工作中使用Presto/SparkSQL/Impala来实现对Hive中的表进行处理,Presto/SparkSQL/Impala如何知道Hive中有哪些表呢?即使这些工具知道Hive中有哪些表,它怎么知道这些表对应的HDFS上的数据是什么呢 ?
  • 问题2:Hive的元数据存储在MySQL中,如果让这些框架直接读取MySQL中元数据,会有问题。
  • 问题3:如何配置MetaStore服务


回顾Hive的功能:

  • 功能一:将HDFS映射成Hive表的数据tips:【在工作中主要使用的功能】
  • 应用:现在在工作中使用Hive不做分析计算,主要做数据仓库的存储
  • 功能二:将SQL解析成MapReduce/Tez/Spark程序tips:【这个计算分析功能逐渐被替代了】在更高的版本,MR在未来会被Hive取消
  • Hive不仅仅支持将SQL转为MR
  • MR:默认会将SQL转换为MapReduce
  • Tez
  • Spark
  • 这个功能在实际工作中,逐渐被替换成别的工具来做分析处理,例如:
  • Presto
  • Impala
  • SparkSQL

问题1:工作中使用Presto/SparkSQL/Impala来实现对Hive中的表进行处理,Presto/SparkSQL/Impala如何知道Hive中有哪些表呢?即使这些工具知道Hive中有哪些表,它怎么知道这些表对应的HDFS上的数据是什么呢 ?

  • 解决:会让Presto/Impala/SparkSQL访问Hive的元数据
  • 这些框架会从Hive的元数据中找到表与HDFS的映射找到对应的HDFS文件地址
  • 会自己到HDFS上获取对应的数据,然后由自己的计算引擎计算

问题2:Hive的元数据存储在MySQL中,如果让这些框架直接读取MySQL中元数据,会有问题。

  • 第一:权限不好控制,所有的这些框架都需要有Mysql的访问权限
  • 第二:Hive的元数据,只有Hive能解析,其他框架即使得到了元数据,也无法解析
  • 解决:在Hive中构建一个服务:Metastore,负责管理所有的元数据请求
  • 接受所有元数据的访问请求
  • 管理元数据
  • 解析元数据返回给所有需要元数据的服务

问题3:如何配置MetaStore服务

  • step1:先修改配置文件:hive-site.xml
  • 添加指定metastore服务的地址和端口
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node-03:9083</value>
  </property>

tips:如果一旦配置了这个属性,启动顺序必须非常严格的按照先启动服务端,再启动客户端如果不注意启动顺序,就会报错

bin/hive:启动HIve的客户端和服务端

impala 元数据hive元数据 hive元数据在哪_元数据

  • step2:启动Hive
  • 必须先启动MetaStore服务
cd /export/servers/hive-1.1.0-cdh5.14.0/
  bin/hive --service metastore

impala 元数据hive元数据 hive元数据在哪_元数据_02

  • 然后启动Hive的服务端和客户端。
  • [不建议使用该种方法,详细参考另一篇文章]
bin/hive