hadoop实战手册入门资料.doc

上传人:wj 文档编号:4841707 上传时间:2023-05-07 格式:DOC 页数:55 大小:858KB
下载 相关 举报
hadoop实战手册入门资料.doc_第1页
第1页 / 共55页
hadoop实战手册入门资料.doc_第2页
第2页 / 共55页
hadoop实战手册入门资料.doc_第3页
第3页 / 共55页
hadoop实战手册入门资料.doc_第4页
第4页 / 共55页
hadoop实战手册入门资料.doc_第5页
第5页 / 共55页
hadoop实战手册入门资料.doc_第6页
第6页 / 共55页
hadoop实战手册入门资料.doc_第7页
第7页 / 共55页
hadoop实战手册入门资料.doc_第8页
第8页 / 共55页
hadoop实战手册入门资料.doc_第9页
第9页 / 共55页
hadoop实战手册入门资料.doc_第10页
第10页 / 共55页
hadoop实战手册入门资料.doc_第11页
第11页 / 共55页
hadoop实战手册入门资料.doc_第12页
第12页 / 共55页
hadoop实战手册入门资料.doc_第13页
第13页 / 共55页
hadoop实战手册入门资料.doc_第14页
第14页 / 共55页
hadoop实战手册入门资料.doc_第15页
第15页 / 共55页
hadoop实战手册入门资料.doc_第16页
第16页 / 共55页
hadoop实战手册入门资料.doc_第17页
第17页 / 共55页
hadoop实战手册入门资料.doc_第18页
第18页 / 共55页
hadoop实战手册入门资料.doc_第19页
第19页 / 共55页
hadoop实战手册入门资料.doc_第20页
第20页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

hadoop实战手册入门资料.doc

《hadoop实战手册入门资料.doc》由会员分享,可在线阅读,更多相关《hadoop实战手册入门资料.doc(55页珍藏版)》请在冰点文库上搜索。

hadoop实战手册入门资料.doc

北京宽连十方数字技术有限公司

公开内部公开√

机密绝密

hadoop实战手册入门资料

北京宽连十方数字技术有限公司

技术研究部

(2011年7月)

目录

1 概述 4

1.1 什么是Hadoop?

4

1.2 为什么要选择Hadoop?

5

1.2.1 系统特点 5

1.2.2 使用场景 5

2 术语 5

3 Hadoop的单机部署 6

3.1 目的 6

3.2 先决条件 6

3.2.1 支持平台 6

3.2.2 所需软件 6

3.2.3 安装软件 7

3.3 下载 7

3.4 运行Hadoop集群的准备工作 7

3.5 单机模式的操作方法 7

3.6 伪分布式模式的操作方法 8

3.6.1 配置 8

3.6.2 免密码ssh设置 9

3.6.3 执行 9

4 Hadoop集群搭建过程手记 12

4.1 免密码SSH设置 12

4.2 Hadoop软件安装 12

4.3 Master(85)配置 13

4.4 Slave(60,245上)配置 14

4.5 初始化和启动hadoop集群 15

4.5.1 初始化文件系统 15

4.5.2 启动Hadoop 15

4.5.3 停止Hadoop 17

4.6 测试 17

4.7 管理界面与命令 19

4.7.1 hdfs运行状态界面 19

4.7.2 Map-reduce的运行状态界面 20

4.7.3 直接的命令行查看 20

4.7.1 运行的进程查看 21

5 架构分析 23

5.1 HDFS 23

5.1.1 HDFS的三个重要角色 24

5.1.2 HDFS设计特点 25

5.2 MapReduce 26

5.2.1 算法介绍 26

5.2.2 Hadoop框架下的mapreduce 28

5.3 综合架构分析 29

6 Hadoop的应用 31

7 系统维护 31

7.1 Hadoop的系统监控 31

7.2 Hadoop中的命令(Command)总结 32

7.3 NameNode与JobTracker单点故障说明 32

7.4 经验总结 32

7.5 如何在一个hadoop集群新增或删除一些机器而不重启 33

7.5.1 新增节点 33

7.5.2 删除节点 34

7.6 其它日常问题说明 36

7.6.1 datanode启动失败,各slave节点的namespaceIDs与masters不同 36

7.6.2 taskTracker和jobTracker启动失败 37

7.6.3 ShuffleError:

ExceededMAX_FAILED_UNIQUE_FETCHES;bailing-out 37

7.6.4 Toomanyfetch-failures 38

7.6.5 能够启动datanode,但无法访问,也无法结束的错误 38

7.6.6 java.io.IOException:

Couldnotobtainblock:

38

7.6.7 java.lang.OutOfMemoryError:

 Java heapspace 38

