HDFS讀寫數據的原理

  • 目錄
    • 1 概述
    • 2 HDFS寫數據流程
    • 3 HDFS讀數據流程

目錄

最近由于要準備面試,就把之前學過的東西好好整理下,權當是復習。
下面說下HDFS讀寫數據的原理。

1 概述

  1. HDFS集群分為兩大角色:NameNode、DataNode
  2. NameNode負責管理整個文件系統的元數據
  3. DataNode 負責管理用戶的文件數據塊
  4. 文件會按照固定的大小(blocksize)切成若干塊后分布式存儲在若干臺datanode上
  5. 每一個文件塊可以有多個副本,并存放在不同的datanode上
  6. Datanode會定期向Namenode匯報自身所保存的文件block信息,而namenode則會負責保持文件的副本數量
  7. HDFS的內部工作機制對客戶端保持透明,客戶端請求訪問HDFS都是通過向namenode申請來進行

2 HDFS寫數據流程

2.1 概述
客戶端要向HDFS寫數據,首先要跟namenode通信以確認可以寫文件并獲得接收文件block的datanode,然后,客戶端按順序將文件逐個block傳遞給相應datanode,并由接收到block的datanode負責向其他datanode復制block的副本
2.2 詳細步驟圖
這里寫圖片描述

2.3 詳細步驟解析
1、根namenode通信請求上傳文件,namenode檢查目標文件是否已存在,父目錄是否存在
2、namenode返回是否可以上傳
3、client請求第一個 block該傳輸到哪些datanode服務器上
4、namenode返回3個datanode服務器ABC
5、client請求3臺dn中的一臺A上傳數據(本質上是一個RPC調用,建立pipeline),A收到請求會繼續調用B,然后B調用C,將真個pipeline建立完成,逐級返回客戶端
6、client開始往A上傳第一個block(先從磁盤讀取數據放到一個本地內存緩存),以packet為單位,A收到一個packet就會傳給B,B傳給C;A每傳一個packet會放入一個應答隊列等待應答
7、當一個block傳輸完成之后,client再次請求namenode上傳第二個block的服務器。

3 HDFS讀數據流程

3.1 概述
客戶端將要讀取的文件路徑發送給namenode,namenode獲取文件的元信息(主要是block的存放位置信息)返回給客戶端,客戶端根據返回的信息找到相應datanode逐個獲取文件的block并在客戶端本地進行數據追加合并從而獲得整個文件
3.2 詳細步驟圖

這里寫圖片描述
3.3 詳細步驟解析
1、跟namenode通信查詢元數據,找到文件塊所在的datanode服務器
2、挑選一臺datanode(就近原則,然后隨機)服務器,請求建立socket流
3、datanode開始發送數據(從磁盤里面讀取數據放入流,以packet為單位來做校驗)
4、客戶端以packet為單位接收,先在本地緩存,然后寫入目標文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456728.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

理解列存儲索引

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。 優點和使用場景 SQL Server 內存中列存儲索引通過使用基于列的數據存儲和基于列的查詢處理來存儲和管理數據。 列存儲索引適合于主要執行大容量加載和只讀查詢的數據倉庫工作負荷…

Django項目部署到阿里云服務器上無法發送郵件STMP

部署好項目之后發送郵件無法發送,多方查閱之后,解決問題。 阿里云服務器禁用了25端口,導致無法發送郵件。 25端口申請開放的難度很大,直接放棄。 解決: 在 django項目的 settings.py文件中x修改port端口 。

美國誠實簽經驗——IMG全球醫療險,TODO

那么,誠實簽最關鍵的4個要點 是什么呢? 第一,證明你有一定的經濟實力。 可能需要房產、存款等證明,也需要銀行信用卡或借記卡半年流水證明(讓人信服的每月進帳和消費能力)。 這些是為了證明,你可…

大數據開發初學者學習路線

目錄前言導讀:第一章:初識Hadoop第二章:更高效的WordCount第三章:把別處的數據搞到Hadoop上第四章:把Hadoop上的數據搞到別處去第五章:快一點吧,我的SQL第六章:一夫多妻制第七章&…

Python的虛擬環境配置(pyenv+virtualenv)

一、為什么需要配置虛擬環境 Python 2和Python 3之間存在著較大的差異,并且,由于各種原因導致了Python 2和Python 3的長期共存。在實際工作過程中,我們可能會同時用到Python 2和Python 3,因此,也需要經常在Python 2和P…

安卓屏幕適配問題

屏幕適配是根據屏幕密度,dpi為單位的,而不是分辨率。 手機會根據不同手機的密度,自己去不同資源目錄下去找對應的資源 比如:   每個圖片目錄下的圖片資源都是一樣的,只是大小不一樣   比如drawable-sw800dp-mdpi目錄&#xff…

