Hive是一个基于Hadoop的数据仓库工具,以一种类SQL的HQL语句操作Hadoop数据仓库(HDFS等)。所以本地windows安装前需要先搭建Hadoop。前面文章已经大概介绍了环境搭建和踩坑汇总,所以这里也依旧只是介绍基础的安装方法。因为关于Hive的安装,网上其实有很多文章,这里更多的是小北在安装过程中的遇到的各种坑的汇总以及解决方法。
windows10
hadoop2.7.7
mysql-connector-java-5.1.7-bin.jar
hive2.1.1
1. Hadoop本地搭建,略过。
2. Hive下载安装,环境变量配置,略过。
3. Hive config配置。
(1). 找到hive的conf下的以下四个文件再按下面方式修改。
4. 创建目录。
(1). 先将mysql-connector-java-5.1.7-bin.jar文件移动到hive的lib中,如下。
(2). 现在hive根目录下创建一个my_hive再创建以下四个目录。
5. 修改hive-env.sh
(1). 找到hive的conf下的hive-env.sh并添加以下几个配置。
6. 修改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&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>
7. 在Hadopp上创建HDFS目录
(1). 创建以下目录并授予777权限。
(2). 在hadoop控制台上查看。
8. 创建MySQL数据库
(1). 创建hive数据库,可以以命令或者navicat方式创建。
create database if not exists hive default character set latin1;
9. 启动 Hive metastore
(1). 安装完毕只需要启动一次,启动后Mysql的hive数据库会多出以下表格。
hive --service metastore
10. 启动hive
(1). 如果配置了hive环境变量,如果没有则进入hive目录的bin文件下,输入hive。
(2). 启动成功没有报错,示例创建一张表格,输入以下HQL语句创建。
create table stu(id int, name string)
(3). 进入hadoop的控制台就可以查看了。
11. 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
去除 hive.metastore.local true
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: KaTeX parse error: Expected '}', got '%' at position 23: …:java.io.tmpdir%̲7D/%7Bsystem:user.name%7D Beeline version 2.1.1 by Apache Hive
打开hive-site.xml,找到hive.exec.local.scratchdir, 将带有system:的标识全部去掉,如下
4. 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>