当前位置:文档之家› hadoop进行分布式并行编程第三部分

hadoop进行分布式并行编程第三部分

hadoop进行分布式并行编程第三部分
hadoop进行分布式并行编程第三部分

用Hadoop 进行分布式并行编程, 第 3 部分

部署到分布式环境

曹羽中 (caoyuz@https://www.doczj.com/doc/4b5161004.html,), 软件工程师, IBM中国开发中心

简介: Hadoop 是一个实现了MapReduce 计算模型的开源分布式并行编程框架,借助于Hadoop, 程序员可以轻松地编写分布式并行程序,将其运行于计算机集群上,完成海量数据的计算。在本文中,详细介绍了如何部署Hadoop 分布式运行环境,如何让程序分布式运行于多台普通的计算机上,如何使用IBM MapReduce Tools 轻松地将MapReduce 程序部署到Hadoop 分布式环境中运行等内容。

标记本文!

发布日期: 2008 年7 月31 日

级别:初级

访问情况: 4608 次浏览

评论: 0 (查看 | 添加评论 - 登录)

平均分(7个评分)

为本文评分

一前言

在本系列文章的第一篇:用Hadoop 进行分布式并行编程,第1 部分:基本概念与安装部署中,介绍了MapReduce 计算模型,分布式文件系统HDFS,分布式并行计算等的基本原理, 并且详细介绍了如何安装Hadoop,如何在单机及伪分布式环境(在一台单机中用多进程模拟)运行基于Hadoop 的并行程序。在本系列文章的第二篇:用Hadoop 进行分布式并行编程,第2 部分:程序实例与分析中,介绍了如何针对一个具体的计算任务,基于Hadoop 编写MapReduce 并行程序。本文将介绍真实的Hadoop 分布式运行环境, 包括如何在多台普通的计算机上部署分布式运行环境,如何将MapReduce 程序远程部署并运行在这个分布式环境上,并简略介绍了”云计算平台” 以及计算能力按需租用服务。

回页首二准备工作

1. 硬件与网络

使用三台机器,机器名分别为homer06, homer07, homer08,均安装Redhat Enterprise Linux 5.0 (其它Linux 发行版亦可), 确保各台机器之间网络畅通,机器名与IP 地址之间解析正确,从任一台机器都可以ping 通其它机器的机器名。如有机器名的解析问题,可通过设置/etc/hosts 文件解决,当然更好的解决方法是在你的网络中配置DNS 服务器。此外,需要在三台机器上创建相同的用户帐号,如caoyuz, 或直接使用root 帐号亦可。我们将使用homer06 作为分布式文件系统HDFS 的Name Node及MapReduce 运

行过程中的Job Tracker 结点,我们将homer06称之为主结点。其它两台机器(homer07, homer08) 作为HDFS 的Data Node 以及MapReduce 运行过程中的Task Tracker 结

点,这些结点可统称为从结点。如你需要部署更多的机器,也是很容易的,将新加入的机器作为Data Node以及Task Tracker 结点即可,其配置过程与本文介绍的三台机器的环境类似,此不赘述。

2. SSH 配置

在Hadoop 分布式环境中,Name Node (主节点) 需要通过SSH 来启动和停止Data Node (从结点)上的各类进程。我们需要保证环境中的各台机器均可以通过SSH 登录访问,并且Name Node 用SSH 登录Data Node 时,不需要输入密码,这样Name Node 才能在后台自如地控制其它结点。可以将各台机器上的SSH 配置为使用无密码公钥认证方式来实现。

现在流行的各类Linux 发行版一般都安装了SSH协议的开源实现OpenSSH, 并且已

经启动了SSH 服务, 即这些机器缺省应该就是支持SSH 登录的。如果你的机器缺省不支持SSH, 请下载安装OpenSSH。

以下是配置SSH 的无密码公钥认证的过程。首先,在homer06 机器上执行命令,如代码清单1 所示:

代码清单1

homer06: $ ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/caoyuz/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/caoyuz/.ssh/id_rsa.

Your public key has been saved in /home/caoyuz/.ssh/id_rsa.pub.

The key fingerprint is:

2e:57:e2:bf:fd:d4:45:5c:a7:51:3d:f1:51:3c:69:68 root@krusty04

这个命令将为homer06 上的当前用户caoyuz 生成其密钥对,密钥对的保存路径使用缺省的/home/caoyuz/.ssh/id_rsa, 要求输入passphrase 的时候,直接回车。这样生成的证书以及公钥将存储在/home/caoyuz/.ssh 目录,形成两个文件id_rsa,id_rsa.pub。然后将id_rsa.pub 文件的内容复制到每一台机器(包括本机homer06)的

/home/caoyuz/.ssh/authorized_keys文件的尾部,如果机器上不存在

/home/caoyuz/.ssh/authorized_keys 文件,可以自行创建一个。请注意id_rsa.pub 文件的内容是长长的一行,复制时需注意,不要遗漏字符或混入了多余换行符。

接下来可以做一下SSH 连接测试,从homer06 分别向homer06, homer07, homer08 发起SSH 连接请求,确保不需要输入密码就能SSH 连接成功。注意第一次SSH 连接时会出现如下提示信息:

The authenticity of host [homer06] can't be established. The key fingerprint is:

74:32:91:f2:9c:dc:2e:80:48:73:d4:53:ab:e4:d3:1a Are you sure you want to continue connecting (yes/no)?

请输入yes, 这样OpenSSH 会把连接过来的这台主机的信息自动加到

/home/caoyuz/.ssh/know_hosts 文件中去,第二次再连接时,就不会有这样的提示信息了。

回页首

then data will be stored in all named directories, typically on different devices. Directories that do not exist are ignored.

dfs.replication

2

Default block replication. The actual number of replications

can be specified when the file is created. The default is used if replication

is not specified in create time.

参数https://www.doczj.com/doc/4b5161004.html, 指定Name Node 的IP 地址和端口号,此处我们将其设定为homer06 及9000 端口,参数mapred.job.tracker 指定JobTracker 的IP 地址和端口号,此处我们将其设定为homer06 及9001 端口。参数https://www.doczj.com/doc/4b5161004.html,.dir 指定Name Node 相关数据在本地文件系统上的存放位置, 此处我们将其设定为

/home/caoyuz/hadoopfs/name ,参数dfs.data.dir 指定Data Node 相关数据在本地文件

系统上的存放位置,此处我们将其设定为/home/caoyuz/hadoopfs/data 。注意, Hadoop 会自动创建这两个目录,无需事先创建。

更多的参数配置,可以参考conf/hadoop-default.xml 文件,并在conf/hadoop-site.xml 文件中设置。

4. 设定主从节点

修改conf/masters 文件,将其中的localhost 改为homer06 ,修改conf/slaves 文件, 删掉其中的localhost, 将我们的另两台机器homer07, homer08 加入, 注意每个机器一行。

5. 将Hadoop 部署到其它机器上去

至此, 我们已经在homer06 上安装和配置好了hadoop 和jre, 现在需要将其部署到其它机器上去,通过scp 命令即可完成,如代码清单3 所示:

代码清单3

homer06: $ scp -r /home/caoyuz/hadoop-0.16.0 homer07:/home/caoyuz/hadoop-0.16.0 homer06: $ scp -r /home/caoyuz/jre homer07:/home/caoyuz/jre

homer06: $ scp -r /home/caoyuz/hadoop-0.16.0 homer08:/home/caoyuz/hadoop-0.16.0 homer06: $ scp -r /home/caoyuz/jre homer08:/home/caoyuz/jre

其中用scp 拷贝jre 目录到其它机器上去不是必须的。你只需保证你的所有机器上均安装了JRE1.5 以上版本,并且都是安装在同一目录。

6. 在homer06 上格式化一个新的分布式文件系统

如代码清单4 所示:

/home/caoyuz/hadoopfs/data 目录(这是我们在conf/hadoop-site.xml 中指定的

dfs.data.dir 参数) 下看到一些数据文件,并且整个wordcount 的计算过程神奇地由homer06, homer07, homer08 三台机器并行协同完成,我们还可以很方便的增加更多的机器来参与运算。这就是分布式并行程序的优势: 可以很容易地通过加入新的机器来获得更多的存储空间和计算能力, 部署的机器越多, 就越能有效地完成海量数据的计算。

回页首五使用IBM MapReduce Tools 部署分布式程序

在第二篇文章中,已经介绍了IBM MapReduce Tools 的基本功能和用法。现在我们重点介绍如何使用IBM MapReduce Tools 将MapReduce 程序远程部署到Hadoop 分布式环境中去运行。

假定我们还是使用上一节部署完成的分布式环境,然后是在另一台机器上使用Eclipse 开发MapReduce 程序。

1. 定义Hadoop server 的位置

首先请确保你的Eclipse 已经安装了IBM MapReduce Tools 这个插件。启动Eclipse, 选择Window -> Open Perspective ->other, 再从弹出框中选择MapReduce, 这样Eclipse 会进入专门的MapReduce 视图( perspective )。

随后,请检查你的MapReduce perspective中是否有一个专门的MapReduce Servers view, 如果没有,请选择Window -> Show View ->other, 再从弹出框中选择MapReduce Tools 类别下面的MapReduce Servers, 打开这个view.

然后,请点击MapReduce Servers view 右上角的蓝色图标,就会出现如图一所示的设置Hadoop Server 的位置的界面。此处所说的Hadoop server,具体到本文,就是homer06 这台机器。在输入各项参数之后,请点击”Validate location” 按钮,检查是否能够正确的找到并连接上你的Hadoop server. 如果出错,请尝试在命令行下执行命令:ssh

the_hostname_of_your_hadoop_server, (或使用图形界面的SSH 远程登录软件), 确保ssh 能够连接成功。

图一定义Hadoop server 的位置

2. 创立一个MapReduce Project

在Eclipse 中新创建一个MapReduce Project, 将我们在第二篇文章中定义的WordCount 类加到此Project 中。这个类需要略作修改才能直接远程部署到我们已经搭建好的分布式环境中去运行,因为我们原来在WordCount程序中是通过读取命令行参数获得计算任务的输入路径和输出路径,而当前版本的IBM MapReduce Tools 不支持远程部署时读取命令行参数。为测试的简便起见,我在程序中直接将输入路径定义为input, 输出路径定义为output。在测试WordCount 程序之前,需要事先将需要做词频统计的一批文件拷贝到分布式文件系统的input 目录下去。

完整的WordCount 类的代码如代码清单7 所示:

代码清单7

//import 语句省略

public class WordCount extends Configured implements Tool {

public static class MapClass extends MapReduceBase

implements Mapper {

private final static IntWritable one = new IntWritable(1);

String[] paths = {"input" , "output"};

int res = ToolRunner.run(new Configuration(), new WordCount(), paths);

System.exit(res);

}

}

3. 远程部署与运行

在左侧的Project Explorer 中选中WordCount 类,在右键弹出菜单中选择Run As->Run on hadoop, 如图二所示:

图二

然后在“select hadoop server” 弹出框中选择我们已经定义好的Hadoop server, 点击Finish 之后,MapReduce Tool 会自动将WordCount project打包成一个jar 并拷到远程Hadoop server 上运行起来, 整个运行过程的输出在Eclipse 的console 中即可看到,非常方便。

4. 查看运行结果

当定义好Hadoop server 的位置之后,在左侧的Project Explorer 会出现一个新的project( 项目名前面有一个蓝色的小象图标), , 通过这个project 可以浏览Hadoop 分布

式文件系统中的文件。双击output 目录下的part-0000 文件,我们就可以直接在Eclipse 中查看WordCount 程序的输出结果,如图三所示:

图三

回页首六云计算与Hadoop

我们知道,在分布式集群环境中才能发挥Hadoop 的并行优势,拥有的机器数量越多,越能快速有效的处理海量数据。现实问题是,虽然很多公司都有处理海量数据的需求,却又不可能专门投资去搭建大规模的集群环境,Hadoop 于他们,不免沦为”屠龙之技”,无处发挥其优势,如之奈何?在过去,这个问题还真是难以解决,今天的情况就不一样了。读者如果关注IT 业界动态,当知现在IT 业界正在极力鼓吹”云计算”, 并有一些公司开始投资搭建

所谓的”云计算平台”,这里的”云”, 就是一堆机器组成的分布式环境外加一些基础构架软件

和管理软件,其中便会有类似于Hadoop 这样的分布式计算软件,HDFS 这样的分布式文件系统,有需求的公司和个人可以到这样的”云计算平台”上去租用存储空间,租用计算结点(计算能力)做分布式运算。

比如Amazon 公司基于Hadoop 推出了Amazon S3 ( Amazon Simple Storage Service ),提供可靠,快速,可扩展的网络存储服务,以及一个商用的云计算平台Amazon EC2

( Amazon Elastic Compute Cloud )。用户可以将其数据存储在Amazon S3 分布式存储平台上,然后到Amazon EC2 上去租用计算能力,完成对数据的计算。Amazon EC2 提供所谓的按需租用服务,目前的收费标准是每台虚拟计算机(Amazon EC2 称之为一个instance) 每小时0.10美元。与传统的主机租用服务完全不同,用户可以根据自己某次运算处理的规模,租用相应数量的虚拟计算机,运算完毕后就可以释放你租用的虚拟计算机,Amazon 则会根据你租用的虚拟计算机的数量以及本次计算的实际运行时间向你收费,等

于说你花钱租用计算能力,但不会浪费一个子儿。IBM 公司的云计算平台"蓝云"也面向企业用户提供了类似的功能。

如果我们打算基于Hadoop 编写分布式并行程序来处理大量的数据,完全可以到IBM, Amazon 等提供的云计算平台上去进行计算,对于IBM 蓝云,Amazon S3, Amazon EC2 的详细介绍超出了本文范围,有兴趣的读者可以去其官方网站了解更多的信息。

回页首七结束语

这是系列文章的最后一篇。第一篇文章介绍了MapReduce 计算模型,分布式文件系统HDFS,分布式并行计算等的基本原理, 如何安装和部署单机Hadoop 环境, 在第二篇文章中,我们实际编写了一个Hadoop 并行计算程序,并了解了一些重要的编程细节,了解了如何使用IBM MapReduce Tools 在Eclipse 环境中编译,运行和调试Hadoop 并行计算程序。本篇文章则详细介绍了如何部署分布式Hadoop 环境,如何利用IBM MapReduce Tools 将程序部署到分布式环境中运行,并简略介绍了现在流行的”云计算平台” 以及计算能力按需租用服务。

希望这三篇文章能起到一个抛砖引玉的作用,让你感受到MapReduce 分布式并行编程的乐趣并从此入门且乐在其中,为即将到来的所谓”云计算”时代提前热热身。

声明:本文仅代表作者个人之观点,不代表IBM 公司之观点。

参考资料

学习

?访问Hadoop 官方网站,了解Hadoop 及其子项目HBase 的信息。

?Hadoop wiki上, 有许多Hadoop 的用户文档,开发文档,示例程序等。

?阅读Google Mapduce 论文:MapReduce: Simplified Data Processing on Large Clusters, 深入了解Mapreduce 计算模型。

?深入了解Hadoop 分布式文件系统HDFS:The Hadoop Distributed File System:Architecture and Design

?深入了解Google 文件系统GFS: The Google File System, Hadoop HDFS 实现了与GFS 类似的功能。

?IBM MapReduce Tools: https://www.doczj.com/doc/4b5161004.html,/tech/mapreducetools,

?阅读本系列文章的第一篇: 用Hadoop 进行分布式并行编程,第1 部分:基本概念与安装部署

?阅读本系列文章的第二篇: 用Hadoop 进行分布式并行编程,第2 部分:程序实例与分析

讨论

?Hadoop 邮件列表

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu_CentOS

Hadoop集群安装配置教程_Hadoop2.6.0_Ubuntu/CentOS 本教程讲述如何配置Hadoop 集群,默认读者已经掌握了Hadoop 的单机伪分布式配置,否则请先查看Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置。 本教程由厦门大学数据库实验室出品,转载请注明。本教程适合于原生Hadoop 2,包括Hadoop 2.6.0, Hadoop 2.7.1 等版本,主要参考了官方安装教程,步骤详细,辅以适当说明,保证按照步骤来,都能顺利安装并运行Hadoop。另外有Hadoop安装配置简略版方便有基础的读者快速完成安装。 为了方便新手入门,我们准备了两篇不同系统的Hadoop 伪分布式配置教程。但其他Hadoop 教程我们将不再区分,可同时适用于Ubuntu 和CentOS/RedHat 系统。例如本教程以Ubuntu 系统为主要演示环境,但对Ubuntu/CentOS 的不同配置之处、CentOS 6.x 与CentOS 7 的操作区别等都会尽量给出注明。 环境 本教程使用Ubuntu 14.04 64位作为系统环境,基于原生Hadoop 2,在Hadoop 2.6.0 (stable)版本下验证通过,可适合任何Hadoop 2.x.y 版本,例如Hadoop 2.7.1,Hadoop 2.4.1 等。 本教程简单的使用两个节点作为集群环境: 一个作为Master 节点,局域网IP 为192.168.1.121;另一个作为Slave 节点,局域网IP 为192.168.1.122。 准备工作 Hadoop 集群的安装配置大致为如下流程: 1.选定一台机器作为Master 2.在Master 节点上配置hadoop 用户、安装SSH server、安装Java 环境 3.在Master 节点上安装Hadoop,并完成配置 4.在其他Slave 节点上配置hadoop 用户、安装SSH server、安装Java 环境 5.将Master 节点上的/usr/local/hadoop 目录复制到其他Slave 节点上 6.在Master 节点上开启Hadoop 配置hadoop 用户、安装SSH server、安装Java 环境、安装Hadoop 等过程已经在Hadoop安装教程_单机/伪分布式配置或CentOS安装Hadoop_单机/伪分布式配置中有详细介绍,请前往查看,不再重复叙述。 继续下一步配置前,请先完成上述流程的前 4 个步骤。 网络配置 假设集群所用的节点都位于同一个局域网。 如果使用的是虚拟机安装的系统,那么需要更改网络连接方式为桥接(Bridge)模式,才能实现多个节点互连,例如在VirturalBox 中的设置如下图。此外,如果节点的系统是在虚拟机中直接复制的,要确保各个节点的Mac 地址不同(可以点右边的按钮随机生成MAC 地址,否则IP 会冲突):

hadoop2.7.2 伪分布式安装

hadoop:建立一个单节点集群伪分布式操作 安装路径为:/opt/hadoop-2.7.2.tar.gz 解压hadoop: tar -zxvf hadoop-2.7.2.tar.gz 配置文件 1. etc/hadoop/hadoop-env.sh export JAVA_HOME=/opt/jdk1.8 2. etc/hadoop/core-site.xml fs.defaultFS hdfs://localhost:9000 hadoop.tmp.dir file:/opt/hadoop-2.7.2/tmp 3. etc/hadoop/hdfs-site.xml https://www.doczj.com/doc/4b5161004.html,.dir file:/opt/hadoop-2.7.2/dfs/name dfs.datanode.data.dir file:/opt/hadoop-2.7.2/dfs/data dfs.replication 1 dfs.webhdfs.enabled true

hadoop伪分布式搭建2.0

1. virtualbox安装 1. 1. 安装步骤 1. 2. virtualbox安装出错情况 1. 2.1. 安装时直接报发生严重错误 1. 2.2. 安装好后,打开Vitualbox报创建COM对象失败,错误情况1 1. 2.3. 安装好后,打开Vitualbox报创建COM对象失败,错误情况2 1. 2.4. 安装将要成功,进度条回滚,报“setup wizard ended prematurely”错误 2. 新建虚拟机 2. 1. 创建虚拟机出错情况 2. 1.1. 配制好虚拟光盘后不能点击OK按钮 3. 安装Ubuntu系统 3. 1. 安装Ubuntu出错情况 3. 1.1. 提示VT-x/AMD-V硬件加速在系统中不可用 4. 安装增强功能 4. 1. 安装增强功能出错情况 4. 1.1. 报未能加载虚拟光盘错误 5. 复制文件到虚拟机 5. 1. 复制出错情况 5. 1.1. 不能把文件从本地拖到虚拟机 6. 配置无秘登录ssh 7. Java环境安装 7. 1. 安装Java出错情况 7. 1.1. 提示不能连接 8. hadoop安装 8. 1. 安装hadoop的时候出错情况 8. 1.1. DataNode进程没启动 9. 开机自启动hadoop 10. 关闭服务器(需要时才关) 1. virtualbox安装 1. 1. 安装步骤 1.选择hadoop安装软件中的VirtualBox-6.0.8-130520-Win

2.双击后进入安装界面,然后直接点击下一步 3.如果不想把VirtualBox安装在C盘,那么点击浏览

基于Hadoop的分布式搜索引擎研究与实现

太原理工大学 硕士学位论文 基于Hadoop的分布式搜索引擎研究与实现 姓名:封俊 申请学位级别:硕士 专业:软件工程 指导教师:胡彧 20100401

基于Hadoop的分布式搜索引擎研究与实现 摘要 分布式搜索引擎是一种结合了分布式计算技术和全文检索技术的新型信息检索系统。它改变了人们获取信息的途径,让人们更有效地获取信息,现在它已经深入到网络生活的每一方面,被誉为上网第一站。 目前的搜索引擎系统大多都拥有同样的结构——集中式结构,即系统所有功能模块集中部署在一台服务器上,这直接导致了系统对服务器硬件性能要求较高,同时,系统还有稳定性差、可扩展性不高的弊端。为了克服以上弊端就必须采购极为昂贵的大型服务器来满足系统需求,然而并不是所有人都有能力负担这样高昂的费用。此外,在传统的信息检索系统中,许多都采用了比较原始的字符串匹配方式来获得搜索结果,这种搜索方式虽然实现简单,但在数据量比较大时,搜索效率非常低,导致用户无法及时获得有效信息。以上这两个缺点给搜索引擎的推广带来了很大的挑战。为应对这个挑战,在搜索引擎系统中引入了分布式计算和倒排文档全文检索技术。 本文在分析当前几种分布式搜索引擎系统的基础上,总结了现有系统的优缺点,针对现有系统的不足,提出了基于Hadoop的分布式搜索引擎。主要研究工作在于对传统搜索引擎的功能模块加以改进,对爬行、索引、搜索过程中的步骤进行详细分析,将非顺序执行的步骤进一步分解为两部分:数据计算和数据合并。同时,应用Map/Reduce编程模型思想,把数据计算任务封装到Map函数中,把数据合并任务封装到Reduce函数中。经过以上改进的搜索引擎系统可以部署在廉价PC构成的Hadoop分布式环境中,并具有较高的响应速度、可靠性和扩展性。这与分布式搜索引擎中的技术需求极为符合,因此本文使用Hadoop作为系统分布式计算平台。此外,系

(完整版)hadoop常见笔试题答案

Hadoop测试题 一.填空题,1分(41空),2分(42空)共125分 1.(每空1分) datanode 负责HDFS数据存储。 2.(每空1分)HDFS中的block默认保存 3 份。 3.(每空1分)ResourceManager 程序通常与NameNode 在一个节点启动。 4.(每空1分)hadoop运行的模式有:单机模式、伪分布模式、完全分布式。 5.(每空1分)Hadoop集群搭建中常用的4个配置文件为:core-site.xml 、hdfs-site.xml 、mapred-site.xml 、yarn-site.xml 。 6.(每空2分)HDFS将要存储的大文件进行分割,分割后存放在既定的存储块 中,并通过预先设定的优化处理,模式对存储的数据进行预处理,从而解决了大文件储存与计算的需求。 7.(每空2分)一个HDFS集群包括两大部分,即namenode 与datanode 。一般来说,一 个集群中会有一个namenode 和多个datanode 共同工作。 8.(每空2分) namenode 是集群的主服务器,主要是用于对HDFS中所有的文件及内容 数据进行维护,并不断读取记录集群中datanode 主机情况与工作状态,并通过读取与写入镜像日志文件的方式进行存储。 9.(每空2分) datanode 在HDFS集群中担任任务具体执行角色,是集群的工作节点。文 件被分成若干个相同大小的数据块,分别存储在若干个datanode 上,datanode 会定期向集群内namenode 发送自己的运行状态与存储内容,并根据namnode 发送的指令进行工作。 10.(每空2分) namenode 负责接受客户端发送过来的信息,然后将文件存储位置信息发 送给client ,由client 直接与datanode 进行联系,从而进行部分文件的运算与操作。 11.(每空1分) block 是HDFS的基本存储单元,默认大小是128M 。 12.(每空1分)HDFS还可以对已经存储的Block进行多副本备份,将每个Block至少复制到 3 个相互独立的硬件上,这样可以快速恢复损坏的数据。 13.(每空2分)当客户端的读取操作发生错误的时候,客户端会向namenode 报告错误,并 请求namenode 排除错误的datanode 后,重新根据距离排序,从而获得一个新的的读取路径。如果所有的datanode 都报告读取失败,那么整个任务就读取失败。14.(每空2分)对于写出操作过程中出现的问题,FSDataOutputStream 并不会立即关闭。 客户端向Namenode报告错误信息,并直接向提供备份的datanode 中写入数据。备份datanode 被升级为首选datanode ,并在其余2个datanode 中备份复制数据。 NameNode对错误的DataNode进行标记以便后续对其进行处理。 15.(每空1分)格式化HDFS系统的命令为:hdfs namenode –format 。 16.(每空1分)启动hdfs的shell脚本为:start-dfs.sh 。 17.(每空1分)启动yarn的shell脚本为:start-yarn.sh 。 18.(每空1分)停止hdfs的shell脚本为:stop-dfs.sh 。 19.(每空1分)hadoop创建多级目录(如:/a/b/c)的命令为:hadoop fs –mkdir –p /a/b/c 。 20.(每空1分)hadoop显示根目录命令为:hadoop fs –lsr 。 21.(每空1分)hadoop包含的四大模块分别是:Hadoop common 、HDFS 、

Hadoop试题题库

1.以下哪一项不属于 A. 单机(本地)模式 B. 伪分布式模式 C. 互联模式 D. 分布式模式 Hadoop 可以运行的模式 2. Hado op 的作者是下面哪一位 A. Marti n Fowler B. Doug cutt ing C. Kent Beck D. Grace Hopper A. TaskTracker B. DataNode C. Secon daryNameNode D. Jobtracker 4. HDFS 默认Block Size 的大小是 A. 32MB B. 64MB C. 128MB D. 256M 5.下列哪项通常是集群的最主要瓶颈 A. CPU 8. HDFS 是基于流数据模式访问和处理超大文件的需求而开发的,具有高容错、高可靠性、 高可扩展性、高吞吐率等特征,适合的读写任务是 _D ______ o 3.下列哪个程序通常与 NameNode 在同一个节点启动 B. C. D. 网络 磁盘IO 内存 6. F 列关于 A. Map Reduce B. Map Reduce C. Map Reduce D. Map Reduce Map Reduce 说法不正确的是 _ 是一种计算框架 来源于google 的学术论文 程序只能用 java 语言编写 隐藏了并行计算的细节,方便使用

A.—次写入, B.多次写入, C.多次写入, D.—次写入,少次读少次读

7. HBase依靠 A ________ 存储底层数据。 A. HDFS B.Hadoop C.Memory D. Map Reduce 8. HBase依赖 D 提供强大的计算能力。 A. Zookeeper B.Chubby C.RPC D. Map Reduce 9. HBase依赖 A 提供消息通信机制 A.Zookeeper B.Chubby C. RPC D. Socket 10.下面与 HDFS类似的框架是 A. NTFS B. FAT32 C. GFS D. EXT3 11.关于 SecondaryNameNode 下面哪项是正确的 A.它是NameNode的热备 B.它对内存没有要求 C.它的目的是帮助 NameNode合并编辑日志,减少NameNode启动时间 D.SecondaryNameNode 应与 NameNode 部署到一个节点 12.大数据的特点不包括下面哪一项巨大 的数据量多结构化数据 A. B. C. D. 增长速度快价值密度高

Hadoop分布式文件系统:架构和设计

Hadoop分布式文件系统:架构和设计 引言 (2) 一前提和设计目标 (2) 1 hadoop和云计算的关系 (2) 2 流式数据访问 (2) 3 大规模数据集 (2) 4 简单的一致性模型 (3) 5 异构软硬件平台间的可移植性 (3) 6 硬件错误 (3) 二HDFS重要名词解释 (3) 1 Namenode (4) 2 secondary Namenode (5) 3 Datanode (6) 4 jobTracker (6) 5 TaskTracker (6) 三HDFS数据存储 (7) 1 HDFS数据存储特点 (7) 2 心跳机制 (7) 3 副本存放 (7) 4 副本选择 (7) 5 安全模式 (8) 四HDFS数据健壮性 (8) 1 磁盘数据错误,心跳检测和重新复制 (8) 2 集群均衡 (8) 3 数据完整性 (8) 4 元数据磁盘错误 (8) 5 快照 (9)

引言 云计算(cloud computing),由位于网络上的一组服务器把其计算、存储、数据等资源以服务的形式提供给请求者以完成信息处理任务的方法和过程。在此过程中被服务者只是提供需求并获取服务结果,对于需求被服务的过程并不知情。同时服务者以最优利用的方式动态地把资源分配给众多的服务请求者,以求达到最大效益。 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS 能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 一前提和设计目标 1 hadoop和云计算的关系 云计算由位于网络上的一组服务器把其计算、存储、数据等资源以服务的形式提供给请求者以完成信息处理任务的方法和过程。针对海量文本数据处理,为实现快速文本处理响应,缩短海量数据为辅助决策提供服务的时间,基于Hadoop云计算平台,建立HDFS分布式文件系统存储海量文本数据集,通过文本词频利用MapReduce原理建立分布式索引,以分布式数据库HBase 存储关键词索引,并提供实时检索,实现对海量文本数据的分布式并行处理.实验结果表 明,Hadoop框架为大规模数据的分布式并行处理提供了很好的解决方案。 2 流式数据访问 运行在HDFS上的应用和普通的应用不同,需要流式访问它们的数据集。HDFS的设计中更多的考虑到了数据批处理,而不是用户交互处理。比之数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。 3 大规模数据集 运行在HDFS上的应用具有很大的数据集。HDFS上的一个典型文件大小一般都在G字节至T字节。因此,HDFS被调节以支持大文件存储。它应该能提供整体上高的数据传输带宽,能在一个集群里扩展到数百个节点。一个单一的HDFS实例应该能支撑数以千万计的文件。

Hadoop云计算平台搭建最详细过程(共22页)

Hadoop云计算平台及相关组件搭建安装过程详细教程 ——Hbase+Pig+Hive+Zookeeper+Ganglia+Chukwa+Eclipse等 一.安装环境简介 根据官网,Hadoop已在linux主机组成的集群系统上得到验证,而windows平台是作为开发平台支持的,由于分布式操作尚未在windows平台上充分测试,所以还不作为一个生产平台。Windows下还需要安装Cygwin,Cygwin是在windows平台上运行的UNIX模拟环境,提供上述软件之外的shell支持。 实际条件下在windows系统下进行Hadoop伪分布式安装时,出现了许多未知问题。在linux系统下安装,以伪分布式进行测试,然后再进行完全分布式的实验环境部署。Hadoop完全分布模式的网络拓补图如图六所示: (1)网络拓补图如六所示: 图六完全分布式网络拓补图 (2)硬件要求:搭建完全分布式环境需要若干计算机集群,Master和Slaves 处理器、内存、硬盘等参数要求根据情况而定。 (3)软件要求 操作系统64位版本:

并且所有机器均需配置SSH免密码登录。 二. Hadoop集群安装部署 目前,这里只搭建了一个由三台机器组成的小集群,在一个hadoop集群中有以下角色:Master和Slave、JobTracker和TaskTracker、NameNode和DataNode。下面为这三台机器分配IP地址以及相应的角色: ——master,namenode,jobtracker——master(主机名) ——slave,datanode,tasktracker——slave1(主机名) ——slave,datanode,tasktracker——slave2(主机名) 实验环境搭建平台如图七所示:

Hadoop最全面试题整理(附目录)

Hadoop面试题目及答案(附目录) 选择题 1.下面哪个程序负责HDFS 数据存储。 a)NameNode b)Jobtracker c)Datanode d)secondaryNameNode e)tasktracker 答案C datanode 2. HDfS 中的block 默认保存几份? a)3 份b)2 份c)1 份d)不确定 答案A 默认3 份 3.下列哪个程序通常与NameNode 在一个节点启动? a)SecondaryNameNode b)DataNode c)TaskTracker d)Jobtracker 答案D 分析:hadoop 的集群是基于master/slave 模式,namenode 和jobtracker 属于master,datanode 和tasktracker 属于slave,master 只有一个,而slave 有多个SecondaryNameNode 内存需求和NameNode 在一个数量级上,所以通常secondaryNameNode(运行在单独的物理机器上)和NameNode 运行在不同的机器上。 JobTracker 和TaskTracker JobTracker 对应于NameNode,TaskTracker 对应于DataNode,DataNode 和NameNode 是针对数据存放来而言的,JobTracker 和TaskTracker 是对于MapReduce 执行而言的。mapreduce 中几个主要概念,mapreduce 整体上可以分为这么几条执行线索:jobclient,JobTracker 与TaskTracker。 1、JobClient 会在用户端通过JobClient 类将应用已经配置参数打包成jar 文件存储到hdfs,并把路径提交到Jobtracker,然后由JobTracker 创建每一个Task(即MapTask 和ReduceTask)并将它们分发到各个TaskTracker 服务中去执行。 2、JobTracker 是一个master 服务,软件启动之后JobTracker 接收Job,负责调度Job 的每一个子任务task 运行于TaskTracker 上,并监控它们,如果发现有失败的task 就重新运行它。一般情况应该把JobTracker 部署在单独的机器上。 3、TaskTracker 是运行在多个节点上的slaver 服务。TaskTracker 主动与JobTracker 通信,接收作业,并负责直接执行每一个任务。TaskTracker 都需要运行在HDFS 的DataNode 上。 4. Hadoop 作者 a)Martin Fowler b)Kent Beck c)Doug cutting 答案C Doug cutting 5. HDFS 默认Block Size a)32MB b)64MB c)128MB 答案:B 6. 下列哪项通常是集群的最主要瓶颈 a)CPU b)网络c)磁盘IO d)内存 答案:C 磁盘 首先集群的目的是为了节省成本,用廉价的pc 机,取代小型机及大型机。小型机和大型机

