日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1 Hive基本概念

Hive是一個構建在Hadoop上的數據倉庫框架。最初,Hive是由Facebook開發,后來移交由Apache軟件基金會開發,并作為一個Apache開源項目。

Hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供類SQL查詢功能。

其本質是將SQL轉換為MapReduce的任務進行運算,底層由HDFS來提供數據的存儲,說白了hive可以理解為一個將SQL轉換為MapReduce的任務的工具,甚至更進一步可以說hive就是一個MapReduce的客戶端。

3K字詳解Hive,讓你徹底弄明白

 

2 Hive的特點與架構圖

  • Hive最大的特點是通過類SQL來分析大數據,而避免了寫MapReduce程序來分析數據,這樣使得分析數據更容易。
  • 數據是存儲在HDFS上的,Hive本身并不提供數據的存儲功能,它可以使已經存儲的數據結構化。
  • Hive是將數據映射成數據庫和一張張的表,庫和表的元數據信息一般存在關系型數據庫上(比如MySQL)。
  • 數據存儲方面:它能夠存儲很大的數據集,可以直接訪問存儲在Apache HDFS或其他數據存儲系統(如Apache HBase)中的文件。
  • 數據處理方面:因為Hive語句最終會生成MapReduce任務去計算,所以不適用于實時計算的場景,它適用于離線分析。
  • Hive除了支持MapReduce計算引擎,還支持Spark和Tez這兩種分布式計算引擎;
  • 數據的存儲格式有多種,比如數據源是二進制格式,普通文本格式等等;
  • hive具有sql數據庫的外表,但應用場景完全不同,hive只適合用來做批量數據統計分析
3K字詳解Hive,讓你徹底弄明白

 

3Hive的安裝方式

hive的安裝一共有三種方式:內嵌模式、本地模式、遠程模式

元數據服務(metastore)作用是:客戶端連接metastore服務,metastore再去連接MySQL數據庫來存取元數據。有了metastore服務,就可以有多個客戶端同時連接,而且這些客戶端不需要知道MySQL數據庫的用戶名和密碼,只需要連接metastore 服務即可。

  (1) 內嵌模式

  內嵌模式使用的是內嵌的Derby數據庫來存儲元數據,也不需要額外起Metastore服務。數據庫和Metastore服務都嵌入在主Hive Server進程中。這個是默認的,配置簡單,但是一次只能一個客戶端連接,適用于用來實驗,不適用于生產環境。解壓hive安裝包 bin/hive 啟動即可使用

  缺點:不同路徑啟動hive,每一個hive擁有一套自己的元數據,無法共享。

3K字詳解Hive,讓你徹底弄明白

 

 (2)本地模式

  本地模式采用外部數據庫來存儲元數據,目前支持的數據庫有:MySQL、Postgres、Oracle、MS SQL Server.在這里我們使用MySQL。本地模式不需要單獨起metastore服務,用的是跟hive在同一個進程里的metastore服務。也就是說當你啟動一個hive 服務,里面默認會幫我們啟動一個metastore服務。hive根據hive.metastore.uris 參數值來判斷,如果為空,則為本地模式。

  缺點:每啟動一次hive服務,都內置啟動了一個metastore。

3K字詳解Hive,讓你徹底弄明白

 

  (3)遠程模式

  遠程模式下,需要單獨起metastore服務,然后每個客戶端都在配置文件里配置連接到該metastore服務。遠程模式的metastore服務和hive運行在不同的進程里。在生產環境中,建議用遠程模式來配置Hive Metastore。在這種情況下,其他依賴hive的軟件都可以通過Metastore訪問hive。

  遠程模式下需要配置hive.metastore.uris 參數來指定metastore服務運行的機器ip和端口,并且需要單獨手動啟動metastore服務。hiveserver2是Hive啟動了一個server,客戶端可以使用JDBC協議,通過IP+ Port的方式對其進行訪問,達到并發訪問的目的。

3K字詳解Hive,讓你徹底弄明白

 

4 Hive的安裝

之前文章介紹過按照Hadoop,繼Hadoop后按照Hive。在此處選擇第三臺機器node3作為我們hive的安裝機器,安裝方式使用遠程方式。

準備工作:① 必須按照有Hadoop(可以是單節點也可以是高可用)和MySQL數據庫??蓞⒄瘴移渌麅善恼隆?/p>

     ② 在Node3主機上創建目錄(已創建有可以忽略):

mkdir  -p /export/server/
mkdir  -p /export/data/
mkdir  -p /export/software/
3K字詳解Hive,讓你徹底弄明白

 

準備一個Hive的包,可以去官網下載
http://archive.apache.org/dist/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

(1)上傳壓縮包到/export/software目錄里,并解壓安裝包

# 上傳壓縮包到/export/software目錄里,并解壓安裝包
cd /export/software/
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /export/server
cd /export/server
mv apache-hive-3.1.2-bin hive-3.1.2
3K字詳解Hive,讓你徹底弄明白

 


3K字詳解Hive,讓你徹底弄明白

 

(2)解決hadoop、hive之間guava版本差異

#解決hadoop、hive之間guava版本差異
cd /export/server/hive-3.1.2
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
3K字詳解Hive,讓你徹底弄明白

 

