• hive简介
  • hive简单安装 - 快速测试
    - 生产环境配置

hive简介

hive是标准hadoop体系的一员,常作为OLAP的数据仓库。hive存储一般基于HDFS或HBase构建,查询计算过程依赖 Apache Tez™, Apache Spark™, 或MapReduce。没有定义专门的数据格式,数据格式可以由用户指定,用户定义数据格式需要指定三个属性:列分隔符(通常为空格、”\t”、”\x001″)、行分隔符(”\n”)以及读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 RCFile)。还可以通过hive serde指定数据序列化方式。

如下,hive的基本架构如下,它的主要功能就是翻译HQL成对应的MR任务或Spark等引擎执行任务,它需要依赖一个外部存储来保存对应表结构的schema,默认是derby嵌入式数据库,一般线上会使用mysql数据库,使用hivethriftserver提供远程jdbc服务。

hive的MSCK是什么的缩写 hive的schema是什么_hive的MSCK是什么的缩写

hive简单安装

下载位置如下,对于基于MR的hive使用1.x版本,否则建议2.x版本,使用hadoop 3.x的需要配合hive 3.x版本。鉴于目前国内还是大多数需要使用MR作为引擎执行,使用hive 1.x版本。

https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

快速测试

  1. 解压安装
tar -zxf apache-hive-1.2.2-bin.tar.gz
  1. 配置

需要先安装jdk>1.7和hadoop 2.x,配置对应的HADOOP_HOME如下

export HADOOP_HOME=<hadoop-install-dir>

然后配置对应环境变量如下

export HIVE_HOME="/Users/wenzhou/Software/apache-hive-1.2.2-bin"
PATH=$PATH:$HIVE_HOME/bin
  1. 仓库路径

默认保存路径在/user/hive/warehouse,所以需要hdfs中创建如下两个目录

/tmp
/user/hive/warehouse
  1. 测试

命令行输入hive即可进入hive命令行工作,输入如下测试代码

show tables;
CREATE TABLE pokes (foo INT, bar STRING);
show tables;

此时hadoop fs -ls /user/hive/warehouse,如下对应仓库已经建立,更多HQL命令参考这里

Found 1 items
drwxr-xr-x   - wenzhou supergroup          0 2019-10-13 16:54 /user/hive/warehouse/pokes

生产环境配置

应用在生产环境中,常常需要调整下hive的配置,包括

进入conf目录,如下

cp hive-default.xml.template hive-site.xml

修改如下几个参数

<!-- HDFS路径,用于存储不同 map/reduce 阶段的执行计划和这些阶段的中间输出结果 -->
<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/<username">> is created, with ${hive.scratch.dir.permission}.</description>
</property>
<!-- Hive 默认的数据文件存储路径,通常为 HDFS 可写的路径 -->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
</property>
<!-- Hive 默认的输出文件格式,与创建表时所指定的相同,可选项为 'TextFile' 、 'SequenceFile' 或者 'RCFile'等 -->
<property>
    <name>hive.default.fileformat</name>
    <value>TextFile</value>
    <description>
        Expects one of [textfile, sequencefile, rcfile, orc].
        Default file format for CREATE TABLE statement. Users can explicitly override it by CREATE TABLE ... STORED AS [FORMAT]
    </description>
</property>
<!-- mysql配置 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
   <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.1.68:3306/hive</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

这里需要先安装mysql,配置好,然后将对应的mysql驱动包放到hive lib目录,点此下载

另外,默认hive-site.xml中本地目录通过${system:java.io.tmpdir}等变量指定,但是实际中很多时候无法识别此变量,hive启动时报错"java.net.URISyntaxException: Relative path in absolute URI: KaTeX parse error: Expected '}', got 'EOF' at end of input: …a.io.tmpdir%7D/%7B",所以这里可以直接如下搜索替换

${system:java.io.tmpdir} -> /tmp
${system:user.name -> root

最后重启hive,创建hive表可以看到对应的schema已经写入mysql

原创,转载请注明来自

参考

  • 参考
  • 参考 https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration#AdminManualConfiguration-HiveConfigurationVariables