Hadoop试题试题库

1. 以下哪一项不属于Hadoop可以运行的模式___C___。 A. 单机(本地)模式 B. 伪分布式模式 C. 互联模式 D. 分布式模式 2. Hadoop 的作者是下面哪一位__B____。 A. Martin Fowler B. Doug cutting C. Kent Beck D. Grace Hopper 3. 下列哪个程序通常与NameNode 在同一个节点启动__D___。 A. TaskTracker B. DataNode C. SecondaryNameNode D. Jobtracker 4. HDFS 默认Block Size 的大小是___B___。 A.32MB B.64MB C.128MB D.256M 5. 下列哪项通常是集群的最主要瓶颈____C__。 A. CPU B. 网络 C. 磁盘IO D. 内存 6. 下列关于MapReduce说法不正确的是_____C_。 A. MapReduce 是一种计算框架 B. MapReduce 来源于google 的学术论文 C. MapReduce 程序只能用java 语言编写 D. MapReduce 隐藏了并行计算的细节,方便使用 8. HDFS 是基于流数据模式访问和处理超大文件的需求而开发的,具有高容错、高可靠性、高可扩展性、高吞吐率等特征,适合的读写任务是__D____。 A.一次写入,少次读 B.多次写入,少次读 C.多次写入,多次读 D.一次写入,多次读

