hadoop学习--搜索引擎面临的数据和计算难题
一、大量网页怎么存储
亿万级;没有硬盘,存储在内存中,加快检索的速度;冗余的办法储存,将数据写入多个节点中。
二、搜索算法
搜索响应速度,毫秒级响应;——倒排索引
三、page-rank 计算问题
网页排名,优先推荐的问题;——
倒排索引
先分词——建立索引——建立倒排列表
page-rank 算法
4被指向的最多,被page-rank高的指向,权重不同
1:没有指向它的连接
0 0 0 0
2:1有1/3的权重直到自己,4有100%的权重指向自己
1/3 0 0 1
3:以此类推
S指矩阵,α靠经验指定0-1之间,n指网页数,这里就是4,U指全为1的矩阵
找出一个q使得q=G*q;
特征向量q里第一个就是页面1的page-rank值。
收敛函数:不断迭代,当小于我们设置的阈值时,可取近似值。
但是网页上亿,实现不了这个矩阵算法。
多台计算机,分布式计算
网页存储在多个不同的服务器节点上,每个节点上的网页都是矩阵里的若干个列,算出这个列的特征向量,往后加和,汇总到一个节点上,得到一个向量,这是第一次迭代出来的结果,一直循环迭代,直到在阈值范围内,就算出了所有网页的page-rank
汇总的过程叫reduce 再将得到的q分配叫map。
总结:
GFS —— Gogle file system 把网页分散在各个节点,并提供冗余
map-reduce —— 把巨大的不容易计算的,分散到各个节点,再汇总
Bigtable —— 所有的数据不用再分table,全部放在一张大表里(如Hbase)