当前位置:   article > 正文

Win10不需要Cygwin搭建大数据测试环境(4)---Hive_win10 只安装hive环境能用吗

win10 只安装hive环境能用吗

系列文章

1:《Win10不需要Cygwin搭建大数据测试环境(1)-Hadoop》
2:《Win10不需要Cygwin搭建大数据测试环境(2)-HBase》
3:《Win10不需要Cygwin搭建大数据测试环境(3)-Java操作HBase》
4:《Win10不需要Cygwin搭建大数据测试环境(4)-Hive》

前言

这篇文章是系列文章中的第四篇,主要描述了win10系安装Hive。

准备工作

1:完成第一篇教程,确保Hadoop正常运行。
2:下载Hive,我安装的版本是apache-hive-2.1.1-bin。安装路径是D:\apache-hive-2.1.1-bin。
3:设置环境变量 HIVE_HOME=D:\apache-hive-2.1.1-bin。

元数据(metastore)

这个是Hive独有的概念。
怎么理解呢?
HIVE的功能是将HQL翻译成MapReduce在Hadoop上执行。
元数据的功能就是将HQL翻译成MapReduce所需要的数据。
元数据默认存储在Derby中,建议都用关系型数据库。我的例子是使用了MySql。    
  • 1
  • 2
  • 3
  • 4
  • 5

部署过程

几个关键位置
D:\apache-hive-2.1.1-bin\conf
D:\apache-hive-2.1.1-bin\bin
D:\apache-hive-2.1.1-bin\scripts\metastore\upgrade

1:hive-site.xml

这是至关重要的配置文件。D:\apache-hive-2.1.1-bin\conf下面本没有这个文件。
但是有hive-default.xml.template这个文件,复制一个hive-default.xml.template,重命名为hive-site.xml.

修改如下配置,每个配置都需要搜索名称(name),然后改成自己的配置(value)。以下四项是关于元数据存储的数据库的配置。

<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </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>root</value>
      <description>password to use against metastore database</description>
    </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

接下来就是修改类似于 “${system:” 的配置了。在hive-site.xml中有很多地方引用了这种形式的变量,但是在实际运行时,在windows环境下这个变量存在问题。因此统一修改成
相对路径 ‘hive_home‘.使相关的文件尽量保存在同一个目录下。
相关的修改如下:

 <property>
    <name>hive.exec.local.scratchdir</name>    
    <value>hive_home/scratch_dir</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

  <property>
    <name>hive.downloaded.resources.dir</name>    
    <value>hive_home/resources_dir/${hive.session.id}_resources</value>    
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

   <property>
    <name>hive.querylog.location</name>
    <value>hive_home/querylog_dir</value>
    <description>Location of Hive run time structured log file</description>
  </property>

   <property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>hive_home/operation_dir</value>
    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  </property>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2:hive-log4j2.properties

将hive-log4j2.properties.template这个文件复制,重命名为hive-log4j2.properties.
将如下内容直接替换。

status = INFO
name = HiveLog4j2
packages = org.apache.hadoop.hive.ql.log

# list of properties
property.hive.log.level = INFO
property.hive.root.logger = DRFA
property.hive.log.dir = hive_log
property.hive.log.file = hive.log
property.hive.perflogger.log.level = INFO

# list of all appenders
appenders = console, DRFA

# console appender
appender.console.type = Console
appender.console.name = console
appender.console.target = SYSTEM_ERR
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{ISO8601} %5p [%t] %c{2}: %m%n

# daily rolling file appender
appender.DRFA.type = RollingRandomAccessFile
appender.DRFA.name = DRFA
appender.DRFA.fileName = ${hive.log.dir}/${hive.log.file}
# Use %pid in the filePattern to append <process-id>@<host-name> to the filename if you want separate log files for different CLI session
appender.DRFA.filePattern = ${hive.log.dir}/${hive.log.file}.%d{yyyy-MM-dd}
appender.DRFA.layout.type = PatternLayout
appender.DRFA.layout.pattern = %d{ISO8601} %5p [%t] %c{2}: %m%n
appender.DRFA.policies.type = Policies
appender.DRFA.policies.time.type = TimeBasedTriggeringPolicy
appender.DRFA.policies.time.interval = 1
appender.DRFA.policies.time.modulate = true
appender.DRFA.strategy.type = DefaultRolloverStrategy
appender.DRFA.strategy.max = 30

# list of all loggers
loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX, PerfLogger

logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn
logger.NIOServerCnxn.level = WARN

logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO
logger.ClientCnxnSocketNIO.level = WARN

logger.DataNucleus.name = DataNucleus
logger.DataNucleus.level = ERROR

logger.Datastore.name = Datastore
logger.Datastore.level = ERROR

logger.JPOX.name = JPOX
logger.JPOX.level = ERROR

logger.PerfLogger.name = org.apache.hadoop.hive.ql.log.PerfLogger
logger.PerfLogger.level = ${hive.perflogger.log.level}

# root logger
rootLogger.level = ${hive.log.level}
rootLogger.appenderRefs = root
rootLogger.appenderRef.root.ref = ${hive.root.logger}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

3:导数据

前面说了元数据需要数据库的支持,默认在linux下,可以使用如下命令完成数据库的初始化

schematool -dbType mysql -initSchema

但是windows下研究了半天好似不行,跟踪了一下执行的命令,最后发现

D:\apache-hive-2.1.1-bin\scripts\metastore\upgrade

这个路径下有数据库初始化的SQL脚本,尝试了一下竟然成功了。

将mysql\hive-schema-2.1.0.mysql.sql这个脚本导入到数据库中。用工具也行,用mysql命令也行。

mysql命令>SOURCE SOURCE D:\apache-hive-2.1.1-bin\scripts\metastore\upgrade\mysql\hive-txn-schema-2.1.0.mysql.sql;
  • 1

这一步执行应该不会有错误,如果有错误,看是不是选错文件夹了,我第一次选错了。

4:hadoop创建文件夹

hadoop上需要创建目录/user/hive/warehouse/的文件夹

5:启动Hadoop

6:启动hive

启动metastore

>hive --service metastore -hiveconf hive.root.logger=DEBUG
  • 1

启动hiveserver

>hive --service hiveserver2
  • 1

启动客户端

>hive --service cli 
  • 1

如果没有报错,表示win10安装hive成功。

7:执行测试语句

hive>create table test_table(id INT, name string);
  • 1
hive>show tables;
  • 1

这个test_table应该可以在Hadoop的路径下看到。

后续内容

beeline的使用
同HBase的整合
同Spark的整合

猜测

Hive和Hadoop的master是部署在一起的,那是否可以理解为Hive实际上是通过环境变量HADOOP_HOME来读取hadoop的配置,同Hadoop进行交互的。
因为Hive中并没有任何Hadoop的配置信息。

主要参考文章

http://blog.csdn.net/cds86333774/article/details/51135954
http://www.cnblogs.com/1130136248wlxk/articles/5517909.html
http://blog.csdn.net/scgaliguodong123_/article/details/52483829
http://blog.csdn.net/zhongguozhichuang/article/details/52702476
http://www.cnblogs.com/hbwxcw/p/5960551.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/399925
推荐阅读
相关标签
  

闽ICP备14008679号