大數據小白系列——HDFS(1)

【注1:結尾有大福利!】

【注2:想寫一個大數據小白系列,介紹大數據生態系統中的主要成員,理解其原理,明白其用途,萬一有用呢,對不對。】

??

大數據是什么?拋開那些高大上但籠統的說法,其實大數據說的是兩件事:一、怎么存儲大數據,二、怎么計算大數據。

我們先從存儲開始說,如果清晨起床,你的女仆給你呈上一塊牛排,牛排太大,一口吃不了,怎么辦?拿刀切小。

同樣的,如果一份數據太大,一臺機器存不了,怎么辦?切小了,存到幾臺機器上。

想要保存海量數據,無限地提高單臺機器的存儲能力顯然是不現實,就好比我們不能把一棟樓蓋得無限高一樣(通常這也不是經濟的做法),增加機器數量是相對可持續的方案。

使用多臺機器,需要有配套的分布式存儲系統把這些機器組織成一個整體,由于Hadoop幾乎是目前大數據領域的事實標準,那么這里介紹的分布式存儲系統就是HDFS(Hadoop Distributed Filesystem)。

先來介紹幾個重要概念。

  • 分片(shard)

就好比把牛排切成小塊,對大的文件進行切分,顯然是進行分布式存儲的前提,例如,HDFS中默認將數據切分成128MB的塊(block)。

?

  • ?副本(replica)

三臺機器中,如果有一臺出現故障,如何保證數據不丟失,那么就是使用冗余的方式,為每一個數據塊都產生多個副本。

下面圖示中,任何單獨一個節點掉線,都不會造成數據丟失,仍然可以湊齊A、B、C三個數據塊。

當然,如果兩個節點同時掉線就不行了。

不過,如果每個數據塊都有兩個副本,那么可以承受同時損失兩個節點。代價是,你的存儲成本上升了。

  • Master/Slave架構

只有工人而沒有包工頭的工地肯定不能正常運轉,所以,除了上面3臺負責存儲的機器,還需要至少一臺機器來領導它們,給它們分配工作,否則誰也沒辦法中的A、B、C具體應該存在哪個機器上。

HDFS中采用Master/Slave架構,其中的NameNode就是Master,負責管理工作,而DataNode就是Slave,負責存儲具體的數據,NameNode上管理著元數據,簡單的講就是記錄哪個數據塊存儲在哪臺機器上。同時,DataNode也會定時向NameNode匯報自己的工作狀態,以便后者監控節點狀態、是否故障。

?

說完上面幾個我覺得需要了解的基礎概念,我們再把HDFS的讀、寫流程描述一下。

  • 讀取數據

讀取數據的過程。在這個過程中,NameNode負責提供數據的存儲位置,真正的數據讀取操作發生在用戶和DataNode之間。由于數據有副本,一份數據在多個節點上存在,具體NameNode返回哪個節點,遵循一定的原則(比如,就近原則)。

  • 寫入數據

寫入數據的過程。和讀取流程類似,NameNode負責提供數據的存儲位置,真正的寫入操作發生在用戶和DataNode之間,而副本的制造,是在DataNode之間發生的,例如用戶先把數據寫入節點1,節點1再把數據復制到節點2等。

?

這篇文章就先到這里,下一篇準備接受HDFS中的單點問題、HA、Federation等概念。

?

最后,福利來了,關注公眾號“程序員雜書館”,將免費送出大數據經典書籍《Spark快速大數據分析》,沒錯,就是下面這本,紙質書哦,不是什么亂七八糟的其他書哦!還猶豫什么,抓緊掃碼關注吧。“程序員雜書館”以后將每周為大家帶來經典書籍資料、原創干貨分享,謝謝大家。

需要書的同學請直接在公眾號留言哈,如果不想要紙質書的也可以說明,我會選擇一些PDF數據贈送,謝謝大家。

轉載于:https://www.cnblogs.com/morvenhuang/p/10092144.html

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

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

相關文章

PHP檢測遠端文件是否存在

簡單解釋一下上面的代碼。get_headers的作用就是訪問一個遠程地址,把服務器發送的HTTP頭以數組形式返回。而$header[0]則是服務器返回的狀態碼(如果不出意外的話狀態碼應該都是第一個返回的)。 要確定一個文件在遠端服務器上存在&#xff0c…

C#中使用DTS來導入數據及相關問題

向Sql 中導入Excel數據時,使用MS SQL的DTS功能 可以很方便的導入,同時引用Dll文件,可以在程序中對導入過程進行控制。 創建DTS包的過程如下: 1。在SQL企業管理器中,工具菜…

html select選擇事件_一道搜狗面試題:IO多路復用中select、poll、epoll之間的區別...

(1)select>時間復雜度O(n)它僅僅知道了,有I/O事件發生了,卻并不知道是哪那幾個流(可能有一個,多個,甚至全部),我們只能無差別輪詢所有流,找出能讀出數據,或者寫入數據的流,對他們…

【MySQL】redo log --- 刷入磁盤過程

1、redo log基本概念 redo log的相關概念這里就不再過多闡述,網上有非常多的好的資料,可以看下縹緲大神的文章:https://www.cnblogs.com/cuisi/p/6525077.html,個人感覺介紹的非常詳細。 2、數據更改過程簡述 MySQL 在更新數據的時…

WPF DataGrid根據內容設置行顏色

轉: https://code.4noobz.net/wpf-change-color-of-a-row-in-a-datagrid-depending-on-the-value/ 轉載于:https://www.cnblogs.com/Mindy-hym/p/11475024.html

QQ web api

QQ的很多功能和信息可以通過web方式獲得~以下鏈接,星號應換成你要查詢的QQ號一、Activities Previewhttp://labs.qq.com/ie8/preview/?uin******二、QQ空間訪問次數查詢(需權限)http://g.qzone.qq.com/fcg-bin/cgi_emotion_list.…

delphi tclientsocket接收不到返回數據_RS—485中教你主站發送報文結構、從站返回報文結構?系列11...

作者:馬樂1.主站發送報文結構大家可以看到我之前寫的文章中的程序都是沒有什么具體功能的,都是兩個站點之間互相傳遞數據,這些數據我們只是看看是否可以正常接收發送,數據本身是沒有任何含義的。很明顯在實際使用過程中我們是不會…

MybatisPlus 通用枚舉無法正確取值

正常使用mybatisplus <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.4</version></dependency> 使用后發現項目中原先對枚舉值的轉換存在異常&#xff1a; ER…

零基礎學習 Python 之條件語句

寫在之前 我們寫程序&#xff0c;就好比學生時代寫作文一樣&#xff0c;由 “字” 到 “詞” 到 “句” 最后到 “文章” 。此前我們學會了一些詞語&#xff08;對象類型&#xff09;&#xff0c;我們接下來就是學如何造句&#xff0c;而在編程語言里&#xff0c;句子被叫做語句…

python input 文件名_Python播放音頻與錄音

這一講主要介紹些音頻基本處理方式&#xff0c;為接下來的語音識別打基礎。三種播放音頻的方式使用 python 播放音頻有以下幾種方式&#xff1a;os.system()os.system(file) 調用系統應用來打開文件&#xff0c;file 可為圖片或者音頻文件。缺點&#xff1a;要打開具體的應用&a…

jQuery選擇器和方法的等價關系

層級選擇器 1、ancestor descendant &#xff08;后代選擇器&#xff09; 在給定的祖先元素下匹配所有的后代元素 $(“form input”) $(.div span)選取<div>里的所有的<span>元素 2、parent child &#xff08;子選擇器&#xff09;在給定的父元素下匹配所有…

ActionScript 3.0 Step By Step系列(四):來自面向對象開發之前的吶喊:“學會寫可重用的代碼”...

增強代碼的可重用能力&#xff0c;從創建可重用的代碼開始&#xff0c;可重用的代碼則是通過從現有代碼中重構加以封裝,使其成為功能單一的可復用代碼塊。這句話籠統點說便是“封裝”或“抽象”。 在實際的編程開發中&#xff0c;要實現代碼重用&#xff0c;而不是每次都去Copy…

express利用nodemailer發送郵件(163郵箱)

Nodemailer 是一個簡單易用的Node.js郵件發送組件 首先安裝這個組件 npm install nodemailer --save安裝之后&#xff0c;可以在某個get請求下&#xff0c;發送郵件&#xff0c;具體路由代碼&#xff1a; const express require("express"); const nodemailer requ…

使用 Solid 私有化存儲 IPFS 文件哈希值

背景 星際文件系統 IPFS&#xff08;InterPlanetary File System&#xff09;是一個面向全球的、點對點的分布式文件系統&#xff0c;目標是為了補充&#xff08;甚至是取代&#xff09;目前統治互聯網的超文本傳輸協議&#xff08;HTTP&#xff09;&#xff0c;將所有具有相同…

使用window.postMessage實現跨域通信

JavaScript由于同源策略的限制,跨域通信一直是棘手的問題。當然解決方案也有很多&#xff1a; document.domainiframe的設置&#xff0c;應用于主域相同而子域不同&#xff1b;利用iframe和location.hash&#xff0c;數據直接暴露在了url中&#xff0c;數據容量和類型都有限Fla…

appium啟動app失敗_Appium-Desktop Capability 配置及啟動App演示

Appium-Desktop Capability配置介紹desired capability的功能是配置Appium會話。為什么要配置capability&#xff0c;目的就是為了告訴Appium服務器您想要自動化的平臺和應用程序。Desired Capabilities是一組設置的鍵值對的集合&#xff0c;其中鍵對應設置的名稱&#xff0c;而…

WinRAR 命令行簡體中文說明

從命令行也可以運行 WinRAR 命令&#xff0c;常規的命令行語法描述如下:WinRAR - -命令 要 WinRAR 運行的字符組合代表功能。開關 切換操作指定類型&#xff0c;壓縮強度&#xff0c;壓縮文件類型&#xff0c;等等的定義。壓縮文件 要處理的壓縮文件名。文件 要處理的文件名。列…

以Windows服務方式運行.NET Core程序

原文:以Windows服務方式運行.NET Core程序在之前一篇博客《以Windows服務方式運行ASP.NET Core程序》中我講述了如何把ASP.NET Core程序作為Windows服務運行的方法&#xff0c;而今&#xff0c;我們又遇到了新的問題&#xff0c;那就是&#xff1a;我們的控制臺程序&#xff0c…

SparkSession.read().csv()無法定位本地文件的問題

原因是spark有兩個文件頭 [file://]代表本地 [hdfs://]代表hdfs路徑 如果路徑沒有文件頭&#xff0c;spark會將該路徑默認添加上"hdfs://" 所以如果要訪問本地csv文件&#xff0c;需要確保路徑前面有"file://" //java代碼&#xff0c;告訴spark這是本地文件…

JavaScript的10種跨域共享的方法

在客戶端編程語言中&#xff0c;如javascript和ActionScript&#xff0c;同源策略是一個很重要的安全理念&#xff0c;它在保證數據的安全性方面有著重要的意義。同源策略規定跨域之間的腳本是隔離的&#xff0c;一個域的腳本不能訪問和操作另外一個域的絕大部分屬性和方法。那…