hadoop搜索引擎

合集下载

大数据集群-hadoop的安全防护

大数据集群-hadoop的安全防护

大数据集群-hadoop的安全防护作者:刘海卫来源:《中国新通信》2021年第16期【摘要】大数据产业是目前国家信息产业的重点发展方向。

越来越多的单位和企业都开始使用大数据系统存储重要且敏感的数据,这些数据是企业长期积累的财富,必须严密保护。

但是大数据系统也带来了全新的安全挑战,如果不能很好的应对这个挑战,企业的数据就会面临巨大的风险,势必会影响人们使用大数据系统的信心。

【关键词】 hadoop安全大数据安全计算机集群安全组件安全一、Hadoop面临的安全挑战大数据产业是目前国家信息产业的重点发展方向。

越来越多的单位和企业都开始使用大数据系统存储重要且敏感的数据,这些数据是企业长期积累的财富,必须严密保护。

但是大数据系统也带来了全新的安全挑战,如果不能很好的应对这个挑战,企业的数据就会面临巨大的风险,势必会影响人们使用大数据系统的信心。

Hadoop集成了数据采集、数据存储、数据分析、数据展示等各方面的多个组件,是目前最常用的处理大数据的架构。

但hadoop的安全性是比较差的,因为hadoop设计初衷是为搜索引擎建立网页索引,本来是在企业内部可信环境下使用的,安全并不是其重点考虑的问题,加上hadoop服务组件众多,所以hadoop平台天生就有认证分散,弱授权、弱审计且分散的特点,给安全工作带来很大的不便。

它面临的安全风险主要体现在以下几个方面:1.具有集群规模大、内部互信度高的特点,集群内部机器存在SSH免密登录的问题,因此只要集群内部一台机器被入侵,往往整个集群都沦陷。

2.系统是为了数据共享,所以是开放的,与之交互的外部应用系统和用户也可能是动态变化的,这会给大数据系统认证和权限管理带来很大麻烦。

3.系统组件多,且各个组件弱认证、弱授权、弱审计,存在着很大的安全风险。

4.系统内部能够动态扩容,新加入的机器也可能会带来新的安全隐患。

5.系统的存储、传输都采用明文形式,很容易造成信息泄露。

二、Hadoop安全防护研究针对hadoop集群规模大机器多、内部互信度高(存在SSH免密登录)的特点,我们设计了封闭的大数据集群安全架构。

Hadoop简介

Hadoop简介

MapReduce的基本原理就是:将大的数据分析分成小块逐个分析,最后再将 提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎 么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要 编写简单的需求命令即可达成我们想要的数据。

总结 总的来说Hadoop适合应用于大数据存储和大数据分析的应用,适合于服 务器几千台到几万台的集群运行,支持PB级的存储容量。 Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像 分析、数据保存等。
Hadoop历史
• • • • • • • 雏形开始于2002年的Apache的Nutch,Nutch是一个开源Java 实现的搜索引擎。它提 供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 随后在2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是 google File System,google公司为了存储海量搜索数据而设计的专用文件系统。 2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名 为NDFS。 2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型, 用于大规模数据集(大于1TB)的并行分析运算。 2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。 2006年,Yahoo雇用了Doug Cutting,Doug Cutting将NDFS和MapReduce升级命名为 Hadoop,Yahoo开建了一个独立的团队给Goug Cutting专门研究发展Hadoop。 不得不说Google和Yahoo对Hadoop的贡献功不可没。

黑马程序员hadoop笔记

黑马程序员hadoop笔记

黑马程序员hadoop笔记Hadoop是当前最流行的大数据处理框架之一,具备高可靠性、高扩展性和高效性等特点。

本文将全面介绍Hadoop的相关内容,包括其基本概念、架构设计、应用场景以及使用方法等。

1. Hadoop的基本概念Hadoop是一个开源的分布式计算平台,其核心由Hadoop分布式文件系统(HDFS)和MapReduce计算框架组成。

HDFS采用主从架构,支持海量数据的分布式存储和处理;MapReduce则是一种分布式计算模型,提供了高效的数据处理能力。