MapReduce原理全剖析

MapReduce剖析圖 如上圖所示是MR的運行詳細過程 首先mapTask讀文件是通過InputFormat(內部是調RecordReader()–>read())來一次讀一行,返回K,V值。(默認是TextInputFormat,還可以輸入其他的類型如:音視頻&…

利用selenium webdriver點擊alert提示框

在進行元素定位時常常遇到這樣的alert框: 那么該如何定位并點擊確定或取消按鈕呢?stackoverflow上找到了這個問題的答案。 OK, Show you the code: 1 driver.findElement(By.id("updateButton")).click(); 2 //pop up w…

Log 日志的使用與重要性

開發過程中出現bug是必不可免的,你會怎樣debug?從第1行代碼開始看么?還是有個文件里面記錄著哪里錯了更方便呢!!!log日志 Python中有個logging模塊可以完成相關信息的記錄,在debug時用它往往事…

webdriver 的三種等待方式

1、顯式等待 一個顯式等待是你定義的一段代碼,用于等待某個條件發生然后再繼續執行后續代碼。 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWait #…

Django的核心思想ORM

元類實現ORM 1. ORM是什么 ORM 是 python編程語言后端web框架 Django的核心思想,“Object Relational Mapping”,即對象-關系映射,簡稱ORM。 一個句話理解就是:創建一個實例對象,用創建它的類名當做數據表名&#x…

Secondary Namenode的Check point機制以及Namenode、Datanode工作機制說明

目錄前言:1、NameNode的工作機制2、DataNode的工作機制3、Secondary Namenode的Check point機制 目錄 前言: 在說明checkpoint機制之前,先要了解下namenode、datanode的一些功能和職責。 1、NameNode的工作機制 問題場景: 1…

表單驗證的初步實現和省市級聯

1.表單驗證的初步實現 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html xmlns"http://www.w3.org/1999/xhtml" lang"en"><head><meta http-equiv"Conte…

抓包軟件:Charles

修正&#xff1a;手機不必一定連接電腦分享的熱點&#xff0c;只需要手機和電腦在同一個局域網下就可以了&#xff0c;手機代理IP設置為電腦的IP。 之前寫過一篇通過Wireshark進行抓包&#xff0c;分析網絡連接的文章《通過WireShark抓取iOS聯網數據實例分析》&#xff1a;htt…

Hive的相關介紹

目錄前言&#xff1a;1、Hive簡介2、Hive架構3、Hive與Hadoop的關系4、Hive與傳統數據庫對比5、Hive的數據存儲總結&#xff1a; 目錄 前言&#xff1a; 為什么使用Hive 直接使用hadoop所面臨的問題 人員學習成本太高 項目周期要求太短 MapReduce實現復雜查詢邏輯開發難…

數據結構實驗之排序七:選課名單

數據結構實驗之排序七&#xff1a;選課名單 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 隨著學校規模的擴大&#xff0c;學生人數急劇增加&#xff0c;選課名單的輸出也成為一個繁重的任務&#xff0c;我校目前有在校生3萬多名&#xff0…

Java第五次作業--面向對象高級特性(抽象類和接口)

一、學習要點 認真看書并查閱相關資料&#xff0c;掌握以下內容&#xff1a; 掌握抽象類的設計掌握接口的設計理解簡單工廠設計模式理解抽象類和接口的區別掌握包裝類的應用掌握對象的比較方法和比較器的使用學習使用日期操作類學習匿名內部類的使用二、作業要求 發布一篇隨筆&…

關于國內廠商的國際版殺毒軟件

很多國內軟件公司的殺毒軟件都分為國內版和國際版&#xff0c;這二者有什么區別呢&#xff1f; 首先&#xff0c;這兩個的團隊是不一樣的。國際版的團隊大多收購&#xff0c;國內版為自研。例如百度殺毒的國際版就是原超級巡警的團隊做的&#xff0c;而國內版是自己另起爐灶。…

gulp教程之gulp-minify-css【gulp-clean-css】

原文&#xff1a;http://www.ydcss.com/archives/41 簡介&#xff1a; 使用gulp-minify-css壓縮css文件&#xff0c;減小文件大小&#xff0c;并給引用url添加版本號避免緩存。重要&#xff1a;gulp-minify-css已經被廢棄&#xff0c;請使用gulp-clean-css&#xff0c;用法一致…

大數據面試題總結(附答案)

文章目錄前言hadoop相關試題Hive相關試題Hbase相關試題Storm相關試題Spark相關試題Java基礎試題其他前言 最近由于要準備面試就開始提早看些面試、筆試題。以下是自己總結的一些經常出現、有價值的試題&#xff0c;包含hadoop、hive、hbase、storm、spark等。答案僅供參考&…