7. HBase 依靠__A____存储底层数据。 A. HDFS B. Hadoop C. Memory D. MapReduce 8. HBase 依赖___D___提供强大的计算能力。 A. Zookeeper B. Chubby C. RPC D. MapReduce 9. HBase 依赖___A___提供消息通信机制 A. Zookeeper B. Chubby C. RPC D. Socket 10. 下面与HDFS类似的框架是___C____? A. NTFS B. FAT32 C. GFS D. EXT3 11. 关于SecondaryNameNode 下面哪项是正确的___C___。 A. 它是NameNode 的热备 B. 它对内存没有要求 C. 它的目的是帮助NameNode 合并编辑日志,减少NameNode 启动时间 D. SecondaryNameNode 应与NameNode 部署到一个节点 12. 大数据的特点不包括下面哪一项___D___。 A. 巨大的数据量 B. 多结构化数据 C. 增长速度快 D. 价值密度高 HBase测试题 9. HBase 来源于哪一项? C

基于Hadoop的分布式文件系统

龙源期刊网 https://www.doczj.com/doc/4b5161004.html, 基于Hadoop的分布式文件系统 作者:陈忠义 来源:《电子技术与软件工程》2017年第09期 摘要HDFS是Hadoop应用用到的一个最主要的分布式存储系统,Hadoop分布式文件系 统具有方便、健壮、可扩展性、容错性能好、操作简单、成本低廉等许多优势。。深入了解HDFS的工作原理对在特定集群上改进HDFS的运行性能和错误诊断都有极大的帮助。本文介绍了HDFS的主要设计理念、主要概念及其高可靠性的实现等。 【关键词】Hadoop 分布式文件系统 Hadoop是新一代的大数据处理平台,在近十年中已成为大数据革命的中心,它不仅仅承担存储海量数据,还通过分析从中获取有价值信息。进行海量计算需要一个稳定的,安全的数据容器,管理网络中跨多台计算机存储的文件系统称为分布式文件系统。Hadoop分布式文件系统(Hadoop Distributed File System)运应而生,它是Hadoop的底层实现部分,存储Hadoop 集群中所有存储节点上的文件。 1 HDFS的设计理念 面对存储超大文件,Hadoop分布式文件系统采用了流式数据访问模式。所谓流式数据,简单的说就是像流水一样,数据一点一点“流”过来,处理数据也是一点一点处理。如果是全部收到数据以后再进行处理,那么延迟会很大,而且会消耗大量计算机内存。 1.1 存储超大文件 这里的“超大文件”通常达到几百GB甚至达到TB大小的文件。像大型的应用系统,其存储超过PB级数据的Hadoop集群比比皆是。 1.2 数据访问模式 最高效的访问模式是一次写入、多次读取。HDFS的构建思路也是这样的。HDFS存储的数据集作为Hadoop的分析对象。在数据集生成以后,采用各种不同分析方法对该数据集进行长时间分析,而且分析涉及到该数据集的大部分数据或者全部数据。面对庞大数据,时间延迟是不可避免的,因此,Hadoop不适合运行低时间延迟数据访问的应用。 1.3 运行在普通廉价的服务器上 HDFS设计理念之一就是让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用。