2. Hadoop的架构设计Hadoop采用了分布式存储和计算的架构设计,主要包括主节点(NameNode)和多个工作节点(DataNode)组成。

主节点负责管理整个系统的元数据信息,存储在内存中,而工作节点则负责存储和计算任务的执行。

3. Hadoop的应用场景Hadoop广泛应用于大规模数据处理和分析领域。

它可以处理各种类型的数据,包括结构化数据、半结构化数据和非结构化数据等。

常见的应用场景包括日志分析、推荐系统、搜索引擎和数据仓库等。

4. Hadoop的使用方法使用Hadoop进行数据处理通常需要编写MapReduce程序,它由Mapper和Reducer两个组件组成。

Mapper负责将输入数据切分成若干键值对,然后执行相应的逻辑处理;Reducer负责对Mapper的输出结果进行归纳和聚合。

在编写MapReduce程序时,我们需要定义数据的输入和输出路径,并指定Mapper和Reducer的逻辑处理方式。

通过Hadoop提供的命令行工具和API,可以方便地操作Hadoop集群,提交任务并监控任务的执行状态。

本文对Hadoop的概念、架构设计、常见应用场景和使用方法进行了简要介绍。

Hadoop作为一种强大的大数据处理框架,具备高可靠性和高扩展性,适用于处理大规模数据和复杂计算任务。

通过深入学习和掌握Hadoop的知识,我们可以更好地应对现实中的数据挑战,并开展相关的数据分析和应用开发工作。

hadoop使用场景

hadoop使用场景

hadoop使用场景Hadoop使用场景Hadoop作为一个开源的分布式计算框架,在大数据处理领域有着广泛的应用。

它的设计初衷是为了能够高效地处理大规模数据集,同时具有高容错性和可扩展性。

下面我们将详细介绍Hadoop的几个常见使用场景。

1. 数据存储和处理Hadoop最为常见的使用场景就是用于存储和处理海量的数据。

其分布式文件系统HDFS能够将数据分散存储在多台服务器上,并通过MapReduce编程模型实现数据的并行处理。

这使得Hadoop能够处理PB级别甚至更大规模的数据集,适用于各种类型的数据分析任务。

2. 日志分析在大型互联网公司中,每天都会产生海量的日志数据,包括用户访问记录、系统运行日志等。

Hadoop可以被用来对这些日志数据进行实时分析、监控和报告生成。

通过Hadoop的批处理能力,可以快速地对大量日志数据进行处理,提取有价值的信息,帮助企业做出合理的决策。

3. 搜索引擎搜索引擎需要处理大量的网页数据,并为用户提供快速准确的搜索结果。

Hadoop可以被用来构建搜索引擎的索引,通过分布式计算和并行处理来提高搜索效率。

同时,Hadoop还可以用于分布式爬虫程序的设计,帮助搜索引擎实时地获取最新的网页数据。

4. 机器学习在人工智能领域,机器学习是一个重要的研究方向,需要大量的数据来训练模型。

Hadoop提供了分布式计算的能力,可以加速机器学习算法的训练过程。

通过Hadoop可以快速处理海量的数据集,为机器学习模型提供更准确的训练数据,提高模型的准确度和泛化能力。

5. 实时数据分析除了批处理任务,Hadoop还可以支持实时数据分析。

通过与流处理框架如Apache Storm或Apache Flink的结合,Hadoop可以实现实时数据的处理和分析,帮助企业迅速响应市场变化,及时调整业务策略。

总结Hadoop作为一个强大的大数据处理工具,在各个领域都有着广泛的应用场景。

无论是数据存储和处理、日志分析、搜索引擎、机器学习还是实时数据分析,Hadoop都能够发挥其强大的计算能力和扩展性,帮助企业更好地利用和管理海量数据。

基于Hadoop的分布式爬虫及其实现

基于Hadoop的分布式爬虫及其实现

基于Hadoop的分布式爬虫及其实现引言随着互联网的快速发展和信息的爆炸式增长,大数据时代已经来临。

