- 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简单安装
下载位置如下,对于基于MR的hive使用1.x版本,否则建议2.x版本,使用hadoop 3.x的需要配合hive 3.x版本。鉴于目前国内还是大多数需要使用MR作为引擎执行,使用hive 1.x版本。
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
快速测试
- 解压安装
tar -zxf apache-hive-1.2.2-bin.tar.gz
- 配置
需要先安装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
- 仓库路径
默认保存路径在/user/hive/warehouse,所以需要hdfs中创建如下两个目录
/tmp
/user/hive/warehouse
- 测试
命令行输入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
原创,转载请注明来自
- 博客
- 个人网站http://jimwen.net/
参考
- 参考
- 参考 https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration#AdminManualConfiguration-HiveConfigurationVariables