海量資料的常用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
求交集
判斷元素存在不存在
求元素出現不出現
求元素出現幾次
.....
程式:
資料結構 + 演算法
分散式場景中,最複雜的就是優化