海量的数据涌入网络,并形成了一个巨大的信息资源库。

如何有效地从这个海洋中提取有价值的信息,成为了当今互联网领域面临的重要挑战之一。

为了应对这一挑战,分布式爬虫技术应运而生。

本文将介绍基于Hadoop的分布式爬虫的实现过程及其优势。

一、分布式爬虫的背景与意义1.1 现有的爬虫技术传统的爬虫技术主要是基于单机环境下的串行爬虫,即一个爬虫程序在一个机器上运行,通过遍历链接、下载网页并解析的方式进行信息抓取。

然而,在处理大规模的数据量时,单机环境面临着许多挑战,如性能瓶颈、系统崩溃等。

1.2 分布式爬虫的优势与应用分布式爬虫依赖于分布式计算框架,如Hadoop,将爬取任务进行拆分,通过多个爬虫节点并行执行,大大提高了爬取效率。

同时,分布式爬虫还能够充分利用多个计算节点的存储资源,提高数据的采集速度和处理能力。

因此,分布式爬虫在大规模数据挖掘、搜索引擎优化等领域具有广泛的应用前景。

二、基于Hadoop的分布式爬虫的实现步骤2.1 爬虫任务的拆解与调度在分布式爬虫中,首先需要将爬取任务进行拆分,分配给多个爬虫节点。

如何进行任务的拆解与调度是整个分布式爬虫实现的重要环节。

Hadoop的MapReduce框架提供了良好的任务调度机制,可以将爬取任务拆解成独立的Map任务,再通过Reduce任务进行合并和处理。

2.2 爬虫节点的配置与管理在分布式爬虫中,每个爬虫节点都需要配置相应的设备和环境。

常见的配置包括网络代理、数据存储路径、爬取深度等。

此外,还需要对爬虫节点进行管理和监控,确保节点的正常工作和性能优化。

2.3 数据的采集与清洗数据的采集是分布式爬虫的核心步骤之一。

在分布式爬虫中,不同的爬虫节点负责采集不同的数据片段,并将采集结果通过消息队列等方式传递给中心节点。

中心节点进行数据的合并和清洗,去除重复数据和无效信息,得到最终的爬取结果。

Hadoop十大应用及案例

Hadoop十大应用及案例

Hadoop十大应用及案例Hadoop是一个分布式计算框架,可用于处理和分析大规模数据集。

以下是Hadoop的十大应用场景和案例:1.数据分析Hadoop在数据分析中非常有用,特别是对于大数据集。

它允许用户在集群中并行处理数据,从而使分析更快速和高效。

一种典型的应用是客户行为分析,通过分析大量客户的交易数据和交互数据,企业可以更好地了解客户需求,以制定更加精准的营销策略。

2.搜索引擎搜索引擎是Hadoop的另一个常见应用场景。

例如,Hadoop被用来处理和索引网页,使得用户可以在搜索引擎中快速找到他们需要的信息。

Hadoop的分布式处理能力使得这种大规模的索引和查询操作成为可能。

3.数据仓库Hadoop可以作为数据仓库使用,存储大规模的数据集。

与传统的关系型数据库不同,Hadoop可以处理大规模的半结构化和非结构化数据,而且可以高效地进行查询和分析。

例如,企业可以使用Hadoop作为其数据仓库,存储和分析销售、市场、财务等各个方面的数据。

4.机器学习Hadoop为机器学习提供了强大的支持。

由于Hadoop可以处理大规模的数据集,并且可以在集群中并行执行任务,因此它非常适合进行机器学习算法的训练。

例如,可以使用Hadoop进行大规模的图像识别或者语音识别训练。

5.文本处理Hadoop可以高效地处理文本数据。

例如,可以使用Hadoop对大规模的文本文件进行分词、词频统计、情感分析等操作。

这种操作在传统的单台计算机上是不可能完成的,因为它的计算和存储能力有限。

但是,在Hadoop中,这些操作可以在集群中并行执行,使得它们变得可能并且更加高效。

6.推荐系统Hadoop可以用于构建推荐系统。

推荐系统通常需要分析大量的用户数据以找出用户可能感兴趣的物品或服务。

