烏魯木齊app制作seo引擎優(yōu)化軟件
本文主要介紹hadoop、hive的結(jié)構(gòu)及使用,具體的操作步驟見最后的附件;
hadoop提供大數(shù)據(jù)的存儲、資源調(diào)度、計算,分為三個模塊:HDFS、YRAN、MapReduce
? ? HDFS提供數(shù)據(jù)的分布式存儲,分為三個節(jié)點(diǎn)NameNode,DataNode,SecondaryNameNode
? ? ? ? ? 1、當(dāng)客戶端發(fā)起讀寫數(shù)據(jù)請求時首先到 NameNode,NameNode審核權(quán)限、判斷剩余空間,然后告知客戶端讀寫的DataNode地址,客戶端向指定的DataNode發(fā)送數(shù)據(jù)包,被寫入數(shù)據(jù)的DataNode同時完成數(shù)據(jù)副本的復(fù)制工作,將其接收的數(shù)據(jù)分發(fā)給其它DataNode
? ? ? ? ?2、hdfs以biock(塊)為單位存儲文件,每個塊默認(rèn)256M,可調(diào)整塊的大小,每個塊可創(chuàng)建多個(可設(shè)置)備份來保證存儲文件的安全性
? ? ? ? ?3、edits文件:是一個流水賬文件,記錄hdfs中的每一次操作,也記錄了文件和block的對應(yīng)關(guān)系,一個文件如果經(jīng)過多次操作,在edits中存在多條記錄、檢索文件時效率比較低,所以就有了edits文件的合并
? ? ? ? ?4、edits文件合并后的文件叫做fsimage,只保留文件的最終結(jié)果,合并文件的操作是SecondaryNameNode來完成
? ? ? ? ?NameNode基于edits和FSImage的配合,完成整個文件系統(tǒng)文件的管理。
? ? ? ? ?啟動和停止:start-dfs.sh? 、stop-dfs.sh
? ?YARN是hadoop里面的資源調(diào)度組件,分為:ResourceManager,NodeManager,ProxyServer,JobHistoryServer
? ? ? ? 1、ResourceManager:整個集群的資源調(diào)度者, 負(fù)責(zé)協(xié)調(diào)調(diào)度各個程序所需的資源。
? ? ? ? 2、NodeManager:單個服務(wù)器的資源調(diào)度者,負(fù)責(zé)調(diào)度單個服務(wù)器上的資源提供給應(yīng)用程序使用。
? ? ? ? 3、ProxyServer:應(yīng)用程序代理,yarn在運(yùn)行時對外提供了一個web ui站點(diǎn),代理服務(wù)器的功能就是最大限度保障對WEB UI的訪問是安全的
? ? ? ? 4、JobHistoryServer:歷史服務(wù)器,應(yīng)用程序歷史信息記錄服務(wù),日志是在容器中產(chǎn)生的,分布在不同的服務(wù)器中難以查詢,JobHistoryServer抓取所有的日志在web ui中展示
? ? ? ? 單個任務(wù)在單個服務(wù)器上需要的資源稱之為容器(container),NodeManager預(yù)先占有這些資源供任務(wù)使用;
? ? ? ? 啟動和停止yarn:start-yarn.sh、stop-yarn.sh
? ?mapReduce是hadoop的分布式計算組件,運(yùn)行在yarn中的,不需要單獨(dú)啟動;
? ? ? ? MapReduce提供了兩個接口:
? ? ? ? ? ? Map功能接口提供了“分散”的功能, 由服務(wù)器分布式對數(shù)據(jù)進(jìn)行處理
? ? ? ? ? ? Reduce功能接口提供了“匯總(聚合)”的功能,將分布式的處理結(jié)果匯總統(tǒng)計
? ? ? ?MapReduce 代碼比較老,難以學(xué)習(xí)使用,在MapReduce基礎(chǔ)上推出了一些新的工具,底層都是MapReduce在執(zhí)行
?
Hive主要包含兩個模塊
? ? ?元數(shù)據(jù)管理:metastore服務(wù),用于存儲元數(shù)據(jù),如通過load等命令將文本文件存儲在mysql等數(shù)據(jù)庫中
? ? ?sql解析器:將SQL語句 翻譯成 MapReduce 程序運(yùn)行
? ? hive是單機(jī)部署,但是可以使用 分布式的mapReduce進(jìn)行計算 ??
使用hive需要啟動metastore和客戶端服務(wù)(用于客戶端連接):
? ? 啟動元數(shù)據(jù)管理服務(wù)
? ? ? ? 前臺啟動:bin/hive --service metastore?
? ? ? ? 后臺啟動:nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &
? ? 啟動客戶端,二選一,啟動后就可以通過DBeaver或DataGrid等工具連接hive進(jìn)行操作了
? ? ? ? Hive Shell方式(可以直接寫SQL): bin/hive
? ? ? ? Hive ThriftServer方式(不可直接寫SQL,需要外部客戶端鏈接使用): bin/hive --service hiveserver2
? ?數(shù)據(jù)庫中的列和文本文件中的列是一一對應(yīng)的,所以要指定列和列之間的分隔符,hive默認(rèn)是以”\001”作為分隔符,也可以手動指定
hive和mysql數(shù)據(jù)庫的不同:
? hive內(nèi)部表和外部表:
? ? ?內(nèi)部表類似數(shù)據(jù)庫中的表,表和數(shù)據(jù)是一體的,刪除表后數(shù)據(jù)也刪除了
? ? ?外部表是表和數(shù)據(jù)是獨(dú)立的,創(chuàng)建表時指定了目錄,那這個目錄中的文本文件就默認(rèn)成為了表數(shù)據(jù),刪除表后只是表刪除了,數(shù)據(jù)還在?? ?
? hive中有集合列:array,map,struct 使用這些列時需要指定集合中不同元素之間的分隔符
具體操作步驟及hive的類sql操作見下面附件:
鏈接:https://pan.baidu.com/s/1i_CefoRjWnO5fZ54AOhxhQ?pwd=g33j?
相關(guān)視頻課程推薦:? ? ? 2023新版黑馬程序員大數(shù)據(jù)入門到實(shí)戰(zhàn)教程,大數(shù)據(jù)開發(fā)必會的Hadoop、Hive,云平臺實(shí)戰(zhàn)項目全套一網(wǎng)打盡_嗶哩嗶哩_bilibili
?