版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.Hadoop 进行分布式数据处理,第 2 部分 进Hadoop分布式计算架构的真正实力在于其分布性。换句话说,向工作并行分布多个节点的才能使Hadoop可以应用于大型根底设施以及大量数据的处理。本文首先对一个分布式Hadoop架构进展分解,然后讨论分布式配置和使用。分布式Hadoop架构根据用Hadoop进展分布式数据处理,第1部分:入门,所有Hadoop守护进程都在同一个主机上运行。尽管不运用Hadoop的并行性,这个伪分布式配置提供一种简单的方式来以最少的设置测试Hadoop的功能。如今,让我们使用机器集群讨论一下Hadoop的并行性。根据第1部分,Hadoop配置定义了让所有Hadoo
2、p守护进程在一个节点上运行。因此,让我们首先看一下如何自然分布Hadoop来执行并行操作。在一个分布式Hadoop设置中,您有一个主节点和一些从节点见图1。图1.Hadoop主从节点分解如图1所示,主节点包括名称节点、附属名称节点和jobtracker守护进程即所谓的主守护进程。此外,这是您为本演示管理集群所用的节点使用Hadoop实用程序和阅读器。从节点包括tasktracker和数据节点附属守护进程。两种设置的不同之处在于,主节点包括提供Hadoop集群管理和协调的守护进程,而从节点包括实现Hadoop文件系统HDFS存储功能和MapReduce功能数据处理功能的守护进程。对于该演示,在一
3、个LAN上创立一个主节点和两个从节点。设置如图2所示。如今,我们来讨论用于多节点分布的Hadoop的安装和配置。图2.Hadoop集群配置为简化部署,要运用虚拟化技术,该技术有几个好处。尽管在该设置中使用虚拟化技术看不出性能优势,但是它可以创立一个Hadoop安装,然后为其他节点克隆该安装。为此,您的Hadoop集群应显示如下:在一个主机上的虚拟机监控程序上下文中将主从节点作为虚拟机VM运行见图3。图3.虚拟环境中的Hadoop集群配置回页首晋级Hadoop在用Hadoop进展分布式数据处理,第1部分:入门中,我们安装了在一个节点上运行的Hadoop的一个特殊分布伪配置。在本文中,我们要更新分
4、布式配置。假设您没有看过本系列的第1部分,那么请阅读第1部分,理解如何首先安装Hadoop伪配置。在伪配置中,您没有进展任何配置,因为单个节点已经过预先配置。如今,您需要更新配置。首先,使用update-alternatives命令检查当前配置,如清单1所示。该命令告诉您,配置在使用conf.pseudo最高优先级。清单1.检查当前Hadoop配置$update-alternatives-display hadoop-0.20-conf hadoop-0.20-conf-status is auto.link currently points to/etc/hadoop-0.20/conf.p
5、seudo/etc/hadoop-0.20/conf.empty-priority 10/etc/hadoop-0.20/conf.pseudo-priority 30 Currentbest'version is/etc/hadoop-0.20/conf.pseudo.$下一步,通过复制现有配置本例中为conf.empty,如清单1所示创立一个新配置:$sudo cp-r/etc/hadoop-0.20/conf.empty/etc/hadoop-0.20/conf.dist$最后,激活并检查新配置:清单2.激活并检查Hadoop配置$sudo update-alternatives
6、-install/etc/hadoop-0.20/conf hadoop-0.20-conf/etc/hadoop-0.20/conf.dist 40$update-alternatives-display hadoop-0.20-conf hadoop-0.20-conf-status is auto.link currently points to/etc/hadoop-0.20/conf.dist/etc/hadoop-0.20/conf.empty-priority 10/etc/hadoop-0.20/conf.pseudo-priority 30/etc/hadoop-0.20/c
7、onf.dist-priority 40 Currentbest'version is/etc/hadoop-0.20/conf.dist.$如今,您有一个名为conf.dist的新配置,您要将其用于您的新分布式配置。此时该节点运行于一个虚拟环境中,将该节点克隆到另外两个要充当数据节点的节点中。回页首配置Hadoop以实现分布式操作下一步是要使所有节点互联互通。这可以/etc/hadoop-0.20/conf.dist/中的两个名为masters和slaves的文件中实现。本例中的三个节点的IP地址是静态分配的,如清单3所示来自/etc/hosts:清单3.该设置的Hadoop节点/e
8、tc/hostsmaster 33 slave1 34 slave2 35因此,在主节点上,更新/etc/hadoop-0.20/conf.dist/masters来确定主节点,如下所示:master然后在/etc/hadoop-0.20/conf.dist/slaves中确定从节点,其中包括以下两行:slave1 slave2接下来,从每个节点上,将Secure Shellssh连接到所有其他节点,确保pass-phraseless ssh在运行。所有这些文件masters,slaves都由本系列第1部分中使用过的
9、Hadoop启动和停顿工具使用。下一步,在/etc/hadoop-0.20/conf.dist子目录中继续进展Hadoop配置。以下变更需要应用于所有节点主节点和从节点,如同Hadoop文档中所定义的。首先,在core-site.xml文件清单4中确定HDFS主节点,它定义名称节点的主机和端口注意主节点的IP地址的使用。core-site.xml文件定义Hadoop的核心属性。清单4.在core-site.xml中定义HDFS主节点configuration property name name value hdfs:/master:54310 value de
10、scription The name and URI of the default FS./description property configuration下一步,确认MapReduce jobtracker。jobtracker位于其自己的节点上,但对于本配置,将其放在主节点上,如清单5所示。mapred-site.xml文件包含MapReduce属性。清单5.在mapred-site.xml中定义MapReduce jobtracker configuration property name mapred.job.tracker name value master:54311 valu
11、e description Map Reduce jobtracker description property configuration最后,定义默认复制因子清单6。该值定义将创立的副本数,一般小于3。在本例中,将其定义为2数据节点的数量。该值在包含HDFS属性的hdfs-site.xml中定义。清单6.在hdfs-site.xml中定义默认数据副本configuration property name dfs.replication name value 2value description Default block replication description property c
12、onfiguration配置项如清单4所示,分布式设置所需的元素见清单5和清单6。Hadoop在这里提供大量配置选项,支持您按需定制整个环境。参考资料部分含有关于这些选项的更多信息。完成配置之后,下一步是要格式化名称节点HDFS主节点。对于该操作,使用hadoop-0.20实用程序指定名称节点和操作-format:清单7.格式化名称节点usermaster:#sudo su-rootmaster:#hadoop-0.20 namenode-format 10/05/11 18:39:58 INFO namenode.NameNode:STARTUP_MSG:/*STARTUP_MSG:Star
13、ting NameNode STARTUP_MSG:host=master/ STARTUP_MSG:args=-formatSTARTUP_MSG:version=0.20.2+228 STARTUP_MSG:build=-r cfc3233ece0769b11af9add 328261295aaf4d1ad;*/10/05/11 18:39:59 INFO namenode.FSNamesystem:fsOwner=root,root 10/05/11 18:39:59 INFO namenode.FSNamesystem:supergroup=supergroup 10
14、/05/11 18:39:59 INFO namenode.FSNamesystem:isPermissionEnabled=true 10/05/11 18:39:59 INFO common.Storage:Image file of size 94 saved in 0seconds.10/05/11 18:39:59 INFO common.Storage:Storage directory/tmp/hadoop-root/dfs/name has been successfully formatted.10/05/11 18:39:59 INFO namenode.NameNode:
15、SHUTDOWN_MSG:/*SHUTDOWN_MSG:Shutting down NameNode at master/*/rootmaster:#格式化名称节点之后,就可以启动Hadoop守护进程了。可以对第1部分中的伪分布式配置执行同样的操作,但进程为分布式配置完成同样的工作。注意,这里的代码启动名称节点和附属名称节点正如jps命令所指示:清单8.启动名称节点rootmaster:#/usr/lib/hadoop-0.20/bin/start-dfs.sh starting namenode,logging to/usr/lib/hadoop-0.20/bin/./lo
16、gs/hadoop-root-namenode-mtj-desktop.out 35:starting datanode,logging to/usr/lib/hadoop-0.20/bin/./logs/hadoop-root-datanode-mtj-desktop.out 34:starting datanode,logging to/usr/lib/hadoop-0.20/bin/./logs/hadoop-root-datanode-mtj-desktop.out 33:starting secondary
17、namenode,logging to/usr/lib/hadoop-0.20/logs/hadoop-root-secondarynamenode-mtj-desktop.out rootmaster:#jps 7367 NameNode 7618 Jps 7522 SecondaryNameNode rootmaster:#如今,假设使用jps节点检测其中一个从节点数据节点,您会看到每个节点上都有一个数据节点守护进程:清单9.检测其中一个从节点上的数据节点rootslave1:#jps 10562 Jps 10451 DataNode rootslave1:#下一步是要启动MapReduc
18、e守护进程jobtracker和tasktracker。如清单10所示执行该操作。注意,脚本启动主节点上的jobtracker正如配置所定义的;参见清单5和每个从节点上的tasktrackers。主节点上的一个jps命令显示jobtracker正在运行。清单10.启动MapReduce守护进程rootmaster:#/usr/lib/hadoop-0.20/bin/start-mapred.sh starting jobtracker,logging to/usr/lib/hadoop-0.20/logs/hadoop-root-jobtracker-mtj-desktop.out 192.1
19、68.108.134:starting tasktracker,logging to/usr/lib/hadoop-0.20/bin/./logs/hadoop-root-tasktracker-mtj-desktop.out 35:starting tasktracker,logging to/usr/lib/hadoop-0.20/bin/./logs/hadoop-root-tasktracker-mtj-desktop.out rootmaster:#jps 7367 NameNode 7842 JobTracker 7938 Jps 7522 Seconda
20、ryNameNode rootmaster:#最后,使用jps检查一个从节点。这里您可以看到,一个tasktracker守护进程将数据节点守护进程联接到每个从数据节点上:清单11.检测其中一个从节点上的数据节点rootslave1:#jps 7785 DataNode 8114 Jps 7991 TaskTracker rootslave1:#启动脚本、节点和启动的守护进程之间的关系如图4所示。如您所见,start-dfs脚本启动名称节点和数据节点,而start-mapred脚本启动jobtracker和tasktrackers。图4.每个节点的启动脚本和守护进程的关系回页首测试HDFS既然H
21、adoop已经开场在整个集群中运行了,您可以运行一些测试来确保其正常运作见清单12。首先,通过hadoop-0.20实用程序发出一个文件系统命令fs,并恳求一个dfdisk free操作。与在Linux®;中一样,该命令仅确定特定设备的已用空间和可用空间。因此,对于新格式化的文件系统,就没有已用空间。下一步,在HDFS的根上执行一个ls操作,创立一个子目录,列出其内容,并删除它。最后,在hadoop-0.20实用程序内,您可以使用fsck命令在HDFS上执行一个fsck文件系统检查。这一切-以及各种其他信息比方检测到两个数据节点-都告诉您文件系统是正常的。清单12.检查HDFS
22、 rootmaster:#hadoop-0.20 fs-df File system Size Used Avail Use%/16078839808 73728 3490967552 0%rootmaster:#hadoop-0.20 fs-ls/Found 1items drwxr-xr-x-root supergroup 02020-05-12 12:16/tmp rootmaster:#hadoop-0.20 fs-mkdir test rootmaster:#hadoop-0.20 fs-ls test rootmaster:#hadoop-0.20 fs-rmr test Dele
23、ted hdfs:/33:54310/user/root/test rootmaster:#hadoop-0.20 fsck/.Status:HEALTHY Total size:4 BTotal dirs:6 Total files:1 Total blocksvalidated:1avg.block size 4BMinimally replicated blocks:1100.0%Over-replicated blocks:00.0%Under-replicated blocks:00.0%Mis-replicated blocks:00.0%Default
24、replication factor:2 Average block replication:2.0 Corrupt blocks:0 Missing replicas:00.0%Number of data-nodes:2 Number of racks:1 The filesystem under path'/'is HEALTHY rootmaster:#回页首执行一个MapReduce作业下一步是执行一个MapReduce作业,以验证整个设置运作正常见清单13。该进程的第一步是要引入一些数据。因此,首先创立一个目录来包容您的输入数据称为input,创立方式是使用hado
25、op-0.20实用程序的mkdir命令。然后,使用hadoop-0.20的put命令将两个文件放到HDFS中。您可以使用Hadoop实用程序的ls命令检查输入目录的内容。清单13.生成输入数据rootmaster:#hadoop-0.20 fs-mkdir input rootmaster:#hadoop-0.20 fs-put/usr/src/linux-source-2.6.27/Doc*/memory-barriers.txt input rootmaster:#hadoop-0.20 fs-put/usr/src/linux-source-2.6.27/Doc*/rt-mutex-de
26、sign.txt input rootmaster:#hadoop-0.20 fs-ls input Found 2items-rw-r-r-2 root supergroup 78031 2020-05-12 14:16/user/root/input/memory-barriers.txt-rw-r-r-2 root supergroup 33567 2020-05-12 14:16/user/root/input/rt-mutex-design.txt rootmaster:#下一步,启动wordcount MapReduce作业。与在伪分布式模型中一样,指定输入子目录包含输入文件和输出
27、目录不存在,但会由名称节点创立并用结果数据填充:清单14.在集群上运行MapReduce wordcount作业rootmaster:#hadoop-0.20 jar/usr/lib/hadoop-0.20/hadoop-0.20.2+228-examples.jar wordcount input output 10/05/12 19:04:37 INFO input.FileInputFormat:Total input paths to process:2 10/05/12 19:04:38 INFO mapred.JobClient:Running job:job_ 202005121
28、900_0001 10/05/12 19:04:39 INFO mapred.JobClient:map 0%reduce 0%10/05/12 19:04:59 INFO mapred.JobClient:map 50%reduce 0%10/05/12 19:05:08 INFO mapred.JobClient:map 100%reduce 16%10/05/12 19:05:17 INFO mapred.JobClient:map 100%reduce 100%10/05/12 19:05:19 INFO mapred.JobClient:Job complete:job_ 20200
29、5121900_0001 10/05/12 19:05:19 INFO mapred.JobClient:Counters:17 10/05/12 19:05:19 INFO mapred.JobClient:Job Counters 10/05/12 19:05:19 INFO mapred.JobClient:Launched reduce tasks=1 10/05/12 19:05:19 INFO mapred.JobClient:Launched map tasks=2 10/05/12 19:05:19 INFO mapred.JobClient:Data-local map ta
30、sks=2 10/05/12 19:05:19 INFO mapred.Job Client:FileSystemCounters 10/05/12 19:05:19 INFO mapred.JobClient:FILE_BYTES_READ=47556 10/05/12 19:05:19 INFO mapred.JobClient:HDFS_BYTES_READ=111598 10/05/12 19:05:19 INFO mapred.JobClient:FILE_BYTES_WRITTEN=95182 10/05/12 19:05:19 INFO mapred.JobClient:HDFS
31、_BYTES_WRITTEN=30949 10/05/12 19:05:19 INFO mapred.JobClient:Map-Reduce Framework 10/05/12 19:05:19 INFO mapred.JobClient:Reduce input groups=2974 10/05/12 19:05:19 INFO mapred.JobClient:Combine output records=3381 10/05/12 19:05:19 INFO mapred.JobClient:Map input records=2937 10/05/12 19:05:19 INFO
32、 mapred.JobClient:Reduce shuffle bytes=47562 10/05/12 19:05:19 INFO mapred.JobClient:Reduce output records=2974 10/05/12 19:05:19 INFO mapred.JobClient:Spilled Records=6762 10/05/12 19:05:19 INFO mapred.JobClient:Map output bytes=168718 10/05/12 19:05:19 INFO mapred.JobClient:Combine input records=1
33、7457 10/05/12 19:05:19 INFO mapred.JobClient:Map output records=17457 10/05/12 19:05:19 INFO mapred.JobClient:Reduce input records=33 81 rootmaster:#最后一步是探究输出数据。由于您运行了wordcount MapReduce作业,结果是一个文件从已处理映射文件缩减而来。该文件包含一个元组列表,表示输入文件中找到的单词和它们在所有输入文件中出现的次数:清单15.检测MapReduce作业的输出rootmaster:#hadoop-0.20 fs-ls
34、 output Found 2items drwxr-xr-x-root supergroup 02020-05-12 19:04/user/root/output/_logs-rw-r-r-2 root supergroup 30949 2020-05-12 19:05/user/root/output/part-r-00000 rootmaster:#hadoop-0.20 fs-cat output/part-r-00000|head-13!=1"Atomic 2"Cache 2"Control 1"Examples 1"Has 7&qu
35、ot;Inter-CPU 1"LOAD 1"LOCK"1"Locking 1"Locks 1"MMIO 1"Pending 5rootmaster:#回页首Web管理界面尽管hadoop-0.20实用程序的功能极其丰富,但有时使用一个GUI会更方便。在执行文件系统检测时,您可以通过链接到名称节点,通过连接到jobtracker。您可以通过名称节点检测HDFS,如图5所示,在这里您检测输入目录包含输入数据-见上面清单13。图5.通过名称节点检测HDFS通过jobtracker,您可以检测运行中或已完成的作业。在图6中,您可以看
36、到对最后一个作业的检测来自清单14。该图展示了作为Java存档JAR恳求的输出发出的各种数据,以及任务的状态和数量。注意,这里执行了两个映射任务每个输入文件一个映射和一个缩减任务用于缩减两个映射输入。图6.检查一个已完成作业的状态最后,您可以通过名称节点检查数据节点的状态。名称节点主页确定活动节点和死节点作为链接的数量,且允许您进一步检测它们。图7所示的页面显示了活动数据节点以及每个节点的统计数据。图7.检查活动数据节点的状态通过名称节点和jobtracker Web界面,可以查看许多其他视图,但出于简洁,只显示该样例集。在名称节点和jobtracker Web页面内,您会找到大量链接,从而引
37、导您获取有关Hadoop配置和操作的其他信息包括运行时日志。回页首更进一步在本期中,您理解了如何将一个伪分布式配置从Cloudera转化为一个完全分布式配置。寥寥无几的步骤以及MapReduce应用程序的一个一样接口,就使Hadoop成为一个能实现分布式处理的有用工具。另一个有趣的部分就是Hadoop的可伸缩性讨论。通过添加新数据节点并更新其XML文件和master中的slave文件,您可以轻松伸缩Hadoop来进展更高级别的平行处理。第3部分,也就是本Hadoop系列的最后一期,将讨论如何为Hadoop开发一个MapReduce应用程序。参考资料学习本系列的第1部分,用Hadoop进展分布式数据处理,第1部分:入门developerWorks,2020年5月向您展示了如何为实现伪分布式配置而安装Hadoop即在一个节点上运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论