Hadoop的分布式计算能力使得这种分析能够在短时间内完成。

例如,电子商务网站可以使用Hadoop来分析用户的购买记录和浏览行为,以提供个性化的商品推荐。

大数据管理方法及大数据管理系统

大数据管理方法及大数据管理系统一、引言随着信息技术的快速发展,大数据已经成为当今社会的一个重要资源。

然而,大数据的管理和分析也成为了一个巨大的挑战。

为了有效地利用大数据,需要采用适当的管理方法和系统来处理和分析大量的数据。

本文将介绍大数据管理方法及大数据管理系统的相关内容。

二、大数据管理方法1. 数据采集与存储大数据管理的第一步是数据的采集与存储。

在采集数据时,可以利用各种传感器、设备和应用程序来获取数据。

数据的存储可以采用传统的关系型数据库或者分布式文件系统等技术。

此外,还可以使用云存储等技术来存储大规模的数据。

2. 数据清洗与预处理大数据往往包含大量的噪音和冗余信息,因此需要进行数据清洗和预处理。

数据清洗是指通过去除噪音、处理缺失值和异常值等步骤来提高数据的质量。

数据预处理是指对数据进行归一化、标准化、降维等操作,以便后续的分析和挖掘。

3. 数据集成与融合大数据往往来自于多个不同的数据源,因此需要进行数据集成和融合。

数据集成是指将来自不同数据源的数据进行整合,以便进行统一的分析。

数据融合是指将不同数据源的数据进行合并,以获得更全面的信息。

4. 数据分析与挖掘大数据管理的核心是数据的分析和挖掘。

数据分析是指对数据进行统计分析、数据挖掘和机器学习等操作,以发现数据中隐藏的模式和规律。

数据挖掘是指从大数据中提取实用的信息和知识,以支持决策和预测。

5. 数据可视化与报告数据可视化是将分析结果以图表、图形等形式展示出来,以便更直观地理解数据。

数据报告是将分析结果以报告的形式呈现,以便进行更深入的分析和决策。

三、大数据管理系统1. HadoopHadoop是一个开源的分布式计算框架,可以用于存储和处理大规模的数据。

它包括Hadoop分布式文件系统(HDFS)和Hadoop MapReduce两个核心组件。

Hadoop可以实现数据的分布式存储和并行计算,适合于大数据管理和分析。

2. SparkSpark是一个快速的、通用的大数据处理引擎,可以在内存中进行大规模的数据处理。

Hadoop核心概念及入门

Hadoop核⼼概念及⼊门HadoopHadoop背景什么是HADOOPHADOOP是apache旗下的⼀套开源软件平台HADOOP提供利⽤服务器集群,根据⽤户的⾃定义业务逻辑,对海量数据进⾏分布式处理,HADOOP的核⼼组件有:HDFS(分布式⽂件系统)、YARN(运算资源调度系统)、MAPREDUCE(分布式运算编程框架),⼴义上来说,HADOOP通常是指⼀个更⼴泛的概念——HADOOP⽣态圈HADOOP产⽣背景HADOOP最早起源于Nutch。

Nutch的设计⽬标是构建⼀个⼤型的全⽹搜索引擎,包括⽹页抓取、索引、查询等功能,但随着抓取⽹页数量的增加,遇到了严重的可扩展性问题——如何解决数⼗亿⽹页的存储和索引问题。

2003年、2004年⾕歌发表的两篇论⽂为该问题提供了可⾏的解决⽅案。

——分布式⽂件系统(GFS),可⽤于处理海量⽹页的存储——分布式计算框架MAPREDUCE,可⽤于处理海量⽹页的索引计算问题。

Nutch的开发⼈员完成了相应的开源实现HDFS和MAPREDUCE,并从Nutch中剥离成为独⽴项⽬HADOOP,到2008年1⽉,HADOOP成为Apache顶级项⽬,迎来了它的快速发展期。

HADOOP在⼤数据、云计算中的位置和关系云计算是分布式计算、并⾏计算、⽹格计算、多核计算、⽹络存储、虚拟化、负载均衡等传统计算机技术和互联⽹技术融合发展的产物。