Hadoop入门—Linux下伪分布式计算的安装与wordcount的实例展示

开始研究一下开源项目hadoop,因为根据本人和业界的一些分析,海量数据的分布式并行处理是趋势,咱不能太落后,虽然开始有点晚,呵呵。首先就是安装和一个入门的小实例的讲解,这个恐怕是我们搞软件开发的,最常见也最有效率地入门一个新鲜玩意的方式了,废话不多说开始吧。 本人是在ubuntu下进行实验的,java和ssh安装就不在这里讲了,这两个是必须要安装的,好了我们进入主题安装hadoop: 1.下载hadoop-0.20.1.tar.gz: https://www.doczj.com/doc/4b5161004.html,/dyn/closer.cgi/hadoop/common/ 解压:$ tar –zvxf hadoop-0.20.1.tar.gz 把Hadoop 的安装路径添加到环/etc/profile 中: export HADOOP_HOME=/home/hexianghui/hadoop-0.20.1 export PATH=$HADOOP_HOME/bin:$PATH 2.配置hadoop hadoop 的主要配置都在hadoop-0.20.1/conf 下。 (1)在conf/hadoop-env.sh 中配置Java 环境(namenode 与datanode 的配置相同): $ gedit hadoop-env.sh $ export JAVA_HOME=/home/hexianghui/jdk1.6.0_14 3.3)配置conf/core-site.xml, conf/hdfs-site.xml 及conf/mapred-site.xml(简单配置,datanode 的配置相同) core-site.xml: hadoop.tmp.dir /home/yangchao/tmp A base for other temporary directories. https://www.doczj.com/doc/4b5161004.html, hdfs://localhost:9000 hdfs-site.xml:( replication 默认为3,如果不修改,datanode 少于三台就会报错)

