• Hadoop的结构组成
  • 安装Hadoop及其3种工作模式:单机、伪分布和全分布
  • 用于监控Hadoop安装的Web工具
 
1、Hadoop的构造模块
 
(1)NameNode(名字节点)
     Hadoop在分布式计算和分布式存储中都采用了主/从结构。NameNode位于HDFS的主端,它指导从端的DataNode执行底层的I/O任务。NameNode是HDFS的书记员,它跟踪文件如何被分割成文件块,而这些块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常。
     运行NameNode消耗大量的内存和I/O资源。因此,为了减轻机器的负载,驻留NameNode的服务器通常不会存储用户数据或执行MapReduce程序的计算任务,就意味着NameNode服务器不会同时是DataNode或者TaskTracker。
     不过NameNode的重要性也带来了一个负面影响——hadoop集群的单点失效。对于任何其他的守护进程,如果它们所驻留的节点发生软件或硬件失效,hadoop集群很可能还会继续平稳运行,不然还可以快速重启这个节点。但这样的方法并不适用于NameNode!
 
(2)DataNode(数据节点)
     每个集群上的从节点都会驻留一个DataNode守护进程,来执行分布式文件系统的繁重工作——将HDFS数据块读取或写入到本地文件系统的实际文件中。当希望对HDFS文件进行读写时,文件被分割为多个块,由NameNode告知客户端每个数据块驻留在哪个DataNode。客户端直接与DataNode守护进程通信,来处理与数据块相对应的本地文件。而后,DataNode会与其他DataNode进行通信,复制这些数据块以实现冗余。
     默认情况下每个数据块有3个副本,这确保了如果任何一个DataNode奔溃或者无法通过网络访问时,仍然可以读取这些文件。
     DataNode不断向NameNode报告。初始化时,每个DataNode将当前存储的数据块告知NameNode。在这个初始映射完成后,DataNode仍会不断地更新NameNode,为之提供本地修改的相关信息,同时接收指令创建、移动或删除本地磁盘上的数据块。
 
(3)Secondary NameNode(次名节点)
   Secondary NameNode是一个用于监测HDFS集群状态的辅助守护进程。像NameNode一样,每个集群有一个SNN,通常也独占一台服务器,该服务器不会运行其他的DataNode或TaskTracker守护进程。SNN与NameNode的不同在于它不接收或记录HDFS的任务实时变化。相反,它与NameNode通信,根据集群所配置的时间间隔获取HDFS元数据的快照。
     如前所述,NameNode是Hadoo集群的单一故障点,而SNN的快照可以有助于减少停机的时间并降低数据丢失的风险。然而,NameNode的失效处理需要人工的干预,即手动地重新配置集群,将SNN用作主要的NameNode。
 
(4)JobTracker(作业跟踪节点)
     JobTracker守护进程是应用程序和Hadoop之间的纽带。一旦提交代码到集群上,JobTracker就会确定执行计划,包括决定处理哪些文件,为不同的任务分配节点以及监控所有任务的运行。如果任务失败,JobTracker将自动重启任务,但所分配的节点可能会不同,同时受到预定义的重试次数限制。
     每个Hadoop集群只有一个JobTracker守护进程,它通常运行在服务器集群的主节点上。
 
(5)TaskTracker(任务跟踪节点)
     与存储的守护进程一样,计算的守护进程也遵循主/从架构:JobTracker作为主节点,监测MapReduce作业的整个执行过程;同时,TaskTracker管理各个任务在每个从节点上的执行情况。
     每个TaskTracker负责执行由JobTracker分配的单项任务。虽然每个从节点上仅有一个TaskTracker,但每个TaskTracker可以生成多个JVM(Java虚拟机)来并行处理许多map或reduce任务。
     TaskTracker的一个职责是持续不断地与JobTracker通信。如果JobTracker在指定的时间内没有收到来自TaskTracker的“心跳”,它会假定TaskTracker已经奔溃了,进而重新提交相应的任务到集群中的其他节点中。
 
