1. 程式人生 > >HDFS檔案讀取和寫入

HDFS檔案讀取和寫入



讀取檔案:
一:讀取方式一


寫入哪個DataNode是不確定的,主要尋找讀取速度較快的DataNode;
怎麼找到這種DataNode,從以下幾個方面:是否有本機位置,本機架位置,本機房位置;
依次重試讀取檔案,直到讀取檔案成功;
二:讀取方式二:backUpRead

每次讀取時,client會並行試著讀取兩個或三個DataNode,接受讀取成功資訊後,會通知其他魏都區的DataNode結束讀取。

寫入資料:
一:鏈式寫入:


連式出現錯誤:假如DataNode2出現網路問題。
解決方法:(1)直接跳過DataNode2的寫入,也就是寫入兩臺機器,比預設數量少一,帶來了資料安全的問題;
(2)seal and New方式:DataNode1向2寫入時,發現故障,會通過client向NameNode回執錯誤資訊;然後從新分配寫入的DataNode,假設選中了DataNode4,然後向1,3,4練市寫入資料。
二:主從模式:


客戶端或者系統出現故障時,可能會引起資料的丟失。這就需要一直模式保障資料的完整性。
方法一例如:
Path p = new Path("p");
OutputStream out = fs.create(p);
out.write("content".getBytes("UTF-8"));
out.flush();
out.sync();
out.flush():
當寫入的資料超過一個塊後,對新的資料塊就可以進行讀操作。但正在寫入的資料塊對外不可見,也就是不能進行讀操作。
out.sync():對於已經寫入的資料可讀。無論資料塊有沒有被寫滿。
但這兩個方法會對資料的吞吐量有所影響,所以用時要在魯棒性和吞吐量做出權衡。

具體的讀寫步驟詳細說明可以參考hadoop權威指南。

相關推薦

HDFS檔案讀取寫入

 讀取檔案: 一:讀取方式一 寫入哪個DataNode是不確定的,主要尋找讀取速度較快的DataNode; 怎麼找到這種DataNode,從以下幾個方面:是否有本機位置,本機架位置,本機房位置; 依次重試讀取檔案,直到讀取檔案成功; 二:讀取方式二:back

Unity Excel 檔案讀取寫入

但是在使用的過程中還是碰到了不少的問題,在這裡總結一下,希望能對看到此處的朋友一個幫助。 1.Excel的讀取 Excel檔案 需要新增的名稱空間 using Excel; 讀取方法 using UnityEngine; using Excel;

python環境管理器使用(程式介紹),檔案讀取寫入

#本程式示意自定義的類作為環境管理器使用 class FileWrite:     def __init__(self,filename):         self.filename = filename  

Verilog十大基本功2(testbench的設計 檔案讀取寫入操作 原始碼)

需求說明:Verilog設計基礎 內容       :testbench的設計 讀取檔案 寫入檔案 來自       :時間的詩 十大基本功之 testbench 1. 激勵的產生 對於 testbench 而言,埠應當和被測試的 module 一一對應。 埠分

SSIS遍歷xls檔案讀取寫入資料

根據業務部門提供的資料,連線業務資料庫查詢資料,並根據業務資料庫處理的資料寫入xls表。 1、開啟 Microsoft Visual Studio 2008,檔案-新建專案-新建一個“Integration Services 專案”,重新命名為:SSIS_xls。 2

C++中Txt檔案讀取寫入

一、ASCII 輸出 為了使用下面的方法, 你必須包含標頭檔案<fstream.h>(譯者注:在標準C++中,已經使用<fstream>取代< fstream.h>,所有的C++標準標頭檔案都是無後綴的。)。這是 <iostrea

Java FileInputStream/FileOutputStream的應用 檔案讀取寫入

這是一對繼承於InputStream和OutputStream的類,用於本地檔案讀寫(二進位制格式讀寫並且是順序讀寫,讀和寫要分別創建出不同的檔案流物件); 本地檔案讀寫程式設計的基本過程為: ①  生成檔案流物件(對檔案讀操作時應該為FileInputStream類,而

C++之讀取寫入檔案

C++之讀取和寫入檔案 在C++中使用std::ifstream來讀取檔案, 使用std::ofstream來寫入檔案,比如txt, yaml等檔案。 讀取檔案 #include <string> #include <fstream> std::string file_name

c++檔案讀取寫入

ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體,其實所謂的流緩衝就是記憶體空間 在C++中,有一個stream這個類,所有的I/O都以這個“流”類為基礎的,包括我們要認識的檔案I/O. stream這個類有兩個重要的運算子: 1、插入器(<<)

python讀取寫入csv檔案

----------------python讀取csv檔案------------------ #匯入csv 建立一個csv檔案,輸入內容 import csv    #1.找到需要被開啟的檔案路徑,通過open開啟檔案,宣告開啟的方式,宣告編碼格式 csv_file=open(

檔案讀取檔案寫入中需要注意的一些小知識

1,   is_file()函式:用來判斷 是否是為檔案或者是否存在該檔案 is_dir()函式:用來判斷 是否為目錄(資料夾)或者是夠存在該目錄 file_exists(檔案路徑):作用是判斷對應的路徑下 是否存在對應的檔案 它們的區別是如果已經存在該檔案或者資料夾,

Python中檔案讀取寫入

從檔案中讀取資料 讀取整個檔案 這裡假設在當前目錄下有一個檔名為’pi_digits.txt’的文字檔案,裡面的資料如下: 3.1415926535 8979323846 2643383279 with open('pi_digits.txt') a

Python讀取寫入Excel檔案

製作Excel表 常用方法說明 Workbook類 Workbook類建立一個XlswWrite的Workbook物件,相當於建立一個excel表 And_worksheet()用來建立工作表,預設為sheet1 Add_format():建立一個新的格式物件來格式化單元格,例如bold=

Spark1.x2.x如何讀取寫入csv檔案

看很多資料,很少有講怎麼去操作讀寫csv檔案的,我也查了一些。很多部落格都是很老的方法,還有好多轉來轉去的,複製貼上都不能看。下面我在這裡歸納一下,以免以後用到時再費時間去查 通過sc.textFile val input = sc.textFile("test.csv") val result = i

DOM物件對xml檔案讀取寫入

解析的XML檔案對應的java類 package com.nm; public class Employee { private String eid; private String name; private String g

Android 檔案讀取寫入

(1)openFileInput和openFileOutput的使用 檔案的使用,注意最後要用finally給關閉掉。 openFileOutput:(寫入檔案,如果沒有檔名可以建立,這裡不需要判斷是否有這個檔案)---> FileOutputStre

Python3 讀取寫入excel xlsx檔案 使用openpyxl

python處理excel已經有大量包,主流代表有:•xlwings:簡單強大,可替代VBA•openpyxl:簡單易用,功能廣泛•pandas:使用需要結合其他庫,資料處理是pandas立身之本•win32com:不僅僅是excel,可以處理office;不過它相當於是 w

Java 使用檔案流來讀取檔案內容寫入內容到一個檔案

讀取檔案內容:FileInputStream、FileReader 寫入內容到檔案:FileOutputStream、FileWriter ex: /** * 使用檔案流來讀取檔案內容和寫入內

用python 讀取寫入CSV格式的檔案

This Python 3 tutorial covers how to read CSV data in from a file and then use it in Python. For this, we use the csv module. CSV literal

python 檔案讀取寫入

#檔案讀取 with open(當前目錄檔名或指定目錄檔案) as file_object:#contents = file_object.read() #讀取檔案返回整個檔案lines = file_object.readlines()#讀取檔案返回檔案行列表for li