1.hive基础与安装

  • 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服务。

1.hive基础与安装_第1张图片

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=

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

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

修改如下几个参数


<property>
    <name>hive.exec.scratchdirname>
    <value>/tmp/hivevalue>
    <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>

<property>
    <name>hive.metastore.warehouse.dirname>
    <value>/user/hive/warehousevalue>
    <description>location of default database for the warehousedescription>
property>

<property>
    <name>hive.default.fileformatname>
    <value>TextFilevalue>
    <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>

    <property>
        <name>javax.jdo.option.ConnectionUserNamename>
        <value>rootvalue>
    property>
    <property>
        <name>javax.jdo.option.ConnectionPasswordname>
        <value>123456value>
    property>
   <property>
        <name>javax.jdo.option.ConnectionURLname>
        <value>jdbc:mysql://192.168.1.68:3306/hivevalue>
    property>
    <property>
        <name>javax.jdo.option.ConnectionDriverNamename>
        <value>com.mysql.jdbc.Drivervalue>
    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://blog.csdn.net/wenzhou1219
  • 个人网站http://jimwen.net/

参考

  • 参考 https://www.cnblogs.com/dxxblog/p/8193967.html
  • 参考 https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration#AdminManualConfiguration-HiveConfigurationVariables

你可能感兴趣的:(#,hive)