代码改变世界

我看分布式--hadoop的了解

  沐海  阅读(1095)  评论(0编辑  收藏  举报

1.首先来谈谈分布式,分布式就必然有整合搜索。搜索分两部分。一是分布,二是搜索,分布-分为,本机磁盘文件分布和查询,和,网络集群文件分布和查询。搜索在分布式上就是
基于网络集群的搜索和整合以及算法优化。这样淘宝他们更需要自己的系统LINUX。自己的文件分布程序(可分布式的)Hadoop(淘宝版HDFS)。和自己的搜索引擎程序(Lucene或Nutch)
Nutch本来了Hadoop就是兄弟。相互支持的。


HDFS(对于本文)的上一层是 MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。

有人数Nutch比Heritrix好使用。更坚定了我的信心。

有人说Hadoop的MapReduce 支持的NOSQL比数据库原理退步60年。但是Oracle和淘宝,facebook,yahoo等大公司对还使用证明。我学习绝对没坏处。而且Hadoop是我目前所能找到的自己
最应该走的路。没有最好的了。


Lucene、Compass、Nutch、hadoop、Heritrix、solr  学这些东西有没有什么先后顺序?
以上要么是搜索引擎,要么是支持搜索引擎的分布式系统。对我来说。我Lucene、的学习要放在理解Linux和Hadoop才应该去看。现在过早去想。无济于事。


所以说。不论是Linux的学习。还是分布式的学习。都结合在了Hadoop这条最优的道路上。你仔细想想,不搞应用开发(需要某一行业的专业研究)就搞核心(算法)还能搞
WEB程序和游戏应用以及手机应用(可是不是特别适合长期的考虑。)所以只有分布式。20年的大潮来了。能不能跟上决定你的一生。加油吧哥们。

 

基于实际来看。你的首要任务还是学习好WEB程序和游戏应用以及手机应用。 这样保证你不论怎样是走在前端。然后考研搞搞算法。弄好算法基础。
这样有了这些经验,更好走你的分布式开发之路。


长远目前已经订了。就看看你自己够不够努力吧。

 


还有根据今天得到的Oracle公司对于java的未来10年的转型,说实话。我很幸运有java基础。而且明智的改行C#了。不过两者都不要放弃。各方面都有特色。
而且只有学到本质才有用。像你现在没有用的。加油吧。


众所周知,Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。Nutch与Hadoop本是同门师兄,从0.X版本开始,为了解决Nutch的海量数据爬取和存储的需要,Hadoop便自立门户,从Nutch中剥离出来成为一个开源子项目。Hadoop其实并非一个单纯用于存储的分布式文件系统,而是一个被设计用来在由普通硬件设备组成的大型集群上执行分布式应用的框架。Hadoop由两部分组成,包括一个分布式文件系统HDFS和一个MapReduce实现。简而言之,Hadoop的核心目标是为开发分布式应用提供一个框架。HDFS采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode组成。HDFS支持传统的层次型文件组织,与大多数其他文件系统类似,用户可以创建目录,并在其间创建、删除、移动和重命名文件。

  Hadoop的应用案例:Nutch与Hadoop携手 海量数据搜索的分布式检索构架

  Nutch正是基于Hadoop开发的一个应用。基于Nutch的分布式搜索引擎的架构可以分割为分布式爬虫器、分布式文件存储系统(HDFS)、检索服务系统(Searcher)等几部分。分布式爬虫器的工作流程为:首先Crawler根据WebDB生成一个待抓取网页的URL集合叫做Fetchlist,接着下载线程Fetcher会开始根据Fetchlist网页抓取回来。在Nutch中,Crawler操作的实现是通过一系列子操作的实现来完成的。Nutch爬取的文件按块存放在搭建好的HDFS上,值得注意的是Nutch分布式检索服务于HDFS是没有关系的,提供检索服务的索引块存放在local文件系统中,而不是HDFS上。

  将Nutch的优势和Hadoop相结合,就可以提供一个支持海量数据搜索的分布式检索构架。其主要流程为:

  1、采用Heritrix爬取网页文本;

  2、得到的数据写入Nutch的Segments,交由HDFS存储。

  3、在Segments的基础上做链接分析和文本抽取工作。

  4、构建分布式索引分发机制和更新机制;

  5、利用Nutch提供分布式检索。

  6、Hadoop底层实现原理

  典型的Hadoop离线分析系统架构

  实时数据分析一般用于金融、移动和互联网B2C等产品,往往要求在数秒内返回上亿行数据的分析,要满足这样的需求,可以采用精心设计的传统关系型数据库组成并行处理集群,但需要耗费比较高的软硬件成本。目前比较新的海量数据实时分析工具有EMC的Greenplum、SAP的HANA等。

  对于大多数反馈时间要求不是那么严苛的应用,比如离线统计分析、机器学习、搜索引擎的反向索引计算、推荐引擎的计算等,应采用离线分析的方式,通过数据采集工具将日志数据导入专用的分析平台。但面对海量数据,传统的ETL工具往往彻底失效,主要原因是数据格式转换的开销太大,在性能上无法满足海量数据的采集需求。互联网企业的海量数据采集工具,有Facebook 开源的Scribe、LinkedIn开源的Kafka、淘宝开源的Timetunnel、Hadoop的Chukwa等,均可以满足每秒数百MB的日志数据采集和传输需求,并将这些数据上载到Hadoop中央系统上。

  按照大数据的数据量,分为内存级别、BI级别、海量级别三种。

 

 

 

 

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2011-04-01 注意: 不扩展类 System.Web.UI.Page
记录生活、工作、学习点滴!
E-Mail:mahaisong@hotmail.com 欢迎大家讨论。
沐海博客园,我有一颗,卓越的心!
点击右上角即可分享
微信分享提示