ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hive环境搭建

2019-08-04 21:38:25  阅读:292  来源: 互联网

标签:bin yk 环境 hadoop hive SLF4J Hive home 搭建


Hive入门

初识hive

  • 由FackBook开源用于解决海量结构化日志的数据统计;
  • Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张表,并提供类SQL查询功能
  • 构建在Hadoop之上的数据仓库:
    使用HQL作为查询接口;
    使用HDFS存储;
    使用MapRedece计算;
  • Hive的本质是将 SQL 语句转换为 MapReduce 程序;
  • 灵活性和扩展性比较好:支持UDF,自定义存储格式等;
  • 适合离线数据处理;

仓库对比

在这里插入图片描述
在这里插入图片描述

三种安装模式

内嵌模式

元数据保存在内嵌的derby中,允许一个会话连接,尝试多个会话链接时会报错;
hive服务、metastore以及derby服务运行在同一个进程中;
该模式无需特殊配置(在不修改任何配置的情况下,在本机通过默认的元数据数据库管理);

hive中有一个自带的数据库derby;
首次启动需要进行初始化操作(因为有一些默认的表结构和默认的数据库);
初始化成功之后,会在当前执行的目录下,生成:metastore_db;
在初始化时所在目录下,运行hive,将进入hive shell窗口;
derby是将所有的数据,存储在当前metestore_db这个目录中的;
如果在不同的目录下,多次初始化的话,将无法做到数据共享;
所以内嵌模式,只适用于学习使用;

注意事项:
执行hive之前,启动hdfs;
在哪一个目录下运行hive,都必须进行初始化;
如果在同一个目录下,多次初始化时,需要将我们生成的metastore_db删除,再进行初始化;

对只能单用户操作的理解:
初始化操作成功后,运行hive,可以进入hive shell窗口;
新打开一个终端,进入相同目录,运行hive,会报错,报错信息如下:
Another instance of Derby may have already booted the database /home/yk/apache-hive-2db.
如果在不同目录下执行初始化操作,运行hive,也能够进入hive shell窗口,但与另一个运行实例数据不共享(因为他们连接的是不同的数据库)

配置环境变量

[/etc/profile]
export HIVE_HOME=/home/yk/hive
export PATH=$PATH:$HIVE_HOME/bin

初始化操作

[root@master106 bin]# schematool -initSchema -dbType derby
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ibutils/bin:%JAVA_HOME/bin:/soft/maven/bin:/home/yk/hadoop-2.7.3/bin:/home/yk/hadoop-2.7.3/sbin:/home/yk/crail/assembly/target/crail-1.0-bin:/home/yk/spark/bin:/home/yk/spark/sbin:/home/yk/zookeeper/bin:/bin:/home/yk/hive/bin:/home/yk/kafka-eagle-bin-1.2.8/kafka-eagle-web-1.2.8/bin:/root/bin:/home/yk/hadoop-2.7.3/bin:/home/yk/hadoop-2.7.3/sbin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/yk/apache-hive-2.1.0-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/yk/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Metastore connection URL:	 jdbc:derby:;databaseName=metastore_db;create=true
Metastore Connection Driver :	 org.apache.derby.jdbc.EmbeddedDriver
Metastore connection User:	 APP
Starting metastore schema initialization to 2.1.0
Initialization script hive-schema-2.1.0.derby.sql
Initialization script completed
schemaTool completed

// 此时会生成一个metastore_db文件

运行hive

// 注:要启动hdfs,否者报错
[root@master106 bin]# hive
which: no hbase in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/ibutils/bin:%JAVA_HOME/bin:/soft/maven/bin:/home/yk/hadoop-2.7.3/bin:/home/yk/hadoop-2.7.3/sbin:/home/yk/crail/assembly/target/crail-1.0-bin:/home/yk/spark/bin:/home/yk/spark/sbin:/home/yk/zookeeper/bin:/bin:/home/yk/hive/bin:/home/yk/kafka-eagle-bin-1.2.8/kafka-eagle-web-1.2.8/bin:/root/bin:/home/yk/hadoop-2.7.3/bin:/home/yk/hadoop-2.7.3/sbin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/yk/apache-hive-2.1.0-bin/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/yk/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in jar:file:/home/yk/apache-hive-2.1.0-bin/lib/hive-common-2.1.0.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive>

基本操作

https://www.yiibai.com/hive/hive_create_table.html

  • 缺点: 只能单用户操作(另一终端下执行hive报错)
Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /home/yk/apache-hive-2db.

本地模式

hive服务与metastore服务运行在同一个进程中,mysql是单独的进程,可以在同一台机器上,也可以在远程机器上。该模式只需将hive-site.xml中的ConnectionURL指向mysql,并配置好驱动名、数据库连接账号即可。

本地模式:改变元数据的存放位置(实现数据共享与多用户操作)
安装mysql: linux环境下,通常与hive安装在同一台主机上。
将元数据写入mysql中,同时可以在任意目录下,执行hive,进入到hive shell窗口。
让hive与mysql互连,让hive连接mysql。

1、修改hive中的配置文件

[root@master106 conf]# mv hive-default.xml.template hive-site.xml
[root@master106 conf]# vim hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
  <configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://172.16.2.106:3306/hive?createDatabaseIfNotExist=true</value>
    </property>
    <property> //驱动名
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>1234</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/home/yk/hive</value>
        <description>Local scratch space for Hive jobs</description>
    </property>
    <property>
        <name>hive.querylog.location</name>
        <value>/home/yk/hive/querylog</value>
        <description>Location of Hive run time structured log file</description>
    </property>
    <property>
        <name>hive.server2.logging.operation.log.location</name>
        <value>/home/yk/hive/server2_logs</value>
        <description>Top level directory where operation logs are stored if logging functionality is enabled
        </description>
    </property>
    <property>
        <name>hive.server2.enable.doAs</name>
        <value>false</value>
        <description>
            Setting this property to true will have HiveServer2 execute
            Hive operations as the user making the calls to it.
        </description>
    </property>
<configuration>

2、将mysql的驱动包mysql-connector-java-5.1.17.jar 放在$HIVE_HOME/lib/目录下
3、初始化操作

schematool -initSchema -dbType mysql

4、 可以在任意目录下执行hive,也可以同时启动多个hive shell窗口

远程模式

hive服务和metastore在不同的进程中,可能是不同的机器。

标签:bin,yk,环境,hadoop,hive,SLF4J,Hive,home,搭建
来源: https://blog.csdn.net/qq_29573903/article/details/86158634

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有