`
weitao1026
  • 浏览: 1047719 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hive的meta 数据支持以下三种存储方式

 
阅读更多
测试环境下Hive总出问题,metastore的配置有问题。抽了点时间,把Hive的meta数据几种存储方式都配置了下。Hive的meta 数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储。远端存储比较适合生产环境。Hive官方wiki详细介绍了这三种方式,链接为:Hive Metastore 。

一、使用derby数据库存储元数据。

这种方式是最简单的存储方式,只需要在hive-default.xml或hive-site.xml做如下配置便可。


< 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 >



< property >

   < name >hive.metastore.warehouse.dir</ name >

   < value >/user/hive/warehouse</ value >

</ property >


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


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


二、使用本机mysql服务器存储元数据。这种存储方式需要在本地运行一个mysql服务器,并作如下配置(下面两种使用mysql的方式,需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下)。


< 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_remote?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 >root</ value >

</ property >



< property >

   < name >javax.jdo.option.ConnectionPassword</ name >

   < value >dandan</ value >

</ property >


三、使用远端mysql服务器存储元数据。这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。

1)Hive服务器端配置如下。

< property >

   < name >hive.metastore.warehouse.dir</ name >

   < value >/user/hive_remote/warehouse</ value >

</ property >



   < name >javax.jdo.option.ConnectionURL</ name >

   < value >jdbc:mysql://localhost/hive_remote?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 >root</ value >

</ property >



< property >

   < name >javax.jdo.option.ConnectionPassword</ name >

   < value >dandan</ value >

</ property >


2)Hive客户端配置如下。


< property >

   < name >hive.metastore.warehouse.dir</ name >

   < value >/user/hive_remote/warehouse</ value >

</ property >



< property >

   < name >hive.metastore.local</ name >

   < value >false</ value >

</ property >



< property >

   < name >hive.metastore.uris</ name >

   < value >thrift://localhost:9083</ value >

</ property >


3)服务进程启动如下,默认监听的端口是9083(Hive版本低于0.5的才这样启动)。


henshao@henshao-desktop:~/hive-0.3.99.1/conf$
$JAVA_HOME/bin/java  -Xmx1024m
-Dlog4j.configuration=file://$HIVE_HOME/conf/hive-log4j.properties
-Djava.library.path=$HADOOP_HOME/lib/native/Linux-amd64-64/ -cp
$CLASSPATH:$HADOOP_HOME/hadoop-0.19.2-core.jar
org.apache.hadoop.hive.metastore.HiveMetaStore


这里配置classpath太麻烦了,要把hadoop和hive的jar包都加到classpath上,手动加容易导致依赖错误。我写了一个简单的脚本,把$HIVE_HOME/lib下的jar全部连起来,用冒号分隔开。脚本代码如下。


#!/bin/bash



CLASSPATH=.



for dir in $*

do

     for file in ` ls $ dir `

     do

         CLASSPATH=$CLASSPATH:$ dir /$ file

     done

done



echo $CLASSPATH


运行时,只需要输入”./generate_classpath.sh $HIVE_HOME/lib”便可。然后将生成的字符串贴到.bashrc中,赋给CLASSPATH变量。

hive启动时有一个选项”–config”可以指定包含启动客户端用的配置文件的目录,该目录下需要有hive-default.xml或hive-site.xml文件。


hive --config conf_dir


根据我的实践发现,其实第二种方法也可以将Hive的元数据保存到一台远端服务器上,只要配置好javax.jdo.option.ConnectionURL这个连接串就行。
分享到:
评论

相关推荐

    Hive metastore 使用达梦数据库存储元数据

    然而,为了适应更复杂的业务需求和更高的性能,我们可以选择将Hive元数据存储在达梦数据库中。本文将详细介绍如何配置Hive metastore以使用达梦数据库。 首先,要在达梦数据库中创建metastore所需的用户和表空间。...

    Hive Meta Store E-R图

    - **LOCATION**:可变字符型 (VARCHAR),长度为4000,表示数据存储位置。 - **IS_COMPRESSED**:位型 (BIT),长度为1,表示数据是否被压缩。 - **NUM_BUCKETS**:整型 (INT),长度为11,表示分桶数量。 - **SERDE_ID...

    apache-hive-3.1.2-bin.tar.gz

    6. **metastore-server/src/main/resources/META-INF**:Hive元数据存储的相关信息,元数据存储了表、分区、列等信息。 7. **serde** 和 **udf** 目录:包含了序列化/反序列化(SerDe)库和用户定义函数(UDF),...

    hive 2.3.3 的jdbc 和 squirrel-sql-3.8.1-standard.jar 包

    Hive是大数据处理领域中的一...综上所述,Hive 2.3.3的JDBC驱动和Squirrel-SQL 3.8.1-standard.jar结合使用,为开发者和分析师提供了一种高效、直观的方式来操作和查询Hive数据仓库,极大地增强了对大数据的分析能力。

    tencentyun#qcloud-documents#Hive元数据管理1

    1. Hive 元数据与 Druid、Superset、Hue、Ranger、Oozie、Presto 组件元数据一起存储 2. 集群需要单独购买一个 Meta

    2.阿里云HBase X-Pack数据存储检索分析平台.pdf

    它支持交互式查询、集群资源管理、作业与工作流调度等功能,结合Hive Meta,进一步优化了数据的处理效率。通过使用HBase+Solr、Phoenix(SearchIndex)、BDS(大数据存储)等组件,实现了数据的一键归档、实时写入、...

    9、NIFI综合应用场景-通过NIFI配置kafka的数据同步

    你可以通过Kafka提供的命令行工具或第三方工具(如在示例中提到的http://server1:8048/topic/meta/nifi-kafka/)来监控和验证数据是否成功发送到Kafka,并被消费者正确消费。 总结来说,Nifi与Kafka的集成为ETL...

    3-2+基于Iceberg的湖仓一体架构实践.pdf

    * 对接iceberg catalog:Meta server 增加对iceberg catalog的支持,SQL SDK 增加iceberg catalog支持 * 平台开放iceberg表的管理功能支持代理用户 * 增加Table级别配置:'iceberg.user.proxy'='targetUser’ * 启用...

    医疗数据中台19.9.pptx

    通过强化学习实现主动、自我完善的智能平台构建基于医疗数据的群体健康体系大数据存储和管理平台分布式文件系统HDFS表存储HIVE列存储HBASE非结构化数据存储结构化数据存储元数据Meta半结构化数据存储群体。

    Hadoop之Hbase从入门到精通.doc

    Hadoop之HBase从入门到精通 ...HBase是一个功能强大且高效的分布式存储系统,适合大规模结构化数据存储和处理。本文仅为HBase技术的入门级介绍,读者可以继续深入学习HBase技术,掌握更多的高级应用。

    HBase技术介绍简介 NOSQL数据库 入门

    - **文件存储系统**:类似于Bigtable使用Google文件系统(GFS)作为底层存储,HBase选择Hadoop分布式文件系统(HDFS)来提供可靠的数据存储支持。 - **数据处理框架**:如同Bigtable依赖于MapReduce进行大数据处理,...

    Hadoop之Hbase从入门到精通

    HBase是一种分布式、高可靠性且高性能的列式存储系统,它基于Hadoop生态体系构建,并且能够支持大规模的数据存储需求。HBase的设计灵感来源于Google的Bigtable论文,通过模仿Bigtable的核心架构和技术特性,HBase...

    HBase技术介绍

    HBase是一种基于Hadoop生态系统的分布式列式存储系统,它主要设计用于处理大规模的数据存储,尤其是在廉价的PC服务器集群上构建大规模结构化数据仓库。HBase借鉴了Google Bigtable的设计理念,但它是开源的,因此...

    6-2+大数据指标模型治理与实践.pdf

    7. **工具应用**:例如Workbench、PowerDesigner用于数据建模,Saiku用于数据展示,开放式Log、开放式SQL、开放式OLAP用于数据转换,HiveMeta作为元数据存储,而DAG(有向无环图)可能指的是数据处理流程的可视化...

    hbase入门到精通

    HBase采用了一种独特的数据模型,主要包括以下几个关键概念: 1. **Table**(表):数据的容器。 2. **Row Key**(行键):每条记录的唯一标识符,决定了数据的物理存储顺序。 3. **Column Family**(列族):逻辑...

    医疗数据中台.pptx

    "医疗数据中台" 医疗数据中台是指医疗信息化的数据...此外,医疗数据中台还能够实现大数据存储和管理平台分布式文件系统HDFS表存储HIVE列存储HBASE非结构化数据存储结构化数据存储元数据Meta半结构化数据存储群体等。

    Hbase从入门到精通

    - **Pig/Hive**:提供高级语言支持,简化数据分析流程。 - **Sqoop**:提供RDBMS数据导入功能,便于将传统数据库的数据迁移到HBase中。 #### 三、HBase访问接口 HBase提供了多种访问接口,包括但不限于: 1. **...

    Hadoop之Hbase从入门到精通 .doc

    * 面向列:HBase 是一个面向列的分布式存储系统,提供了灵活的数据存储和检索能力。 HBase 访问接口 ---------------- HBase 提供了多种访问接口,包括: * Native Java API:最常规和高效的访问方式,适合 ...

    Hadoop之HBase简介

    HBase的设计灵感来源于Google的Bigtable,但它是开源的,旨在适应低成本的PC服务器集群,用于构建大规模结构化数据存储集群。 在Hadoop生态系统中,HBase位于结构化存储层,依赖于Hadoop的HDFS(Hadoop Distributed...

Global site tag (gtag.js) - Google Analytics