(3) 配置一個MySQL的連接包。這步必須配置,Mysql5.X和Mysql8.X的連接包可能不同,具體可以去官網下載,附上腳本之家的下載教程(
https://www.jb51.NET/article/190860.htm)

#上傳這個包到此目錄下/export/server/hive-3.1.2/lib
mysql-connector-JAVA-5.1.41-bin.jar
3K字詳解Hive,讓你徹底弄明白

 

(5)修改hive環境變量文件 添加Hadoop_HOME

#修改hive環境變量文件 添加Hadoop_HOME
cd /export/server/hive-3.1.2/conf/
mv hive-env.sh.template hive-env.sh
vim hive-env.sh

#---將以下的配置放到配置文件中,以hadoop-3.1.4和hive-3.1.2為例
HADOOP_HOME=/export/server/hadoop-3.1.4
export HIVE_CONF_DIR=/export/server/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/export/server/hive-3.1.2/lib

(6)配置mysql等相關信息,新增hive-site.xml

#--打開配置文件
vim hive-site.xml

#--將以下配置內容寫入配置文件中,具體的連接端口以自己本機為準,附上備注
<configuration>
    <!-- 存儲元數據mysql相關配置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value> jdbc:mysql://node3:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>

    <!-- H2S運行綁定host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>node3</value>
    </property>

    <!-- 遠程模式部署metastore 服務地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://node3:9083</value>
    </property>

    <!-- 關閉元數據存儲授權  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- 關閉元數據存儲版本的驗證 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>折疊 
3K字詳解Hive,讓你徹底弄明白

 

(7)初始化metadata(只需要在配置完Hive之后進行一次操作)

cd /export/server/hive-3.1.2

#初始化成功會在mysql中創建74張表
bin/schematool -initSchema -dbType mysql -verbos

(8)系統環境變量配置

#添加環境變量
vim /etc/profile

#將以下環境變量新增到/etc/profile文件中
export HIVE_HOME=/export/server/hive-3.1.2
export PATH=:$HIVE_HOME/bin:$PATH

#刷新,讓環境變量生效
source /etc/profile

(9)通過后臺運行啟動metastore和hiveserver2 啟動前需要查看下Hadoop是否啟動,Hadoop未啟動會報錯:連接失敗

#查看Hadoop是否啟動
jps

#Hadoop未啟動:沒有DataNode和NodeManage節點代表Hadoop未啟動
#一鍵啟動Hadoop(已啟動則忽略)
start-add.sh

#-----------------Metastore 和 Hiveserver2啟動----
nohup /export/server/hive-3.1.2/bin/hive --service metastore  2>&1 &
nohup /export/server/hive-3.1.2/bin/hive --service hiveserver2 2>&1 &

#啟動成功會生成日志,進入可以查看是否有問題
vim nohup.out
3K字詳解Hive,讓你徹底弄明白

 


3K字詳解Hive,讓你徹底弄明白

 

(10)驗證是否安裝成功

#在linux中輸入,hive直接回車,
hive

#出現一個終端,在該終端中可以輸入sql命令:
show databases;
3K字詳解Hive,讓你徹底弄明白

 

5Hive的交互方式

Hive交互方式有多種,這里以遠程模式的hiveserver2交互為例。需要對Hadoop配置文件進行更新。

#第一步:在NameNode節點上的主機上關閉Hadoop(我的是Node1主機)
stop-all.sh

#第二步:Node1主機上進入到Hadoop配置文件的路徑,然后編輯 core-site.xml文件
cd /export/server/hadoop-3.1.4/etc/hadoop/
vim core-site.xml

#第三步:在文件末尾<configuration>內追加配置
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

#第四步:將修改好的core-site.xml文件分發到node2和node3
scp core-site.xml node2:$PWD
scp core-site.xml node3:$PWD

#第五步:然后重啟Hadoop(stop-all.sh start-all.sh)
start-all.sh折疊 

在hive運行的服務器上,確保已經啟動metastore服務和hiveserver2服務,如果沒有啟動,則執行以下語句

nohup /export/server/hive-3.1.2/bin/hive --service metastore  2>&1 &
nohup /export/server/hive-3.1.2/bin/hive --service hiveserver2 2>&1 &

為了方便快捷,直接通過制作腳本進行登錄Hive

#Hive一鍵登錄腳本,安裝expect
yum  -y install expect

#新建一個腳本文件夾,并寫一個腳本
mkdir -p /export/server/script
cd /export/server/script
vim  beenline.exp

#腳本的內容如下:

#!/bin/expect
spawn beeline 
set timeout 5
expect "beeline>"
send "!connect jdbc:hive2://node3:10000r"
expect "Enter username for jdbc:hive2://node3:10000:"
send "rootr"
expect "Enter password for jdbc:hive2://node3:10000:"
send "123456r"
interact

#:wq保存腳本后,需要修改腳本權限
chmod 777 beenline.exp

#最后可以實現一鍵腳本登錄Hive
expect beenline.exp折疊 

6 使用IDEA連接hive

使用IntelliJ IDEA 連接

3K字詳解Hive,讓你徹底弄明白

 


3K字詳解Hive,讓你徹底弄明白

 


3K字詳解Hive,讓你徹底弄明白

 


3K字詳解Hive,讓你徹底弄明白

 

打開node1:9870 看到hadoop中生成了hive的數據表所在位置

3K字詳解Hive,讓你徹底弄明白

 

具體的hive語法操作自行百度,最后。引用網友的hive架構圖

3K字詳解Hive,讓你徹底弄明白

 

分享到:
標簽:Hive
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定