对于分布式系统这样一个复杂领域,首先要清楚其概念,才能从总体角度有个把握,才好深入
去不断了解。
google搜索引擎需要对海量数据进行离线实时计算,海量数据单机已经无法进行存储、计算。
单机不行那就用多台PC构成分布式来应对海量存储、海量计算,想法厉害结果人还实现了。
应对海量数据存储,海量数据计算,开发了海量分布式文件系统GFS,分布式数据库BigTable
,分布式计算程序MapReduce,分布式协调程序Chubby。
Google在03至06年发表了著名的三大论文——GFS、BigTable、MapReduce,用来实现一个
大规模的管理计算系统。确实远远领先于业界,真黑科技,三篇论文值得反复看。
开源界根据google论文实现了,分布式文件系统HDFS对应GFS,分布式数据库HBase对应BigTable,
分布式计算程序MapReduce对应MapReduce,分布式协调程序Zookeeper对应Chubby。对于这些
详细架构设计、实现网上解读很多,可以去搜索学习。
HDFS本身目的是为了分布式存储文件,理解他的话可以把它想象为Ext、NTFS等本地文件系统
,有读、写,删除等操作,实际工程中可以从本地文件系统拷贝进HDFS,可以读取数据库写进HDFS
,可以接收消息队列数据写进HDFS。
为了方便不会编程人员使用分析数据,又搞出了Hive通过sql方式访问使用数据,但底层还是HDFS、
MapReduce。
排序是互联网程序很重要用途,搜索引擎是将质量最高文档排在前,个性化推荐系统是将与用户
最相关内容排在最前,MapReduce最早就是Google根据PageRank等多个因素得出文章质量排序。学
大数据第一个程序一般就是WordCount,WordCount本身就是计算文本出现次数,根据次数排序。
研究Hadoop不能止于WordCount,要找个实际问题,例如:知乎粉丝最高的是谁?博客园粉丝
最多是谁?分数最高是谁?这些用单机计算都是很难得,首先抓取知乎、CSDN数据,将数据写入HDFS
,写MapReduce程序统计用户粉丝数,按粉丝数、分数排序,将结果写入文件,就可以得出粉丝最多
是谁,分数最高是谁了。
大数据学习可以通过一些实际问题,将这些工具用起来,总是看或者只运行下WordCount的话学习
还是会慢的。每天跟搞大数据的打交道,还是要深入了解下,不然总提些很难或不能实现需求还是挺尴
尬的。
微信搜索:debugme123
扫描二维码关注: