大數據筆記_1

需求1:
1. 有一萬個單詞,需要進行存儲到
2. 任意查找某個單詞,要求時間複雜度爲o(10) ,如何實現?
需求2:
有一個非常大的文本文件(5T),裏面有很多行,只有兩行一樣,他們出現再未知的位置,需要查找他們,使用一臺普通的電腦如何實現?
1. 通過hash算法,將文件散列成n多個小文件(小到內存可以放下),這樣的話相同的行肯定再這個小文件中
2. 然後再讀取每一個文件,放入內存,再進行檢索 
需求3:
有一個1T大小的文件,裏邊存儲的是數字,然後對這些數字全排序
方法1: 根據數值區間分割文件,比如0到100到去a文件,100到200的去b文件,以此類推,分割完成之後,再對 a b c..小文  件排序
方法2: 一次讀取50M的數據,放入內存進行排序,然後放入a文件,再讀取50M的數據放入內存排序,然後放入b文件,
以此類推,這樣的話就得到內部有序,外部無序的多個文件。然後再使用歸併排序算法。
具體的歸併的實現:
比如說獲取了三個內部有序的文件,這三個文件分別取出第一個數,然後比較,把最小的寫入另外一個文件,緊接着讀取剛纔那個最小數值文件的下一個,再進行比較,一次類推,最終得到另外一個有序的文件
對於需求2來說,如果使用多臺機器計算的話,能減少多少時間呢?

總結大數據的結論:
分而治之 並行計算  計算像數據移動   數據本地化讀取   
Hadoop 項目包括 Hadoop Common  , Hadoop Distributed File System , Hadoop Yarn , Hadoop MapReduce

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章