前言:

Hive是一个基于Hadoop的数据仓库工具,以一品种SQL的HQL语句操作Hadoop数据仓库(HDFS等)。所以本地windows装置前须要先搭建Hadoop。后面文章曾经大略介绍了环境搭建和踩坑汇总,所以这里也仍旧只是介绍根底的装置办法。因为对于Hive的装置,网上其实有很多文章,这里更多的是小北在装置过程中的遇到的各种坑的汇总以及解决办法。 

环境:

  1. windows10
  2. hadoop2.7.7
    3. mysql-connector-java-5.1.7-bin.jar
    4. hive2.1.1

繁难装置:

  1. Hadoop本地搭建,略过。
  2. Hive下载安装,环境变量配置,略过。
    3. Hive config配置。
    (1). 找到hive的conf下的以下四个文件再按上面形式批改。
  3. 创立目录。
    (1). 先将mysql-connector-java-5.1.7-bin.jar文件挪动到hive的lib中,如下。

(2). 当初hive根目录下创立一个my_hive再创立以下四个目录。

  1. 批改hive-env.sh
    (1). 找到hive的conf下的hive-env.sh并增加以下几个配置。

  1. 批改hive-site.xml
    (1). 找到hive的conf下的hive-site.xml。
    (2). 批改以下几个选项。
<property>    <name>hive.exec.local.scratchdir</name>    <value>${java.io.tmpdir}/${user.name}</value>    <description>Local scratch space for Hive jobs</description></property><property>    <name>hive.downloaded.resources.dir</name>    <value>E:/2setsoft/1dev/apache-hive-2.1.1/my_hive/resources_dir/${hive.session.id}_resources</value>    <description>Temporary local directory for added resources in the remote file system.</description>  </property><property>    <name>javax.jdo.option.ConnectionURL</name>    <value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8&amp;createDatabaseIfNotExist=true</value>    <description>      JDBC connect string for a JDBC metastore.      To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.      For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.    </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. 在Hadopp上创立HDFS目录
    (1). 创立以下目录并授予777权限。


(2). 在hadoop管制台上查看。

8. 创立MySQL数据库
(1). 创立hive数据库,能够以命令或者navicat形式创立。create database if not exists hive default character set latin1;

  1. 启动 Hive metastore
    (1). 装置结束只须要启动一次,启动后Mysql的hive数据库会多出以下表格。
    hive --service metastore

  1. 启动hive
    (1). 如果配置了hive环境变量,如果没有则进入hive目录的bin文件下,输出hive。
    (2). 启动胜利没有报错,示例创立一张表格,输出以下HQL语句创立。create table stu(id int, name string)
    (3). 进入hadoop的控制台就能够查看了。

  1. HQL几个常见命令hive

启动hive

show databases;
查看所有数据库

use default;
关上指定数据库

show tables;
依据指定的数据库下展现所有数据表

desc movie;
查看 movie表构造

create movie(id int, name string);
创立了一个有id和name两个字段的表格

quit;
退出hive 

报错合集

  1. HiveConf of name hive.metastore.local does not exist
    去除 <property> <name> hive.metastore.local </name> <value>true</value> </property>
  2. Version information not found in metastore. hive.metastore.schema.verification is not enabled so recording the schema version 2.1.0在hive数据库的version增加一条记录,如下
  3. applying authorization policy on hive configuration: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D Beeline version 2.1.1 by Apache Hive关上hive-site.xml,找到hive.exec.local.scratchdir, 将带有system:的标识全副去掉,如下
  1. hadoop的web控制台文件系统,关上某个目录报错: Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp/hive/Administrator":Administrator:supergroup:drwx------进入hadoop命令,输出hadoop fs -chmod 777 /tmp/hive

Default数据仓库默认地位:hdfs上的:/user/hive/warehouse门路下

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