借助IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等业务模式,把强⼤的计算能⼒提供给终端⽤户。

现阶段,云计算的两⼤底层⽀撑技术为“虚拟化”和“⼤数据技术”⽽HADOOP则是云计算的PaaS层的解决⽅案之⼀,并不等同于PaaS,更不等同于云计算本⾝。

HADOOP⽣态圈以及各组成部分的简介HDFS:分布式⽂件系统MAPREDUCE:分布式运算程序开发框架HIVE:基于⼤数据技术(⽂件系统+运算框架)的SQL数据仓库⼯具HBASE:基于HADOOP的分布式海量数据库ZOOKEEPER:分布式协调服务基础组件Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库Oozie:⼯作流调度框架Sqoop:数据导⼊导出⼯具Flume:⽇志数据采集框架分布式系统概述注:由于⼤数据技术领域的各类技术框架基本上都是分布式系统,因此,理解hadoop、storm、spark等技术框架,都需要具备基本的分布式系统概念什么是分布式分布式系统是由⼀组通过⽹络进⾏通信、为了完成共同的任务⽽协调⼯作的计算机节点组成的系统。

Hadoop生态圈各个组件简介

Hadoop⽣态圈各个组件简介Hadoop是⼀个能够对⼤量数据进⾏分布式处理的软件框架。

具有可靠、⾼效、可伸缩的特点。

Hadoop的核⼼是HDFS和MapReduce,HDFS还包括YARN。

1.HDFS(hadoop分布式⽂件系统)是hadoop体系中数据存储管理的他是⼀个基础。

它是⼀个⾼度容错的的系统,能检测和应对硬件故障。

client:切分⽂件,访问HDFS,与之交互,获取⽂件位置信息,与DataNode交互,读取和写⼊数据。

namenode:master节点,在hadoop1.x中只有⼀个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。

DataNode:slave节点,存储实际的数据,汇报存储信息给namenode.secondary namenode:辅助namenode,分担其⼯作量:定期合并fsimage和fsedits,推送给namenode;紧急情况下和辅助恢复namenode,但其并⾮namenode的热备。

2.mapreduce(分布式计算框架)mapreduce是⼀种计算模型,⽤于处理⼤数据量的计算。

其中map对应数据集上的独⽴元素进⾏指定的操作,⽣成键-值对形式中间,reduce则对中间结果中相同的键的所有的值进⾏规约,以得到最终结果。

jobtracker:master节点,只有⼀个管理所有作业,任务/作业的监控,错误处理等,将任务分解成⼀系列任务,并分派给tasktracker. tacktracker:slave节点,运⾏map task和reducetask;并与jobtracker交互,汇报任务状态。

map task:解析每条数据记录,传递给⽤户编写的map()执⾏,将输出结果写⼊到本地磁盘(如果为map-only作业,则直接写⼊HDFS)。

reduce task:从map的执⾏结果中,远程读取输⼊数据,对数据进⾏排序,将数据分组传递给⽤户编写的reduce函数执⾏。

hadoop+hdfs课件


