1. 程式人生 > >hadoop put內部呼叫,hdfs寫檔案流程

hadoop put內部呼叫,hdfs寫檔案流程

HDFS是一個分散式檔案系統,在HDFS上寫檔案的過程與我們平時使用的單機檔案系統非常不同,從巨集觀上來看,在HDFS檔案系統上建立並寫一個檔案,流程如下圖(來自《Hadoop:The Definitive Guide》一書)所示:
hdfs-write-flow
具體過程描述如下:

  1. Client呼叫DistributedFileSystem物件的create方法,建立一個檔案輸出流(FSDataOutputStream)物件
  2. 通過DistributedFileSystem物件與Hadoop叢集的NameNode進行一次RPC遠端呼叫,在HDFS的Namespace中建立一個檔案條目(Entry),該條目沒有任何的Block
  3. 通過FSDataOutputStream物件,向DataNode寫入資料,資料首先被寫入FSDataOutputStream物件內部的Buffer中,然後資料被分割成一個個Packet資料包
  4. 以Packet最小單位,基於Socket連線傳送到按特定演算法選擇的HDFS叢集中一組DataNode(正常是3個,可能大於等於1)中的一個節點上,在這組DataNode組成的Pipeline上依次傳輸Packet
  5. 這組DataNode組成的Pipeline反方向上,傳送ack,最終由Pipeline中第一個DataNode節點將Pipeline ack傳送給Client
  6. 完成向檔案寫入資料,Client在檔案輸出流(FSDataOutputStream)物件上呼叫close方法,關閉流
  7. 呼叫DistributedFileSystem物件的complete方法,通知NameNode檔案寫入成功

下面程式碼使用Hadoop的API來實現向HDFS的檔案寫入資料,同樣也包括建立一個檔案和寫資料兩個主要過程,程式碼如下所示:

