原创 Hadoop-0.20.0源代碼分析(04)

前面,分析了org.apache.hadoop.fs.Filesystem抽象類,我們已經瞭解到,要實現一個最基本的文件系統都需要包含哪些要點。下面具體到某個實現Filesystem的具體實現類,基於該抽象類Filesystem派生的

原创 Hadoop-0.20.0源代碼分析(07)

前面分析了與操作系統有關的Shell命令,它們用於與操作系統進行命令行方式的交互。在Hadoop中,自定義了FileSystem文件系統,這是基於Unix操作系統之上的文件系統,爲了方便對FileSystem的管理,通過org.ap

原创 Hadoop-0.20.0源代碼分析(01)

Hadoop 框架是兩個模型實現的有機整合,亦即Hadoop分佈式文件系統(HDFS)與MapReduce並行編程模型,也就是說,Hadoop框架要能夠提供的基本功能就是,在存儲系統HDFS上進行MapReduce並行計算,所

原创 Hadoop-0.20.0源代碼分析(02)

UserGroupInformation類定義了一個與文件系統相關的用戶和組信息抽象的內容,Hadoop框架實現了一個基於Unix系統的用戶和組信息的實現類UnixUserGroupInformation,該類繼承自UserGrou

原创 kfs代碼研究(磁盤異步IO)

磁盤IO在[qcdio/qcdiskqueue.h]和[qcdio/qcdiskqueue.cc]中實現,基於線程池和消費者/生產者模型。在這兩個源文件中實現了基於成塊讀寫的異步磁盤IO。 [qcdio/qcdiskqueue.cpp

原创 Hadoop-0.20.0源代碼分析(03)

在Hadoop框架源代碼org.apache.hadoop.fs包中,都是關於Hadoop文件系統實現的相關類,主要包括文件系統模型的建立,及其在該文件系統定義、實現基本的文件操作。例如給出文件系統抽象,對文件系統上存儲的文件執行基本

原创 Hadoop-0.20.0源代碼分析(11)

這裏分析一下IPC模型中的Server端的實現。該Server類的實現有點複雜,而且涉及到網絡中字節流緩衝區的操作問題,及其字節數據的反序列化。 Server類 該Server是服務端的抽象實現,定義了一個抽象的IPC服務。 

原创 Hadoop-0.20.0源代碼分析(08)

這裏,繼續對FsShell類中一些命令進行閱讀分析,主要是看與拷貝文件有關的幾個命令。 cp命令 該命令實現對文件的拷貝操作,並且支持在不同的文件系統之間進行文件的拷貝。拷貝文件涉及的操作比較複雜,核心拷貝操作還是調用了org

原创 Hadoop-0.20.0源代碼分析(10)

DFSClient是分佈式文件系統客戶端,它能夠連接到Hadoop文件系統執行指定任務,那麼它要與Namenode與Datanode基於一定的協議來進行通信。這個通信過程中,涉及到不同進程之間的通信。在org.apache.hado

原创 Hadoop-0.20.0源代碼分析(06)

在閱讀Hadoop源代碼過程中,在org.apache.hadoop.security.UnixUserGroupInformation類中,需要獲取到Unix系統的用戶名和所屬組的信息,就需要通過執行Shell命令得到相應的結果,這

原创 Hadoop-0.20.0源代碼分析(05)

以文件流作爲一個切面,閱讀Hadoop源代碼org.apache.hadoop.fs包中源代碼。關於流,分爲輸入流和輸出流兩種,下面也這樣簡單劃分爲兩類進行閱讀分析。 輸入流類 與輸入流相關的接口和類的繼承層次關係如下所示:

原创 Hadoop-0.20.0源代碼分析(09)

通過前面,對Hadoop的org.apache.hadoop.fs包中內容進行分析,已經基本瞭解到,一個文件系統應該具備哪些基本要素和基本操作。最顯著的一個特點就是,FileSystem文件系統是基於流式數據訪問的,並且,可以基於命

原创 智力型程序題

下面是一個C程序,其想要輸出20個減號,不過,粗心的程序員把代碼寫錯了,你需要把下面的代碼修改正確,不過,你只能增加或是修改其中的一個字符,請你給出三種答案。 int n=20; for(int i=0; i<n; i--){     p

原创 面試題(1)

t func(x) { int countx = 0; while (x) { countx ++; x = x&(x -1); } return co

原创 STL相關知識點(1)

1、類別(type)可作爲template參數,非類別(nontype)也可以作爲template參數。 2、允許缺省模板參數 template <class T, class container = vector<T> > te