HDFS讀寫過程和HIVE的優(yōu)點(diǎn)
HDFS(Hadoop分布式文件系統(tǒng)) HDFS是Hadoop和核心組件之一,用于存儲(chǔ)大規(guī)模的數(shù)據(jù)集,并提供了高容錯(cuò)性和高可靠性。他將數(shù)據(jù)分布式存儲(chǔ)在多臺(tái)服務(wù)器上,并通過塊(blok)的方式進(jìn)行管理。HDFS采用主從架構(gòu),包括一個(gè)主節(jié)點(diǎn)(NameNode)和多個(gè)從節(jié)點(diǎn)(DataNode).NameNode負(fù)責(zé)管理文件系統(tǒng)的命名空間和訪問控制,二DataNode負(fù)責(zé)實(shí)際的數(shù)據(jù)存儲(chǔ)和處理。
HDFS寫數(shù)據(jù)過程
1.客戶端請(qǐng)求:
- 客戶端向NameNode發(fā)起請(qǐng)求
- NameNode檢查權(quán)限和文件是否存在
- NameNode返回可寫的DataNode列表
2.管道建立:
- 客戶端將數(shù)據(jù)分成多個(gè)數(shù)據(jù)塊(默認(rèn)128MB)
- 建立DataNode寫入管道(pipeline)
- 數(shù)據(jù)按副本因子(默認(rèn)3)復(fù)制到多個(gè)DataNode
3.數(shù)據(jù)寫入
- 數(shù)據(jù)以數(shù)據(jù)包(packet) 為單位傳輸
- 采用“就近寫入”原則,優(yōu)先寫入本地節(jié)點(diǎn)
- 數(shù)據(jù)先寫入內(nèi)存緩沖區(qū),再刷寫到磁盤
4.確認(rèn)流程:
- DataNode之間通過ACK包確認(rèn)寫入成功
- 最終確認(rèn)返回客戶端
- NameNode更新元數(shù)據(jù)
HDFS讀數(shù)據(jù)過程
1.客戶端請(qǐng)求
- 客戶端向NameNode請(qǐng)求文件位置信息
- NameNode返回包含文件塊的DataNode列表
2.數(shù)據(jù)讀取
- 客戶端直接聯(lián)系最近的DataNode讀取數(shù)據(jù)
- 數(shù)據(jù)以流方式傳輸
- 自動(dòng)校驗(yàn)數(shù)據(jù)完整性
3.并行讀取
- 多個(gè)數(shù)據(jù)塊可并行讀取
- 客戶端自動(dòng)處理故障轉(zhuǎn)移(如某個(gè)DataNode不可用)
Hive的主要特點(diǎn)
1. 數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)
- 表結(jié)構(gòu)定義:支持Schema-on-Read,數(shù)據(jù)加載時(shí)才驗(yàn)證格式
- 多種存儲(chǔ)格式:支持TextFile、ORC、Parquet等
- 元數(shù)據(jù)管理:使用獨(dú)立的關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)元數(shù)據(jù)
2. SQL兼容性
- 類SQL語言(HQL):大部分標(biāo)準(zhǔn)SQL語法支持
- 復(fù)雜查詢支持:JOIN、子查詢、窗口函數(shù)等
- UDF擴(kuò)展:支持自定義函數(shù)開發(fā)
3.大數(shù)據(jù)處理能力
- MapReduce/Tez/Spark集成:多種執(zhí)行引擎支持
- 分區(qū)與分桶:支持?jǐn)?shù)據(jù)分區(qū)(partition)和分桶(bucket)
- 并行處理:自動(dòng)將查詢轉(zhuǎn)換為分布式任務(wù)
4. 數(shù)據(jù)管理特性
- ACID支持:Hive 3.0+支持完整的事務(wù)特性(限ORC格式)
- 動(dòng)態(tài)分區(qū):自動(dòng)根據(jù)數(shù)據(jù)值創(chuàng)建分區(qū)
- 視圖與物化視圖:支持邏輯視圖和物化視圖
5. 擴(kuò)展性與集成
- 多種接口:CLI、JDBC、ODBC、Web UI等
- 生態(tài)集成:與HBase、Spark、Kafka等大數(shù)據(jù)組件集成
- 多種序列化格式:支持JSON、Avro、Protocol Buffers等
6. 優(yōu)化特性
- 成本優(yōu)化器:基于代價(jià)的優(yōu)化(CBO)
- 向量化執(zhí)行:提高CPU利用率
- LLAP(Live Long and Process):混合執(zhí)行模型,實(shí)現(xiàn)亞秒級(jí)查詢

浙公網(wǎng)安備 33010602011771號(hào)