hive是基於hadoop的乙個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供類sql查詢功能。
人員學習成本太高
專案週期要求太短
mapreduce實現複雜查詢邏輯開發難度太大
操作介面採用類sql語法,提供快速開發的能力。
避免了去寫mapreduce,減少開發人員的學習成本。
擴充套件功能很方便。
hive可以自由的擴充套件集群的規模,一般情況下不需要重啟服務。
hive支援使用者自定義函式,使用者可以根據自己的需求來實現自己的函式。
良好的容錯性,節點出現問題sql仍可完成執行。
tasktracker 相當於: nodemanager + yarnchild
hive利用hdfs儲存資料,利用mapreduce查詢資料
1.4 hive與傳統資料庫對比
總結:hive具有sql資料庫的外表,但應用場景完全不同,hive只適合用來做批量資料統計分析
1、hive中所有的資料都儲存在 hdfs 中,沒有專門的資料儲存格式(可支援text,sequencefile,parquetfile,rcfile等)
2、只需要在建立表的時候告訴 hive 資料中的列分隔符和行分隔符,hive 就可以解析資料。
3、hive 中包含以下資料模型:db、table,external table,partition,bucket。
² external table:與table類似,不過其資料存放位置可以在任意指定路徑
² partition:在hdfs中表現為table目錄下的子目錄
² bucket:在hdfs中表現為同乙個表目錄下根據hash雜湊之後的多個檔案
單機版:
元資料庫mysql版:
啟動方式,(假如是在hadoop01上):
啟動為前台:bin/hiveserver2
啟動為後台:nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
啟動成功後,可以在別的節點上用beeline去連線
v 方式(1)
hive/bin/beeline 回車,進入beeline的命令介面
輸入命令連線hiveserver2
beeline> !connect jdbc:hive2//mini1:10000
(hadoop01是hiveserver2所啟動的那台主機名,埠預設是10000)
v 方式(2)
或者啟動就連線:
bin/beeline -u jdbc:hive2://mini1:10000 -n hadoop
接下來就可以做正常sql查詢了
[hadoop@hdp-node-02 ~]$ hive -e 『sql』
HDFS讀取檔案步驟
client呼叫filesystem.open 該filesystem指向的例項是distrbutedfilesystem dfs 它通過rpc請求到namenode.namenode收到請求後,對於每乙個塊返回存有該副本的datanode位址。並且依照 網路拓撲 來排序。就近原則 dfs獲取到bl...
HDFS 檔案讀取過程
client向namenode發起rpc請求,來確定請求檔案block所在的位置 namenode會視情況返回檔案的部分或者全部block的主機列表,namenode會對列表進行排序,排序兩個規則 網路拓撲結構中距離 client 近的排靠前 心跳機制中超時匯報的 dn 狀態為 stale,這樣的排...
Python 檔案的讀取和存放
如果資料夾不存在,則自動創立 path videotoimage 資料夾路徑 ifnot os.path.exists path os.mkdir path 讀取整個列表的檔案 filepath video2 pathdir os.listdir filepath 儲存檔案到檔案同名資料夾裡 pat...