2.hive的基本概念
1.hive的概念
hive:是hadoop的一個數(shù)據(jù)倉庫票髓。提供了一個類sql的功能,通過寫一個sql語句完成數(shù)據(jù)的分析掷空。
- 將結(jié)構(gòu)化的數(shù)據(jù)映射成一張表
- 結(jié)構(gòu)化數(shù)據(jù): 存有關(guān)系的數(shù)據(jù)(關(guān)系型數(shù)據(jù)庫)肋殴、有一定規(guī)則的文本
- 半結(jié)構(gòu)化數(shù)據(jù):非關(guān)系模型的囤锉、有基本固定結(jié)構(gòu)模式的數(shù)據(jù),例如日志文件护锤、XML文檔官地、JSON文檔、Email等烙懦。
- 非結(jié)構(gòu)化數(shù)據(jù):沒有固定模式的數(shù)據(jù)驱入,如WORD、PDF氯析、PPT亏较、EXL,各種格式的圖片掩缓、視頻等雪情。
hive本身不存儲數(shù)據(jù),數(shù)據(jù)存儲到hdfs上拾因,當(dāng)執(zhí)行sql語句的時候旺罢,實際是將sql語句轉(zhuǎn)換成mapreduce去處理。
2.hive的架構(gòu)
(1)用戶的接口:寫sql的地方绢记,shell/cli jdbc odbc web接口
(2)解析器:
- 1)編譯器:需要將sql編譯成mapreduce
- 2)優(yōu)化器:寫一個sql扁达,對sql進行一個優(yōu)化
- 3)執(zhí)行器:將mr交由yarn去執(zhí)行
2.hive的架構(gòu):
? 1)用戶接口:Hive提供多種用戶接口,主要通過shell的client完成相關(guān)操作
? 2)解析器:
? 1)編譯器:用于sql的解析蠢熄,轉(zhuǎn)化為mapreduce
? 2)優(yōu)化器:在編譯后的結(jié)果進行優(yōu)化跪解。
? 3)執(zhí)行器:執(zhí)行sql(最終執(zhí)行mapreduce)
image.png
? 1)用戶接口:Hive提供多種用戶接口,主要通過shell的client完成相關(guān)操作
? 2)解析器:
? 1)編譯器:用于sql的解析签孔,轉(zhuǎn)化為mapreduce
? 2)優(yōu)化器:在編譯后的結(jié)果進行優(yōu)化叉讥。
? 3)執(zhí)行器:執(zhí)行sql(最終執(zhí)行mapreduce)
image.png
MetaStore : 提供元數(shù)據(jù)服務(wù)。
Driver : 管理HQL執(zhí)行的生命周期饥追,貫穿Hive任務(wù)整個執(zhí)行期間图仓。
Compiler : 編譯HQL并將其轉(zhuǎn)化為一系列的Map/Reduce任務(wù)。
Optimizer : 優(yōu)化器但绕,優(yōu)化HQL生成的執(zhí)行計劃和MapReduce任務(wù)救崔。
Executor : 執(zhí)行Map/Reduce任務(wù)。
ThriftServer : 提供thrift接口捏顺,作為JDBC和ODBC的服務(wù)端六孵,將Hive和其他應(yīng)用程序集成起來。
Clients :為用戶訪問提供命令行接口Beeline和JDBC/ODBC接口幅骄。
image.png
(3)元數(shù)據(jù):默認存儲derby數(shù)據(jù)庫
- /hive bin/hive 產(chǎn)生兩個庫劫窒,元數(shù)據(jù)導(dǎo)致不一致
- 2.只允許一個人連接
- 3.實際中,我們使用mysql數(shù)據(jù)進行元數(shù)據(jù)的存儲和管理
3.hive的安裝部署
在使用hive之前拆座,一定要啟動hadoop
(1)詳見文檔
(2)hive使用beeline的方式:
? 使用beeline連接主巍,hive中沒有設(shè)置對于自己的用戶名和密碼冠息,輸入用戶名和密碼,對于用戶名要使用hadoop安裝時的用戶名煤禽,輸入root
hive的使用方式:
有3種
元數(shù)據(jù)存放在mysql
? 1)hive shell
? 2)通過jdbc的方式連接铐达,beeline
===[首先啟動metastore岖赋,再啟動hiveserver2]
? 首先要啟動服務(wù)檬果,hiveserver2
? 前臺啟動方式: bin/hive --service hiveserver2
? 后臺啟動方式:nohup bin/hive --service hiveserver2 2>&1 &
? 然后通過beeline的方式訪問:
? bin/beeline
? !connect jdbc:hive2://node03:10000
3)hive 命令
? hive -e #指定一個sql語句執(zhí)行
? bin/hive -e "use test;select * from test001;“
? hive -f #指定一個sql腳本執(zhí)行
? bin/hive -f text.sql
2.hive的介紹
? hive:是基于hadoop的數(shù)據(jù)倉庫的工具。hive中數(shù)據(jù)的存儲在hadoop的hdfs上進行存儲唐断。
? hive中數(shù)據(jù)的分析选脊,使用類sql的語言進行分析---HQL
? hive中sql的自行,最終會轉(zhuǎn)換成mapreduce去執(zhí)行脸甘。
學(xué)習(xí)hive的原因:
? 1)學(xué)習(xí)成本的降低
? 2) 降低項目開發(fā)周期
? 3)mapreduce的難度大
? 使用hive:
? 1)操作簡單易上手
hive的特點:
? 1)可擴展:hive可以自由擴展集群的規(guī)模恳啥。
? 注意:hive沒有集群的概念,只是一個工具丹诀。
? 2)延展性:功能可以擴展钝的,主要是用戶自定義函數(shù)(udf)
? 3)容錯:hadoop的容錯機制。
? hive和hadoop的關(guān)系:
? hive中數(shù)據(jù)存儲是基于hdfs
? hive的HQL執(zhí)行是基于mapreduce
? hive和hadoop的關(guān)系:緊耦合
hive:數(shù)據(jù)倉庫铆遭,基于hadoop實現(xiàn)
架構(gòu):hadoop,
執(zhí)行引擎:mr
存儲:hdfs
安裝:默認使用derby硝桩,我們要使用mysql
客戶端的連接:
1 bin/hive
2 beeline
3bin/hive
-e 執(zhí)行sql
-f執(zhí)行sql文件
Hive和數(shù)據(jù)庫比較
Hive 和數(shù)據(jù)庫除了擁有類似的查詢語言,再無類似之處枚荣。
1)數(shù)據(jù)存儲位置
1碗脊、Hive 存儲在 HDFS 。
2橄妆、數(shù)據(jù)庫將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中衙伶。
2)數(shù)據(jù)更新
Hive中不建議對數(shù)據(jù)的改寫。
而數(shù)據(jù)庫中的數(shù)據(jù)通常是需要經(jīng)常進行修改的害碾。
3)執(zhí)行延遲
Hive 執(zhí)行延遲較高矢劲。數(shù)據(jù)庫的執(zhí)行延遲較低。當(dāng)然慌随,這個是有條件的芬沉,即數(shù)據(jù)規(guī)模較小,當(dāng)數(shù)據(jù)規(guī)模大到超過數(shù)據(jù)庫的處理能力的時候儒陨,Hive的并行計算顯然能體現(xiàn)出優(yōu)勢花嘶。
4)數(shù)據(jù)規(guī)模
Hive支持很大規(guī)模的數(shù)據(jù)計算;數(shù)據(jù)庫可以支持的數(shù)據(jù)規(guī)模較小蹦漠。