7.6.8 解决hadoopOutOfMemoryError问题:

39

7.6.9 Hadoopjava.io.IOException:

39

7.7 防火墙的端口开放要求 39

7.7.1 与HDFS有关的地址及端口属性 39

7.7.2 与MapReduce 有关的地址及端口属性 41

8 附录 42

8.1 hadoop历史 42

8.2 Hadoop大记事 43

8.3 Hadoop的几个主要子项目 44

8.4 官方集群搭建参考 44

8.4.1 配置文件 44

8.4.2 集群配置说明 44

1概述

作什么事情之前,第一步是要知道What(是什么),然后是Why(为什么),最后才是How(怎么做)。

避免将技术误用于不适合的场景,这一点非常重要。

1.1什么是Hadoop?

Hadoop由ApacheSoftwareFoundation公司于2005年秋天作为Lucene的子项目Nutch的一部分正式引入。

它受到最先由GoogleLab开发的MapReduce和GoogleFileSystem的启发。

2006年3月份,MapReduce和NutchDistributedFileSystem(NDFS)分别被纳入称为Hadoop的项目中。

Hadoop并不仅仅是一个用于存储的分布式文件系统,而是设计用来在由通用计算设备组成的大型集群上执行分布式应用的基础框架。

它由Apache基金会开发。

用户可以在不了解分布式底层细节的情况下,开发分布式程序。

充分利用集群的威力高速运算和存储。

简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。

下图是Hadoop的体系结构:

Hadoop框架中最核心的设计就是:

MapReduce和HDFS。

1)MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。

2)HDFS是Hadoop分布式文件系统(HadoopDistributedFileSystem)的缩写,为分布式计算存储提供了底层支持。

1.2为什么要选择Hadoop?

1.2.1系统特点

下面列举hadoop主要的一些特点:

1)扩容能力(Scalable):

能可靠地(reliably)存储和处理千兆字节(PB)数据。

2)成本低(Economical):

可以通过普通机器组成的服务器群来分发以及处理数据。

这些服务器群总计可达数千个节点。

3)高效率(Efficient):

通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。

4)可靠性(Reliable):

hadoop能自动地维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。

1.2.2使用场景

个人觉得最适合的就是海量数据的分析,其实Google最早提出MapReduce也就是为了海量数据分析。

同时HDFS最早是为了搜索引擎实现而开发的,后来才被用于分布式计算框架中。

海量数据被分割于多个节点,然后由每一个节点并行计算,将得出的结果归并到输出。

同时第一阶段的输出又可以作为下一阶段计算的输入,因此可以想象到一个树状结构的分布式计算图,在不同阶段都有不同产出,同时并行和串行结合的计算也可以很好地在分布式集群的资源下得以高效的处理。

2术语

1)Namenode:

HDFS采用master/slave架构。

一个HDFS集群是由一个Namenode和一定数目的Datanodes组成。

Namenode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。

Namenode执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录。

它也负责确定数据块到具体Datanode节点的映射

2)Datanode:

集群中的Datanode一般是一个节点一个,负责管理它所在节点上的存储。

HDFS暴露了文件系统的名字空间,用户能够以文件的形式在上面存储数据。

从内部看,一个文件其实被分成一个或多个数据块,这些块存储在一组Datanode上。

Datanode负责处理文件系统客户端的读写请求。

在Namenode的统一调度下进行数据块的创建、删除和复制。

3)Secondnamenode:

光从字面上来理解,很容易让一些初学者先入为主的认为:

SecondaryNameNode(snn)就是NameNode(nn)的热备进程。

其实不是。

snn是HDFS架构中的一个组成部分,但是经常由于名字而被人误解它真正的用途,其实它真正的用途,是用来保存namenode中对HDFSmetadata的信息的备份,并减少namenode重启的时间。

4)Jobtracker和Tasktracher:

 JobTracker是MapReduce框架中最主要的类之一,所有job的执行都由它来调度,而且Hadoop系统中只配置一个JobTracker应用。

 它们都是由一个master服务JobTracker和多个运行于多个节点的slaver服务TaskTracker两个类提供的服务调度的。

master负责调度job的每一个子任务task运行于slave上,并监控它们,如果发现有失败的task就重新运行它,slave则负责直接执行每一个task。

TaskTracker都需要运行在HDFS的DataNode上,而JobTracker则不需要,一般情况应该把JobTracker部署在单独的机器上。

3Hadoop的单机部署

参考:

http:

//hadoop.apache.org/common/docs/current/single_node_setup.html#Supported+Platforms

3.1目的

本章节的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等。

3.2先决条件