01 static String[] contents = new String[] {
02 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
03 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
,
04 "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
05 "dddddddddddddddddddddddddddddddd",
06 "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
07 };
08
09 public static void main(String[] args) {
11 Path path = new Path(file);
12 Configuration conf = new Configuration();
13 FileSystem fs = null;

相關推薦

hadoop put內部呼叫hdfs檔案流程

HDFS是一個分散式檔案系統,在HDFS上寫檔案的過程與我們平時使用的單機檔案系統非常不同,從巨集觀上來看,在HDFS檔案系統上建立並寫一個檔案,流程如下圖(來自《Hadoop:The Definitive Guide》一書)所示: 具體過程描述如下:

Hadoop 《一》HDFS 分散式檔案系統

Hadoop-HDFS 儲存模型:位元組 -檔案線性切割成塊(Block):偏移量 offset -block分散儲存在叢集結點中 -單一檔案block大小一致,檔案與檔案可以不一致 -block可以設定副本數,副本無序分散在不同結點中 >副本數不要超過結點數量 -檔案上傳可以

hdfs中namenode及DataNode源資料資訊檔案流程

客戶端呼叫create()來建立檔案 DistributedFileSystem用RPC呼叫元資料節點,在檔案系統的名稱空間中建立一個新的檔案。 元資料節點首先確定檔案原來不存在,並且客戶端有建立檔案的許可權,然後建立新檔案。 DistributedFileSystem返回DFSOutputStream

hadoop之 解析HDFS檔案流程

檔案是如何寫入HDFS的 ? 下面我們來先看看下面的“寫”流程圖:          假如我們有一個檔案test.txt,想要把它放到Hadoop上,執行如下命令: 引用         # hadoop fs  -put  /usr/bigdata/datas

HDFS檔案

1、客戶端通過呼叫DistributedFileSystem的create()方法,建立一個新檔案,DistributedFileSystem通過RPC呼叫,在NameNode的檔案系統名稱空間中建立一個新檔案,此時還沒有相關的DataNode與之相關聯 2、NameNode會通過多種驗證保證

spark執行時載入hivehdfs配置檔案

  以前我用spark連線hive都是把hive的配置檔案放在spark的conf目錄,後來有個專案在執行時才能確定要連線哪個hive源,我就找了個能在執行時載入配置檔案的方法,程式碼如下: import org.apache.hadoop.conf.Configuration i

大資料筆記--hadoop中的hdfs資料流程詳解

上圖是一個簡版的流程圖,圖畫的不標準,但能說明問題就OK,下面是根據上圖描述的寫資料流程,如有不對的地方請指教。 注:以下簡化名稱所對應的全稱: NN == NameNode; IO == hdfsFileoutputStream; DN == DataNod

FileOutputStreamBufferedOutputStreamFileWriter檔案速度比較

package com.test; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.FileWr

大資料筆記 1--hadoop中的hdfs資料流程詳解

上圖是一個簡版的流程圖,圖畫的不標準,但能說明問題就OK,下面是根據上圖描述的寫資料流程,如有不對的地方請指教。 注:以下簡化名稱所對應的全稱: NN == NameNode; IO == hdfsFileoutputStream; DN == DataNode; DN1 == Dat

大資料預處理檔案為每一行資料增加一個標識ID(JAVA)

對包含多行資料的資料集進行預處理,讀入文字檔案資料集,為每一條記錄增加一個唯一的ID,並儲存成一個新的文字檔案。其中每行的ID生成規則為:每一條記錄對應生成0-33隨機數,每個數對應一個特定省份,最後原始記錄和新生成的省份標籤一起寫入新的文字檔案中。Shell終端執行語句#!

hadoop檔案流程分析

1.主要概念 1.1 NameNode(NN): HDFS系統核心元件,負責分散式檔案系統的名字空間管理、INode表的檔案對映管理。如果不開啟備份/故障恢復/Federation模式,一般的HDFS系統就只有1個NameNode,當然這樣是存在單點故障隱患

HDFS檔案過程

客戶端呼叫create()來建立檔案DistributedFileSystem用RPC呼叫元資料節點,在檔案系統的名稱空間中建立一個新的檔案。元資料節點首先確定檔案原來不存在,並且客戶端有建立檔案的許可權,然後建立新檔案。DistributedFileSystem返回DFSOutputStream,客戶端用於

在Action中獲取檔案的路徑檔案

ActionContext ac = ActionContext.getContext();  ServletContext sc = (ServletContext) ac.get(ServletA

HDFS檔案流程詳解

1.HDFS寫流程:    客戶端要向HDFS寫資料,首先要跟名稱節點通訊以確認可以寫檔案並獲得接收檔案塊的資料節點,然後,客戶端按順序將檔案逐個塊傳遞給相應資料節點,並由接收到塊的資料節點負責向其他資料節點複製塊的副本    如圖:寫詳細步驟:    1、根namenode

android不用xml檔案動態Animation,注:Animation並不會真正移動控制元件需要呼叫onAnimationEnd

android不用xml檔案,動態寫Animation // 移動animation public static void Translate(View view, float fromX, float toX, float fromY,    float toY, l

java hadoop hdfs檔案

專案中會用到往hdfs 上寫檔案  ,為下面kafka 往hdfs 上寫檔案做基礎。 例項如下: 1、配置檔案:com/xiefg/config/system.properties    #以下是安裝 hadoop 配置檔案的路徑 core.path=/opt/cloud

perl 呼叫 shell 檔案 防止出問題最好絕對路徑

perl 指令碼:                                          print ">>>>>>>>-into shell->>>>>>>>\n

一個python邏輯計算一個檔案中的大寫字母數量

    import os os.chdir(r'C:\Users\Administrator\Desktop')#os.chdir切換到指定目錄 with open('a.txt') as today: count=0 for i in today.re

js省略物件名完一個屬性直接另一個 . 屬性名這種語法糖叫 鏈式呼叫

正常寫法的程式碼(chart.lbl重複多次): chart.lbl = chart.renderer.label('You selected ' + selectedPoints.length + ' points', 100, 60); chart.lbl.attr({ paddin

hadoop[4]-hdfs分散式檔案系統的基本工作機制

一、Namenode 和 Datanode HDFS採用master/slave架構。一個HDFS叢集是由一個Namenode和一定數目的Datanodes組成。Namenode是一箇中心伺服器,負責管理檔案系統的名字空間(namespace)以及客戶端對檔案的訪問。叢集中的Datanode一般是一個節點一