Hadoop 1.0于2.0的区别
Hadoop1.0版本两个核心:HDFS+MapReduceHadoop2.0版本,引入了HDFS+Yarn+Mapreduce。Yarn是资源调度框架。能够管理和调度任务。此外,还能够支持其他计算框架基于hdfs的计算,比如spark等。
Hadoop的一些常用操作
Hadoop 是一个开源的, 可靠的(reliable), 可扩展的(scalable)分布式计算框架允许使用简单的编程模型跨计算机集群分布式处理大型数据集(python java …)可扩展: 从单个服务器可以横向扩张到数千台计算机,每台计算机都提供本地计算和存储。可靠的: 不依靠硬件来提供高可用性(high-availability),而是在应用层检测和处理故障,从而在计算机集群之上提供高可用服务。
Hadoop+hdfs
目录
HadoopHDFS详解
Hadoop
Hadoop起源2004年,开发一款搜索引擎nutch。nutch基于Lucence实现的搜索引擎,能够从互联网上抓取网页数据。抓取来的海量数据的存储问题。但是,这些海量数据都是非结构化数据,不能存在关系型数据库。正好那时候,Google发表了两篇论文《Google File System》《Google MapReduce》《Google File System》简称GFS,是Google公司用于解决海量数据存储的文件系统。《Google MapReduce》简称MapReduce,是Google的计算框架,基于GFS。2006年cutting根据《Google File System》设计了Nutch的HDFS,hadoop distributed file system。Hadoop最开始是nutch的子项目,目的是解决nutch的海量数据存储问题。在nutch 0.8版本之后, Hadoop独立处理,成为一个独立的项目。后来,又根据《Google MapReduce》设计了基于HDFS的 uMapRedce计算框架。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Map/Reduce 的名字源于这个模型中的两项核心操作:Map 和Reduce,实际处理的都是大量像<key, value>对这样的简单数据类型。

在模型中首先对输入的数据进行分割,将分割后的数据分配给Map 函数,而Map 把分配到的数据(一般为一组<key, vaule>对)映射为另外的一组<key2, vaule2>型中间数据,其映射的规则由一个函数指定;Reduce是对Map 输出的<key2, vaule2>型中间数据进行归约并输出最终结果,这个归约的规则也是由一个函数指定。

这两项操作的规则是可以由程序设计人员的指定,正是这一点带给了Map/Reduce 模型巨大的灵活性。

(1)首先,用户程序中的Map Reduce 函数库把输入文件分成M 块(Hadoop 中每个数据分块大小一般为64MB,这个可通过参数修改)。

然后用户程序在集群中创建多个程序副本,执行处理程序。

(2)在大量的程序副本中有一个比较特殊——主控程序Master。

其余程序副本都是作为worker 在工作,也即图2.4 中的Map0,Map1,Map2 以及Reduce0 和Reduce1。

总共有M 个Map 和R 个Reduce 任务。

Master 会给空闲的worker 分配这些任务。

Master 类似于数据管道,通过该管道,中间键值对的存储信息(比如存储区域的大小,位置)可从Map 传递到Reduce。

此外,Master 具备一些数据结构,存储worker 的标识和每一个Map 和Reduce 任务的状态:空闲、工作中或完成。

(3)在Map 阶段,Slaves 作为worker 接受Master 分配的Map 任务,读取并解析输入数据分块,以key/value 键值对形式输出给用户自定义的Map 函数。

Map 函数对输入数据并行处理后同样以键值形式输出,在内存中作临时缓存。

(4)对于缓存的中间键值对,程序会调用分区函数定期执行本地写入操作,同时程序会将中间键值对在本地硬盘的存储位置回传给Master,由Master 记录这些位置信息为Reduce 阶段做好准备。

(5)在Reduce 阶段,Reduce worker 首先获取Master 传递的中间键值对位置信息,接着调用RPC(远程过程调用协议)读取Map worker 方存储的全部中间键值对,再使用中间key 对这些数据进行排序,使所有有相同key 值的数据聚集在一起,以达到排序的效果。

(6)Reduce worker 将所有经排序的中间数据传递给用户自定义的Reduce 函数处理。

Reduce 函数同样以键值形式输出操作结果。

(7)在所有Map 任务和Reduce任务执行结束时,Master 重新激活用户主程序,代表一次“映射”与“化简”操作执行完毕。

在一次Map Reduce 操作中,输入的M 个数据分首先在多台机器上调用Map 功能函数作并行处理,对应输出的中间文件再传递给Reduce 功能函数进行化简处理,但是程序不对Reduce 任务产生的R 个输出文件进行合并,而是将其作为另一个Map Reduce 操作的输入或者用另一个分布式应用来处理。

Hadoop 是一个基于Map/Reduce 的相当成功的分布式计算平台,Map/Reduce 是Google 的一项重要技术,是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用。

Map/Recuce 可以将被划分成多个小的Block 的海量检索数据以分布式的方法局部计算,并应用Map 将他们映射到一个提供Reduce 的中心上,从而达到快速处理海量数据检索的目的。