3.2.1支持平台

1)GNU/Linux是产品开发和运行的平台。

Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证。

2)Win32平台是作为开发平台支持的。

由于分布式操作尚未在Win32平台上充分测试,所以还不作为一个生产平台被支持。

3.2.2所需软件

Linux和Windows所需软件包括:

1.SunJavaTM1.6.x,必须安装。

2.ssh 必须安装并且保证 sshd一直运行,以便用Hadoop脚本管理远端Hadoop守护进程。

3.2.3安装软件

如果你的集群尚未安装所需软件,你得首先安装它们。

以Linux为例:

$sudoapt-getinstallssh 

$sudoapt-getinstallrsync

3.3下载

为了获取Hadoop的发行版,从Apache的某个镜像服务器上下载最近的 稳定发行版。

下载地址:

3.4运行Hadoop集群的准备工作

解压所下载的Hadoop发行版。

编辑 conf/hadoop-env.sh文件,至少需要将JAVA_HOME设置为Java安装根路径。

尝试如下命令:

$bin/hadoop 

将会显示hadoop 脚本的使用文档。

现在你可以用以下三种支持的模式中的一种启动Hadoop集群:

·单机模式

·伪分布式模式

·完全分布式模式

3.5单机模式的操作方法

默认情况下,Hadoop被配置成以非分布式模式运行的一个独立Java进程。

这对调试非常有帮助。

下面的实例将已解压的 conf 目录拷贝作为输入,查找并显示匹配给定正则表达式的条目。

输出写入到指定的output目录。

 

$mkdirinput 

$cpconf/*.xmlinput 

$bin/hadoopjarhadoop-examples-0.20.203.0.jargrepinputoutput'dfs[a-z.]+'

$catoutput/*

注:

语法不理解没关系看下面进一步说明

显示结果

1dfsadmin

3.6伪分布式模式的操作方法

Hadoop可以在单节点上以所谓的伪分布式模式运行,此时每一个Hadoop守护进程都作为一个独立的Java进程运行。

3.6.1配置

注:

以前的版本是hadoop-site.xml,可hadoop在0.20版本,配置文件由以前的hadoop-site.xml文件变成三个配置文件core-site.xml,hdfs-site.xml,mapred-site.xml.内在的原因是因为hadoop代码量越来越宠大,拆解成三个大的分支进行独立开发,配置文件也独立了

conf/core-site.xml:

fs.default.name

hdfs:

//localhost:

9000

conf/hdfs-site.xml:

dfs.replication

1

conf/mapred-site.xml:

mapred.job.tracker

localhost:

9001

3.6.2免密码ssh设置

现在确认能否不输入口令就用ssh登录localhost:

$sshlocalhost

如果不输入口令就无法用ssh登陆localhost,执行下面的命令:

$ssh-keygen-tdsa-P''-f~/.ssh/id_dsa 

$cat~/.ssh/id_dsa.pub>>~/.ssh/authorized_keys

3.6.3执行

首先使用 hadoop 命令对HadoopFileSystem(HDFS)进行格式化。

首先,请求namenode对DFS文件系统进行格式化。

在安装过程中完成了这个步骤,但是了解是否需要生成干净的文件系统是有用的。

[hadoop@TEST085hadoop-0.20.203.0]$bin/hadoopnamenode–format

注:

在确认请求之后,文件系统进行格式化并返回一些信息:

11/07/1217:

47:

12INFOnamenode.NameNode:

STARTUP_MSG:

/************************************************************

STARTUP_MSG:

StartingNameNode

STARTUP_MSG:

host=TEST085/202.102.110.206

STARTUP_MSG:

args=[-format]

STARTUP_MSG:

version=0.20.203.0

STARTUP_MSG:

build=http:

//svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203-r1099333;compiledby'oom'onWedMay407:

57:

50PDT2011

************************************************************/

11/07/1217:

47:

12INFOutil.GSet:

VMtype=32-bit

11/07/1217:

47:

12INFOutil.GSet:

2%maxmemory=19.33375MB

11/07/1217:

47:

12INFOutil.GSet:

capacity=2^22=4194304entries

11/07/1217:

47:

12INFOutil.GSet:

recommended=4194304,actual=4194304

11/07/1217:

47:

13INFOnamenode.FSNamesystem:

fsOwner=hadoop

11/07/1217:

47:

13INFOnamenode.FSNamesystem:

supergroup=supergroup

11/07/1217:

47:

13INFOnamenode.FSNamesystem:

isPermissionEnabled=true

11/07/1217:

47:

13INFOnamenode.FSNamesystem:

dfs.block.invalidate.limit=100

11/07/1217:

47:

13INFOnamenode.FSNamesystem:

isAccessTokenEnabled=falseaccessKeyUpdateInterval=0min(s),accessTokenLifetime=0min(s)

11/07/1217:

47:

13INFOnamenode.NameNode:

Cachingfilenamesoccuringmorethan10times

11/07/1217:

47:

13INFOcommon.Storage:

Imagefileofsize112savedin0seconds.

11/07/1217:

47:

13INFOcommon.Storage:

Storagedirectory/tmp/hadoop-hadoop/dfs/namehasbeensuccessfullyformatted.

11/07/1217:

47:

13INFOnamenode.NameNode:

SHUTDOWN_MSG:

/************************************************************

SHUTDOWN_MSG:

ShuttingdownNameNodeatTEST085/202.102.110.206

************************************************************/

接下来,启动Hadoop守护进程。

启动Hadoop守护进程:

[hadoop@TEST085hadoop-0.20.203.0]$bin/start-all.sh

注:

1)Hadoop守护进程的日志写入到 ${HADOOP_LOG_DIR} 目录(默认是 ${HADOOP_HOME}/logs)

2)启动hadoop,但ssh端口不是默认的22怎么样?

好在它可以配置。

在conf/hadoop-env.sh里改下。

如:

exportHADOOP_SSH_OPTS="-p1234"

浏览NameNode和JobTracker的网络接口,它们的地址默认为:

·NameNode - http:

//localhost:

50070/

·JobTracker - http:

//localhost:

50030/

将输入文件拷贝到分布式文件系统:

$bin/hadoopfs-putconfinput

运行发行版提供的示例程序:

$bin/hadoopjarhadoop-examples-0.20.203.0.jargrepinputoutput'dfs[a-z.]+'

查看输出文件:

将输出文件从分布式文件系统拷贝到本地文件系统查看:

$bin/hadoopfs-getoutputoutput 

$catoutput/*

或者

在分布式文件系统上查看输出文件:

$bin/hadoopfs-catoutput/*

完成全部操作后,停止守护进程:

$bin/stop-all.sh

Hadoop在这个伪分布式配置中启动5个守护进程:

namenode、secondarynamenode、datanode、jobtracker和tasktracker。

在启动每个守护进程时,会看到一些相关信息(指出存储日志的位置)。

每个守护进程都在后台运行。

图1说明完成启动之后伪分布式配置的架构。

图1.伪分布式Hadoop配置 

4Hadoop集群搭建过程手记

参考:

http:

//hadoop.apache.org/common/docs/r0.19.2/cn/cluster_setup.html

先用了三台服务器作了hadoop集群的部署测试,服务器有192.168.10.85(下面简称85),192.168.10.160(下面简称160),192.168.10.254(下面简称254),架构规化如下:

1)85作为NameNode,SecondaryNameNode,JobTracker;

2)160和254作为DataNode,TaskTracker

4.1免密码SSH设置

打通ssh,让85免登陆到160,254。

打通过程如下:

1)名称节点85和数据节点(160,254)各自创建用户hadoop,使用相同的密码。

 

2)以hadoop用户名登陆名称节点(85)执行 ssh-keygen -t rsa 然后一路回车,完毕后生成文件.ssh/id_rsa.pub,把这个文件复制到当前位置,命名为authorized_keys;然后执行命令 ssh127.0.0.1,如果不需要密码则直接登陆进去的话,就达到要求;否则需检查authorized_keys的权限,看是否为644(-rw-r--r--)。

3)接下来,同样也hadoop用户登陆数据节点服务器(160,254),创建.ssh目录,并给与600权限(chmod600.ssh); 再把名称服务器上的authorized_keys复制到目录数据节点(160,254)./ssh,注意权限和目录结构跟名称节点保持一致,然后再从名称节点用ssh登陆数据节点,如果不需要密码能登陆成功,则ssh的配置结束。

4.2Hadoop软件安装

以hadoop用户登陆,将安装软件解压到集群内的所有机器上,编辑 conf/hadoop-env.sh文件,至少需要将JAVA_HOME设置为Java安装根路径(安装过程参考“3hadoop的单机部署”)。

我们用HADOOP_HOME指定安装的根路径。

通常集群里的所有机器的HADOOP_HOME路径相同,安装路径定为:

/home/hadoop/hadoop-0.20.203.0

1)进行JDK和内存占用配置:

conf/hadoop-env.sh需要修改的内容:

#Thejavaimplementationtouse. Required.

exportJAVA_HOME=/usr/local/java  --修改成你自己jdk安装的目录

#Themaximumamountofheaptouse,inMB.Defaultis1000.

exportHADOO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2