07 hadoop完全分布式安装第七步:zookeeper分布式配置

实验七 zookeeper分布式的配置 tar -zxvf zookeeper-3.4.5.tar.gz mv zookeeper-3.4.5 zookeeper cd zookeeper mkdir data mkdir logs 三、集群模式 集群模式就是在不同主机上安装zookeeper然后组成集群的模式;下边以在192.168.1.1,192.168.1.2,192.168.1.3三台主机为例。 zookeeper 配置 1.Zookeeper服务集群规模不小于三个节点,要求各服务之间系统时间要保持一致。 2.在master的/home/chenlijun目录下,解压缩zookeeper(执行命令tar –zvxf zooke eper.tar.gz) 3.设置环境变量 打开/etc/profile文件!内容如下:

[html]view plain copy 1.#set java & hadoop 2. 3.export JAVA_HOME=/home/chenlijun/java/ 4. 5.export HADOOP_HOME=/home/chenlijun/hadoop 6. 7.export ZOOKEEPER_HOME=/home/chenlijun/zookeeper 8. 9.export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH 注:修改完后profile记得执行source /etc/profile 4.在解压后的zookeeper的目录下进入conf目录修改配置文件 更名操作:mv zoo_sample.cfg zoo.cfg 5.编辑zoo.cfg (vi zoo.cfg) 修改dataDir=/home/chenlijun/zookeeper/data/ 新增server.0=master:2888:3888 server.1=slave1:2888:3888 server.2=slave2:2888:3888 文件如下:

Hadoop分布式文件系统:架构和设计外文翻译

外文翻译 原文来源The Hadoop Distributed File System: Architecture and Design 中文译文Hadoop分布式文件系统:架构和设计 姓名 XXXX 学号 200708202137 2013年4月8 日

英文原文 The Hadoop Distributed File System: Architecture and Design Source:https://www.doczj.com/doc/4b5161004.html,/docs/r0.18.3/hdfs_design.html Introduction The Hadoop Distributed File System (HDFS) is a distributed file system designed to run on commodity hardware. It has many similarities with existing distributed file systems. However, the differences from other distributed file systems are significant. HDFS is highly fault-tolerant and is designed to be deployed on low-cost hardware. HDFS provides high throughput access to application data and is suitable for applications that have large data sets. HDFS relaxes a few POSIX requirements to enable streaming access to file system data. HDFS was originally built as infrastructure for the Apache Nutch web search engine project. HDFS is part of the Apache Hadoop Core project. The project URL is https://www.doczj.com/doc/4b5161004.html,/core/. Assumptions and Goals Hardware Failure Hardware failure is the norm rather than the exception. An HDFS instance may consist of hundreds or thousands of server machines, each storing part of the file system’s data. The fact that there are a huge number of components and that each component has a non-trivial probability of failure means that some component of HDFS is always non-functional. Therefore, detection of faults and quick, automatic recovery from them is a core architectural goal of HDFS. Streaming Data Access Applications that run on HDFS need streaming access to their data sets. They are not general purpose applications that typically run on general purpose file systems. HDFS is designed more for batch processing rather than interactive use by users. The emphasis is on high throughput of data access rather than low latency of data access. POSIX imposes many hard requirements that are not