典型的Hadoop集群的拓扑结构的特点是在主节点上运行NameNode和JobTracker的守护进程,并使用独立的节点运行SNN以防主节点失效。在小型集群中,SNN也可以驻留在某个从节点上,而在大型集群中,连NameNode和JobTracker都会分别驻留在两台机器上。每个从节点均驻留一个DataNode和TaskTracker,从而在存储数据的同一节点上执行任务。
 
2、为Hadoop集群安装SSH
 
生成密钥对:
ssh-keygen -t rsa
 
将公钥分布并登录验证:
[主节点]
scp ~/.ssh/id_rsa.pub hadoop-user@target:~/master-key
 
[从节点]
mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/master-key ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
 
验证登录:
ssh target
 
3、运行Hadoop
 
在运行Hadoop之前需要做一些配置。需要做的第一件事就是指定包括主节点在内所有节点上Java的位置,即在hadoop-env.sh中定义JAVA_HOME环境变量使之指向Java安装目录。
Hadoop0.20之后的设置主要包含在XML配置文件中,包括core-site.xml、hdfs-site.xml、mapred-site.xml共3个文件。
Hadoop2.x的设置新增了yarn-site.xml配置文件。
 
(1)本地单机模式
     单机模式是Hadoop的默认模式,在这种默认模式下所有3个XML文件均为空。
     该模式主要用于开发调试MapReduce程序的应用逻辑,而不会与守护进程交互,避免引起额外的复杂性。
 
(2)伪分布模式
     伪分布模式在“单节点集群”上运行Hadoop,其中所有的守护进程都运行在同一台机器上。
     该模式在单机模式之上增加了代码调试功能,允许检查内存使用情况、HDFS输入输出,以及其他的守护进程交互。
 

代码清单 伪分布模式下3个配置文件的示例
 
 core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property> mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property> hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
在core-site.xml和mapred-site.xml中分别指定了NameNode和JobTracker的主机名与端口。
在hdfs-site.xml中指定了HDFS的默认副本数。
 

 
还需要在文件masters中指定SNN的位置,并在文件slaves中指定从节点的位置。
cat masters
localhost
cat slaves
localhost
 
格式化HDFS:
hadoop namenode -format
 
 启动Hadoop:
start-all.sh
 
关闭Hadoop:
stop-all.sh
 
(3)全分布模式
 
使用如下的服务器名称:
  • master——集群的主节点,驻留NameNode和JobTracker守护进程
  • backup——驻留SNN守护进程的节点
  • hadoop1,hadoop2,hadoop3…——集群的从节点,驻留DataNode和TaskTracker守护进程
 

代码清单 全分布模式下3个配置文件的示例
 
 core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property> mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property> hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
 
在core-site.xml和mapred-site.xml中分别指定了NameNode和JobTracker的主机名与端口。
在hdfs-site.xml中指定了HDFS的默认副本数。

 
还需要在文件masters中指定SNN的位置,并在文件slaves中指定从节点的位置。
cat masters
backup
cat slaves
hadoop1
hadoop2
hadoop3
...
 
格式化HDFS:
hadoop namenode -format
 
 启动Hadoop:
start-all.sh
 
关闭Hadoop:
stop-all.sh
 
4、基于Web的集群用户界面
 
NameNode通过端口50070提供常规报告,描绘集群上HDFS的状态视图。
JobTracker通过端口50030提供一个MapReduce作业运行时状态的近似视图。 
 
 [转载请注明] http://www.cnblogs.com/zhengrunjian/