分布式文件系统HDFS(Hadoop Distributed File System)是Hadoop 的另一重要功能。

HDFS 是受Google 文件系统的启发,建立在大型集群上可靠存储大数据集的文件系统。

HDFS 与Map/Reduce 紧密集成,是Hadoop 分布式计算的存储基石。

它有自己明确的设计目标,那就是支持大的数据文件(大至T 级),并且这些文件以顺序读取为主,以文件读的高吞吐量为目标。

具体的存取过程如下。

(1)文件写入过程:
首先,Client 向Name Node 发起写入请求;
Name Node 接收到请求后,根据文件大小和块配置情况将Client 负责的Data Node信息返回;
Client 将文件划分为多个数据块(block),然后将Name Node 提供的Data Node 地址信息逐个写入对应的Data Node 中;
(2)文件读取过程:
首先,Client 向Name Node 发起读取请求;
Name Node 接收到请求后,返回目标文件所在Data Node 的信息;
Client 读取目标文件信息;
(3)HDFS 通过配置来复制文件数据块(block)以保证数据安全:
当Name Node 发现部分Data Node 失效或者部分文件Block 不符合最小复制数时,通
知Data Node 进行相互复制;
Data Node 执行相互复制;图2.5 给出Name Node 中文件的索引目录,这里显示有两个数据文件:Data1 和Data2,分别拥有1,2,3 三个数据块和4,5 两个数据块,均分布在4 个数据节点中。

每个数据块有3 个副本,无论其中任何一个数据节点故障或崩溃而无法实现网络访问时,都可以成功读取文件信息。

Hadoop 分布式计算结构
综合Map/Reduce 和HDFS,就是Hadoop 平台的整体结构了。

在Hadoop 分布式计算平台中,必须有一个Master 节点,主要负责Name Node 和Job Tracker 的工作,如果是大型分布集群环境,更理想的方式是将Name Node 和Job Tracker 分别部署到由两台计算机共同组成Master 节点,这样可以提高平台的响应速度。

此外,会有多个Slave 节点,每个Slave 节点通常具有Data Node 的功能并负责Task Tracker 的工作。

综合Map/Reduce 和HDFS 的Hadoop 整体结构如图2-3 所
示:
本文提出的基于Hadoop 的分布式搜索引擎系统,将Map/Reduce 技术应用到搜索引擎的工作流程中,应用HDFS 分布式文件系统存储数据。

按照搜索引擎的特点,可以将系统分为三个业务功能子系统包括:爬行器Crawler、索引器Indexer、查询器Searcher。

这三个子系统应用了Map/Reduce 编程模型,运行于分布式系统环境。

1. 爬行器漫游于网络中抓取网页数据,对网页数据进行分析提取链接,生成链接列表以供爬行器下一次爬行使用。

2. 爬行器将网页文本数据和网页链接数据保存到网页数据库中。

3. 爬行器在完成采集工作后(所有应抓取的网页文本数据和网页链接数据
都已经保存到数据库中),通知索引器可以开始索引。

4. 索引器开始执行索引,对网页文本数据进行分词(主要包括英文分词和中文分词),建立全文索引,并对一些倒排文档执行增量索引,新建立的索引保存在缓存中。

同时,还要根据评分策略给网页评分。

5. 索引器执行全文索引和增量索引的过程中锁定部分倒排文档,因此,通知搜索器停止部分查询。

当索引完成后索引器解除倒排索引文档锁定,通知搜索器新倒排索引可以提供查询。

6. 当缓存中的索引数量达到一个阈值后,索引器将索引保存到倒排索引库。

7. 用户通过搜索引擎前台界面向查询器提交搜索请求。

查询器在接到请求后,解析用户查询字符串,提取出关键词和查询条件。

8. 查询器根据关键词和查询条件,生成查询任务,查询倒排索引文档。

9. 查询器获得查询结果。

10. 查询器根据网页评分对查询结果排序,将网页分值按由高到低顺序排列,并返回给客户。

相关文档
最新文档