Hive安裝與啟動

来源:https://www.cnblogs.com/ruo1101/archive/2023/07/23/17575376.html
-Advertisement-
Play Games

## 一、mysql安裝 在配置Hive之前一般都需要安裝和配置MySQL,因為Hive為了能操作HDFS上的數據集,那麼他需要知道數據的切分格式,如行列分隔符,存儲類型,是否壓縮,數據的存儲地址等信息。 為了方便以後操作所以他需要將這些信息通過一張表存儲起來,然後將這張表(元數據)存儲到mysql ...


一、mysql安裝

在配置Hive之前一般都需要安裝和配置MySQL,因為Hive為了能操作HDFS上的數據集,那麼他需要知道數據的切分格式,如行列分隔符,存儲類型,是否壓縮,數據的存儲地址等信息。
為了方便以後操作所以他需要將這些信息通過一張表存儲起來,然後將這張表(元數據)存儲到mysql中。為了啥存儲到mysql里(實際是遠程mysql),因為hive本身就是一個解釋器,所以他不存儲數據,可以參考上一篇文章[MySQL安裝]進行安裝(https://www.cnblogs.com/ruo1101/p/17470047.html "MySQL安裝")

二、Hive的安裝與啟動

1.安裝Hive

1.1 下載Hive

官方下載地址:https://archive.apache.org/dist/hive/

1.2 上傳文件到hadoop集群

將準備好Hive文件安裝包,將壓縮包上傳到到事先準備好的目錄:/opt/software

再將壓縮文件mysql-connector-java-5.1.48.jar上傳到目錄:/opt/software

1.3 將壓縮包解壓到文件目錄

進入hive壓縮文件所在目錄:/opt/software,再執行以下代碼解壓hive文件到文件目錄:/opt/module

tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/module

將目錄(/opt/module/apache-hive-3.1.3-bin)重命名為(/opt/module/hive)

mv /opt/module/apache-hive-3.1.3-bin /opt/module/hive

再將壓縮文件mysql-connector-java-5.1.48.jar解壓到目錄:/opt/module/hive/lib

cp mysql-connector-java-5.1.48.jar /opt/module/hive/lib
1.4 修改Hive配置

需要使用root許可權

進入hive配置目錄:/opt/module/hive/conf/

並且對hive配置文件(hive-deafule.xml.template)進行重命名

cp /opt/module/hive/conf/hive-deafule.xml.template hive-site.xml
或者
mv /

進入hive目錄對文件hive-site.xml進行配置

或者直接創建一個配置文件hive-site.xml

hive-deafule.xml.template中的所需配置複製到hive-site.xml並針對修改其屬性

修改hive-site.xml文件屬性

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
--><configuration>

  <!-- WARNING!!! This file is auto generated for documentation purposes ONLY! -->
  <!-- WARNING!!! Any changes you make to this file will be ignored by Hive.   -->
  <!-- WARNING!!! You must make your changes in hive-site.xml instead.         -->
  <!-- Hive Execution Parameters -->
  <property>
  <!-- 鏈接的URL  -->
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</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.cj.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>123456</value>
  <description>password to use against metastore database</description>
  </property>

  <!-- 元數據存儲版本驗證 -->
  <property>
  <name>hive.metastore.schema.varification</name>
  <value>false</value>
  <description>
      Enforce metastore schema version consistency.
      True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic
            schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
            proper metastore schema migration. (Default)
      False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
    </description>
  </property>

  <!-- 元數據存儲許可權 -->
  <property>
    <name>hive.metastore.schema.verification.record.version</name>
    <value>false</value>
    <description>
      When true the current MS version is recorded in the VERSION table. If this is disabled and verification is
       enabled the MS will be unusable.
    </description>
  </property>

  <!-- Hive在hdfs中的工作目錄 -->
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>
</configuration>
1.5 修改環境變數

需要root許可權

進入環境變數目錄文件:/etc/profile.d/my_env.sh

vim /etc/profile.d/my_env.sh

追加寫入以下內容:

#Hive
export HIVE_HOME=/opt/module/hive
export PATH=$PAH:$HIVE_HOME/bin

刷新環境變數

source /etc/profile
1.6 解決jar衝突問題

Hive由日誌slf4j的配置,但是我們的yarn自己也有,兩者會衝突。

需要root許可權

先刷新環境變數,再執行以下代碼

mv $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar.bak

解決版本對應問題

mv $HIVE_HOME/lib/guava-19.0.jar $HIVE_HOME/lib/guava-19.0.jar.bak
cp /opt/module/hadoop-3.1.3/share/hadoop/common/lib/guava-27.0-jar /opt/module/hive/lib/
1.7 初始化Hive元數據倉庫
schematool -initSchema -dbType mysql -verbose

保證資料庫已創建,數據名與hive配置中的資料庫保持一致。

mysql所在集群機器,啟動mysql【hadoop102】,mysql與yarn同在一臺機器。

檢查mysql資料庫是否存在,是否初始化過,如果已經初始化過則先將資料庫刪除,重新初始化。

2. 啟動Hive

2.1 啟動hadoop集群

Hive的啟動依賴於hadoop的啟動,必須先啟動hadoop(dfs以及yarn).

2.2 啟動hive【hadoop10】
hive # 啟動hive命令

一般報錯即為dfs安全模式的原因,關閉安全模式即可: hdfs dfsadmin -safemode leave

用root用戶啟動報錯(許可權有問題)如下:

chown: changing ownership of '/tmp': Permission denied. user=root is not the owner of inode=/tmp

需用使用 export HADOOP_USER_NAME=普通用戶

然後使用hadoop fs -chmod -R 777 /tmp

再次啟動hive即可

2.3 驗證安裝環境
show databases

3. Hive的常用基本操作

3.1 查看當前存在資料庫

show databases;

3.2 選擇一個庫

use 資料庫名;

3.3 查看當前庫的表

show tables;

3.4 查看一個表

desc 表名

3.5 顯示表頭,資料庫名

在hive中設置參數,臨時生效,退出hive後失效

# 顯示資料庫名,該參數預設值為false

set hive.cli.print.current.db=true;

# 顯示列名,該設置會顯示表名.列名,預設值為false

set hive.cli.print.header=true;

# 不顯示表名,預設值為true

set hive.resultset.use.unique.column.names=false;

更改hive-site.xml使配置永久生效

<property>
    <name>hive.cli.print.header</name>
    <value>true</value>
    <description>是否列印表頭,預設值為false,即不列印</description>
</property>

<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
    <description>是否顯示資料庫名,預設值為false,即不顯示</description>
</property>

<property>
    <name>hive.resultset.use.unique.column.names</name>
    <value>false</value>
    <description>表頭中是否顯示表名,預設值為true,即顯示</description>
</property>

4 案列操作

新建一個表

create table test (id int,name string);

插入一條數據

insert into test values(1,'RuoZoe');

並查詢

select * from test;

有結果即可


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫,官方提供測試數據,50個併發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s ,且Redis通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止Redis支持的鍵值數據類型如下: > ...
  • # 1. Java語言概述 ## 1.1 Java概述 - 是`SUN`(`Stanford University Network`,斯坦福大學網路公司)1995年推出的一門高級編程語言。 - 是一種`面向Internet`的編程語言。Java一開始富有吸引力是因為Java程式可以在Web瀏覽器中運 ...
  • ### 歡迎訪問我的GitHub > 這裡分類和彙總了欣宸的全部原創(含配套源碼):[https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) ### 本篇概覽 - 本文是《quarkus實戰》系列的第二篇 ...
  • ## 模擬ArrayLIst的底層實現 ```java package com.tedu.api04.list; import java.util.Objects; /** * @author LIGENSEN * Date: 2023/7/20 11:35 */ public class Arra ...
  • # Unity UGUI的RectMask2D(2D遮罩)組件的介紹及使用 ## 1. 什麼是RectMask2D組件? RectMask2D是Unity UGUI中的一個組件,用於實現2D遮罩效果。它可以限制子對象在指定的矩形區域內顯示,超出區域的部分將被遮罩隱藏。 ## 2. RectMask2 ...
  • # Unity UGUI的LayoutElement(佈局元素)組件的介紹及使用 ## 1. 什麼是LayoutElement組件? LayoutElement是Unity UGUI中的一個佈局元素組件,用於控制UI元素在佈局中的大小和位置。它可以用於自動調整UI元素的大小,以適應不同的屏幕解析度和 ...
  • # shell腳本-入侵檢測與告警 ## 原理 利用inotifywait命令對一些重要的目錄作一個實施監控,例如:當/root 、/usr/bin 等目錄發生改變的,利用inotifywait看可以對其作一個監控作用。 ## inotifywait ### 介紹 inotifywait 是一個 L ...
  • 首先來看一下需要操作的函數,以及配置的步驟: 圖1 圖2 Code: usart.c #include "usart.h"void ustart_Init(void ){ GPIO_InitTypeDef GPIO_Init_Ustar ; // 定義輸出埠TX的結構體對象 USART_InitT ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...