windows下Hive搭建踩坑彙總

beiqiaosu發表於2023-05-17

前言:

        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下的以下四個檔案再按下面方式修改。

windows下Hive搭建踩坑彙總

4. 建立目錄。

(1). 先將mysql-connector-java-5.1.7-bin.jar檔案移動到hive的lib中,如下。

windows下Hive搭建踩坑彙總

(2). 現在hive根目錄下建立一個my_hive再建立以下四個目錄。

windows下Hive搭建踩坑彙總

5. 修改hive-env.sh

(1). 找到hive的conf下的hive-env.sh並新增以下幾個配置。

windows下Hive搭建踩坑彙總

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&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>

7. 在Hadopp上建立HDFS目錄

(1). 建立以下目錄並授予777許可權。

windows下Hive搭建踩坑彙總

windows下Hive搭建踩坑彙總

(2). 在hadoop控制檯上檢視。

windows下Hive搭建踩坑彙總

8. 建立MySQL資料庫

(1). 建立hive資料庫,可以以命令或者navicat方式建立。

create database if not exists hive default character set latin1;

windows下Hive搭建踩坑彙總

9. 啟動 Hive metastore

(1). 安裝完畢只需要啟動一次,啟動後Mysql的hive資料庫會多出以下表格。

hive --service metastore

windows下Hive搭建踩坑彙總

10. 啟動hive

(1). 如果配置了hive環境變數,如果沒有則進入hive目錄的bin檔案下,輸入hive。

(2). 啟動成功沒有報錯,示例建立一張表格,輸入以下HQL語句建立。

create table stu(id int, name string)

(3). 進入hadoop的控制檯就可以檢視了。

windows下Hive搭建踩坑彙總

11. HQL幾個常見命令

hive
啟動hiveshow databases;
檢視所有資料庫
use default;
開啟指定資料庫show tables;
根據指定的資料庫下展示所有資料表desc movie;
檢視 movie表結構create movie(id int, name string);
建立了一個有id和name兩個欄位的表格
quit;
退出hive

 

報錯集錦

1. HiveConf of name   does not exist
去除 <property> <name>   </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新增一條記錄,如下
windows下Hive搭建踩坑彙總
 
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:的標識全部去掉,如下
windows下Hive搭建踩坑彙總
 
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
windows下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>

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029959/viewspace-2952590/,如需轉載,請註明出處,否則將追究法律責任。

相關文章