大資料學習

2021-12-30 03:41:08 字數 2207 閱讀 4031

hadoop的hdfs和mapreduce子框架主要是針對大資料檔案來設計的,在小檔案的處理上不但效率低下,而且十分消耗記憶體資源(每乙個小檔案占用乙個block,每乙個block的元資料都儲存在namenode的記憶體裡)。解決辦法通常是選擇乙個容器,將這些小檔案組織起來統一儲存。hdfs提供了兩種型別的容器,分別是sequencefile和mapfile。

a.sequence file由一系列的二進位制key/value組成,如果key為小檔名,value為檔案內容,則可以將大批小檔案合併成乙個大檔案。hadoop-0.21.0版本開始中提供了sequencefile,包括writer,reader和sequencefilesorter類進行寫,讀和排序操作。該方案對於小檔案的訪問都比較自由,不限制使用者和檔案的多少,支援append追加寫入,支援**文件壓縮(不壓縮、檔案級、塊級別)。其儲存結構如下圖所示:

b.前三個位元組是乙個bytes seq代表著版本號,同時header也包括key的名稱,value class , 壓縮細節,metadata,以及sync markers。sync markers的作用在於可以讀取任意位置的資料。

在recourds中,又分為是否壓縮格式。當沒有被壓縮時,key與value使用serialization序列化寫入sequencefile。當選擇壓縮格式時,record的壓縮格式與沒有壓縮其實不盡相同,除了value的bytes被壓縮,key是不被壓縮的。當儲存的記錄很多時候,可以把一串記錄組織到一起同一壓縮成一塊。

在block中,它使所有的資訊進行壓縮,壓縮的最小大小由配置檔案中,io.seqfile.compress.blocksize配置項決定。

c.寫入策略

sequencefile寫操作

通過createwrite建立sequencefile物件,返回write例項,指定待寫入的資料流如fsdataoutputstream或filesystem物件和path物件。還需指定configuration物件和鍵值型別(都需要能序列化)。

sequencefile通過api來完成新記錄的新增操作

filewriter.append(key,value);

d.實現**

private static void writetest(filesystem fs, int count, int seed, path file,

compressiontype compressiontype, compressioncodec codec)

throws ioexception

writer.close();

}public class sequencefilewritedemo ;

public static void main(string args) throws ioexception }

finally

} }a.乙個mapfile可以通過sequencefile的位址,進行分類查詢的格式。使用這個格式的優點在於,首先會將sequencefile中的位址都加載入記憶體,並且進行了key值排序,從而提供更快的資料查詢。

與sequencefile只生成乙個檔案不同,mapfile生成乙個資料夾。

索引模型按128個鍵建立的,可以通過io.map.index.interval來修改

b.讀寫策略

排序後的sequenecefile,並且它會額外生成乙個索引檔案提供按鍵的查詢.讀寫mapfile與讀寫sequencefile

非常類似,只需要換成mapfile.reader和mapfile.writer就可以了。

在命令列顯示mapfile的檔案內容同樣要用 -text

c.實現**

public class mapfilewritefile

;public static void main(string args)

finally }}

}mapfile會生成2個檔案 1個名data,1個名index

檢視前10條data+index $ hdfs –fs –text /number.map/data | head

public class mapfilereadfile

reader.get(new intwritable(7),value);

system.out.printf("%s\n",value);

}finally

}}

大資料學習

1.資料清洗 洗掉髒資料,對資料最後一步審核和糾正,包括一致性檢查,無效資料,不完整資料,衝突資料,重複資料等的處理,計算機自動完成。2.資料傾斜 資料傾斜就是我們在計算資料的時候,資料的分散度不夠,導致大量的資料集中到了一台或者幾台機器上計算,這些資料的計算速度遠遠低於平均計算速度,導致整個計算過...

大資料如何學習 cda認證 大資料學習之學習要求

眾所周知,大資料是現在非常火的行業,前景也是非常的不錯,大資料要處理的資料成千上萬,資料的處理方法也需要不斷地與時俱進。就現如今的發展趨勢而言,大資料技術的發展如火如荼。在各個領域都得到了廣泛的應用,而且就其目前的發展情況來看,大資料技術具有十分良好的發展前景。正因為這樣,很多人想要學習大資料,對於...

大資料學習筆記 1 1 了解大資料

三 bigtable 大表 nosql資料庫 hbase 首先引入兩個個大資料應用場景 從以上兩個例子可以引出大資料的兩個核心問題 資料的儲存 分布式的檔案系統 hdfs hadoop distributed file system 資料的計算 資料的計算 不是演算法 分布式的計算 mapreduc...