实验3 Hadoop安装与配置2-伪分布式

实验报告封面 课程名称: Hadoop大数据处理课程代码: JY1124 任课老师:宁穗实验指导老师: 宁穗 实验报告名称:实验3 Hadoop安装与配置2 学生: 学号: 教学班: 递交日期: 签收人: 我申明,本报告的实验已按要求完成,报告完全是由我个人完成,并没有抄袭行为。我已经保留了这份实验报告的副本。 申明人(签名): 实验报告评语与评分: 评阅老师签名:

一、实验名称:Hadoop安装与配置 二、实验日期:2015年9 月25 日 三、实验目的: Hadoop安装与配置。 四、实验用的仪器和材料: 安装环境:以下两个组合之一 1.硬件环境:存ddr3 4G及以上的x86架构主机一部 系统环境:windows 、linux或者mac os x 软件环境:运行vmware或者virtualbox (2) 存ddr 1g及以上的主机两部及以上 五、实验的步骤和方法: 本次实验重点在ubuntu中安装jdk以及hadoop。 一、关闭防火墙 sudo ufw disable iptables -F 二、jdk的安装 1、普通用户下添加grid用户

2、准备jdk压缩包,把jdk压缩包放到以上目录(此目录可自行设置) 3、将jdk压缩包解压改名 改名为jdk:mv jdk1.7.0_45 jdk 移动到/usr目录下:mv jdk /usr(此目录也可自行设置,但需与配置文件一致)4、设置jdk环境变量 此采用全局设置方法,更改/etc/profile文件 sudo gedit /etc/profile 添加(根据情况自行设置) export JA VA_HOME=/usr/jdk export JRE_HOME=/usr/ jdk/jre export CLASSPATH=.:$JA V A_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PA TH=$JA V A_HOME/bin: $JRE_HOME/ bin: $PATH 然后保存。 5、检验是否安装成功 java -version 二、ssh免密码 1、退出root用户,su grid 生成密钥 ssh-keygen –t rsa