[Hadoop in Action] 第2章 初识Hadoop的更多相关文章

  1. [Hadoop in Action] 第7章 细则手册

    向任务传递定制参数 获取任务待定的信息 生成多个输出 与关系数据库交互 让输出做全局排序   1.向任务传递作业定制的参数        在编写Mapper和Reducer时,通常会想让一些地方可以配 ...

  2. [hadoop in Action] 第3章 Hadoop组件

    管理HDFS中的文件 分析MapReduce框架中的组件 读写输入输出数据   1.HDFS文件操作   [命令行方式]   Hadoop的文件命令采取的形式为: hadoop fs -cmd < ...

  3. [Hadoop in Action] 第1章 Hadoop简介

    编写可扩展.分布式的数据密集型程序和基础知识 理解Hadoop和MapReduce 编写和运行一个基本的MapReduce程序   1.什么是Hadoop   Hadoop是一个开源的框架,可编写和运 ...

  4. Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案

    一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构 ...

  5. [Hadoop in Action] 第6章 编程实践

    Hadoop程序开发的独门绝技 在本地,伪分布和全分布模式下调试程序 程序输出的完整性检查和回归测试 日志和监控 性能调优   1.开发MapReduce程序   [本地模式]        本地模式 ...

  6. [Hadoop in Action] 第5章 高阶MapReduce

    链接多个MapReduce作业 执行多个数据集的联结 生成Bloom filter   1.链接MapReduce作业   [顺序链接MapReduce作业]   mapreduce-1 | mapr ...

  7. [Hadoop in Action] 第4章 编写MapReduce基础程序

    基于hadoop的专利数据处理示例 MapReduce程序框架 用于计数统计的MapReduce基础程序 支持用脚本语言编写MapReduce程序的hadoop流式API 用于提升性能的Combine ...

  8. [hadoop读书笔记] 第一章 初识 Hadoop

    P3-P4: 目前遇见的问题很简单:硬盘容量不断提升,1TB的已成为主流,然而数据传输速度从1990年的4.4MB/s仅上升到当前约100MB/s 读取一个1TB的硬盘数据需要耗时至少2.5个小时.写 ...

  9. 初识Hadoop入门介绍

    初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...

随机推荐

  1. ABP框架 - 值对象

    文档目录 本节内容: 简介 值对象基类 最佳实践 简介 “一个表示领域的一个描述性方面的没有概念上的身份对象,称为值对象.“(Eric Evans). 与一个有身份(Id)实体相反,一个值对象没有身份 ...

  2. Entity Framework 6 Recipes 2nd Edition(13-6)译 -> 自动编译的LINQ查询

    问题 你想为多次用到的查询提高性能,而且你不想添加额外的编码或配置. 解决方案 假设你有如Figure 13-8 所示的模型 Figure 13-8. A model with an Associat ...

  3. python的print函数的格式化输出

    使用print函数的时候,可以像C一样格式化输出,同时还支持参数化输出 print('%s' % ("CooMark")) print('整数|%d|' % (123)) prin ...

  4. C# windows服务制作(包括安装及卸载)

    开篇语 因工作内容需要做一个windows服务,此前并没有相关经验,所以做了一个demo来跑跑这个梗(高手跳过,需要的来踩)- 效果如下:打开服务,可以找到我们新增的一个windows服务,这个dem ...

  5. node实现watcher的困境

    @(node,watcher) watcher,在如今的前端领域已经数见不鲜了.目前流行的gulp流程工具提供了watcher的选项,是我们在开发过程中不需要手动进行触发构建流程,转而根据文件(目录) ...

  6. 解决iframe作为子窗口,刷新后iframe页面跳转到其它页面的问题

    转载请在页首注明作者与出处 http://www.cnblogs.com/zhuxiaojie/p/5990262.html 前言: 在开发网站时,尤其是管理后台,我们经常会使用iframe作为内容窗 ...

  7. C# ListView点击列头进行排序

    /// <summary> /// This class is an implementation of the 'IComparer' interface. /// </summa ...

  8. 我喜欢的Notepad++插件

    Notepad++插件 HEX-Editor 文本转16进制,查看编辑. NppExport 导出已着色代码为其他格式的文件. 将彩色代码,导出为word文档(RFT)或网页(HTML)文件,或者将彩 ...

  9. js,jquery,css,html5特效

    包含js,jquery,css,html5特效,源代码 本文地址:http://www.cnblogs.com/roucheng/p/texiao.html 2017新年快乐特效 jQuery最新最全 ...

  10. C# 当前系统的多管理账户测判断

    using (DirectoryEntry comp = new DirectoryEntry("WinNT://" + Environment.MachineName + &qu ...