1. 程式人生 > >海量資料的常用10大解決方案

海量資料的常用10大解決方案

教你如何迅速秒殺掉:99%的海量資料處理面試題:

https://blog.csdn.net/v_july_v/article/details/7382693

July:海量資料處理:

https://blog.csdn.net/u013074465/article/details/40504281

 

1、布隆過濾器

2、Hash雜湊

3、BitMap: 降低記憶體的使用量。 操作複雜度有所上升的。

    點陣圖

    找出100G的資料中,出現次數為2次的元素  並且給定的記憶體有限

    

要求出出現次數為3次的  怎麼做?

    簡化:

    有一批資料,是從1-10000, 請給我找出不存在的元素  並且給定的記憶體有限

    排序: 計數排序

    存在不存在用1位

            0

            

1

    1次 2次用2位

            00

            01

            10

            

11

    3次 4次 5次 6次 用3位

            000

            001

            010

            011

            100

            101

            110

            111

4、堆

    HDFS

    hbase   布隆過濾器

    es

    kafka

    mysql  的索引: B+樹

5、雙層桶劃分

    

    hive的分割槽:手動建立, 資料不一定是完美的分割槽的

    hive的分桶:經過演算法嚴格校驗

6、資料庫索引

    索引:提高查詢效率的

    B+樹    二分查詢

7、倒排索引

    根據ID 找文件 很容易

    根據身份證編號找人  容易

    根據姓名找人 身份證裡面 

    現在有10本書

        請找出編號為3的書

        1   hadoop權威指南

        2   演算法導論

        3   程式設計珠璣

        .....

        請找出書中有討論hadoop的書

        實現的複雜度很高

        hadoop權威指南  hadoop(233) spark(44)  flink(5)

        演算法導論    HDFS mapreduce hadoop(66)

        程式設計珠璣    java hdfs

        html1       key1  key2  key3 ...

        html2       key2    key4    kye7

        ......

        key1   html1

        key2    html1  html2

        HDFS        程式設計珠璣    演算法導論

        hadoop      hadoop權威指南(233) 演算法導論(66)    abc(20)

        spark       hadoop權威指南

        flink       hadoop權威指南

        mapreduce   演算法導論

        java        程式設計珠璣

        PageRank演算法

    大資料

    從谷歌來的

    hadoop 從三篇論文

    nutch

    lucene

    es

    hbase

    hdfs

    mapreduce

    提高計算和儲存效率

        storm

        mahout

        ambari

        sqoop

        ....

8、外排序

    歸併排序

        兩個效果:

        1、合併

        2、排序

    本質原理:

        把兩個有序陣列 合併一個

        把兩個有序檔案合併成一個檔案

9、Trie樹

    字典樹

10、分散式解決方案:MapReduce或者Spark

    通用解決方案

    求TopN

    求交集

    判斷元素存在不存在

    求元素出現不出現

    求元素出現幾次

    .....

程式:

    資料結構 + 演算法

分散式場景中,最複雜的就是優化