基于hadoop的分布式存储平台的搭建与验证

毕业设计(论文) 中文题目:基于hadoop的分布式存储平台的搭建与验证 英文题目:Setuping and verification distributed storage platform based on hadoop 学院:计算机与信息技术 专业:信息安全 学生姓名: 学号: 指导教师: 2018 年06 月01 日 1

任务书 题目:基于hadoop的分布式文件系统的实现与验证 适合专业:信息安全 指导教师(签名): 毕业设计(论文)基本内容和要求: 本项目的目的是要在单独的一台计算机上实现Hadoop多节点分布式计算系统。 基本原理及基本要求如下: 1.实现一个NameNode NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。 实际的 I/O 事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。当外部客户机发送请求要求创建文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址作为响应。这个 NameNode 还会通知其他将要接收该块的副本的 DataNode。 2。实现若干个DataNode DataNode 也是一个通常在 HDFS 实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。 DataNode 响应来自 HDFS 客户机的读写请求。它们还响应来自NameNode 的创建、删除和复制块的命令。NameNode 依赖来自每个DataNode 的定期心跳(heartbeat)消息。每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。如果DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。 具体设计模块如下:

Hadoop分布式文件系统方案

Hadoop分布式文件系统:架构和设计要点 Hadoop分布式文件系统:架构和设计要点 原文:https://www.doczj.com/doc/4b5161004.html,/core/docs/current/hdfs_design.html 一、前提和设计目标 1、硬件错误是常态,而非异常情况,HDFS可能是有成百上千的server组成,任何一个组件都有可能一直失效,因此错误检测和快速、自动的恢复是HDFS的核心架构目标。 2、跑在HDFS上的应用与一般的应用不同,它们主要是以流式读为主,做批量处理;比之关注数据访问的低延迟问题,更关键的在于数据访问的高吞吐量。 3、HDFS以支持大数据集合为目标,一个存储在上面的典型文件大小一般都在千兆至T字节,一个单一HDFS实例应该能支撑数以千万计的文件。 4、 HDFS应用对文件要求的是write-one-read-many访问模型。一个文件经过创建、写,关闭之后就不需要改变。这一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能。典型的如MapReduce框架,或者一个web crawler应用都很适合这个模型。 5、移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好,HDFS提供给应用这样的接口。 6、在异构的软硬件平台间的可移植性。 二、Namenode和Datanode HDFS采用master/slave架构。一个HDFS集群是有一个Namenode和一定数目的Datanode 组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。Datanode在Namenode的指挥下进行block的创建、删除和复制。Namenode和Datanode 都是设计成可以跑在普通的廉价的运行linux的机器上。HDFS采用java语言开发,因此可以部署在很大围的机器上。一个典型的部署场景是一台机器跑一个单独的Namenode节点,集群中的其他机器各跑一个Datanode实例。这个架构并不排除一台机器上跑多个Datanode,不过这比较少见。

相关主题
相关文档 最新文档