Hadoop入门知识

Hadoop构成

Hadoop由4个主要构成部分:

1) 基础核心:提供基础的通用的功能

2) HDFS:分布式存储

3) MapReduce:分布式计算

4) YARN:资源分配(多个任务是排队执行还是同时执行)

HDFS构成

HDFS由3种主要的节点构成:

1) NameNode  用来存储数据的存放位置等元数据(不存放数据)

2) DataNode 只用来存储数据

3) SecondaryNameNode

辅助NameNode运行,将NameNode产生的元数据持久化到磁盘上

注意:生产环境中一台计算机通常只担任一种角色。测试环境中一台计算机可以担任多种角色;如伪分布模式中担任全部角色,测试集群中也常见NameNode和Secondary NameNode在同一台计算机上。

NameNode

进程

对应于NameNode进程(通过jps命令可以查看java进程)。

功能

1) 存储数据的分布位置、数据的各种描述信息(如文件名、文件大小、文件所在目录、所有者名称、读写执行权限等)

2) 读数据时,要先从NameNode获取文件的分布位置(在哪些DataNode上),然后再从DataNode上读数据(当然,这个过程已经由HDFS的Shell或API实现了)

3) 写数据时,先向NameNode提交要写的文件的信息,NameNode检查自己的记录表,以找到合适的DataNode(需要找多个,因为每个文件还要创建副本)来存储这些数据,然后指挥这些DataNode串成一串接收数据。如果某个DataNode在接收数据时罢工,则忽略掉它(忽略之后造成的副本数少于指定数量会在后期补加副本);如果所有选出的DataNode全挂掉(几率很低),则写入失败。

4) 需要时,可以调用NameNode列出HDFS中的文件夹及文件(如执行 hdfs dfs -ls / 命令时)。

元数据存储位置

具体存储位置由配置文件指定,即hdfs-site.xml中的 dfs.namenode.name.dir 指定

这个位置可以用,列表指定多个位置进行扩容

dfs.namenode.name.dir的默认值是file://${hadoop.tmp.dir}/dfs/name

${hadoop.tmp.dir}的默认值是 /tmp/hadoop-${user.name}

${user.name}是安装Hadoop的用户名

这些默认值在Hadoop官方网站的文档中有详细说明

配置时,为了简单,通常会在core-site.xml中修改 ${hadoop.tmp.dir},因为这个值在各个具体配置文件中被多次引用!

通过Hadoop的浏览站点也能找到NameNode元数据的存储位置,在Overview页上

持久化的元数据

进入NameNode存放元数据的目录,可以看到如下文件:

NameNode的元数据运行时是加载在内存中的(因为这些数据需要快速查询),当NameNode关闭时,内存中的元数据又会持久化到硬盘上(上图中的fsimage文件)。在不考虑HDFS的写操作时,元数据只在内存和硬盘之间交换。

内存元数据  《——》 fsimage

但HDFS集群是要写数据的,这时就会导致内存中的元数据和硬盘上的fsimage文件不同。内存是易失的,如意外断电或死机都会导致内存中的数据丢失,为了保证所有的数据变化都能记录下来,HDFS会将所有的操作都记录到edits文件中。这样在写数据时就会形成以下关系:

内存元数据  ==  fsimage + edits

SecondaryNameNode

进程

对应于SecondaryNameNode进程

功能

生产环境中NameNode会长时间运行,几乎不关闭。而内存中的元数据是在NameNode关闭时进行持久化的。这样生产环境中内存元数据与持久化元数据差异就会越来越大,会导致生成大量的edits文件,NameNode重启速度变慢。为了解决这些问题就产生了Secondary
NameNode。

SecondaryNameNode会将NameNode中产生的fsimage和edits下载过来,执行合并生成新的fsimage,然后把新的fsimage再重新发回NameNode,这样NameNode中的持久化元数据就能与内存中的元数据一致或非常接近了,edits文件的数量大大减少。

Hadoop入门必须知道的简单知识的更多相关文章

  1. hadoop入门手册1:hadoop【2.7.1】【多节点】集群配置【必知配置知识1】

    问题导读 1.说说你对集群配置的认识?2.集群配置的配置项你了解多少?3.下面内容让你对集群的配置有了什么新的认识? 目的 目的1:这个文档描述了如何安装配置hadoop集群,从几个节点到上千节点.为 ...

  2. Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码

    Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...

  3. hadoop入门手册2:hadoop【2.7.1】【多节点】集群配置【必知配置知识2】

    问题导读 1.如何实现检测NodeManagers健康?2.配置ssh互信的作用是什么?3.启动.停止hdfs有哪些方式? 上篇: hadoop[2.7.1][多节点]集群配置[必知配置知识1]htt ...

  4. Hadoop入门之hdfs

        大数据技术开篇之Hadoop入门[hdfs] 学习都是从了解到熟悉的过程,而学习一项新的技术的时候都是从这个技术是什么?可以干什么?怎么用?如何优化?这几点开始.今天这篇文章分为两个部分.一. ...

  5. 初识Hadoop入门介绍

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

  6. 一.hadoop入门须知

    目录: 1.hadoop入门须知 2.hadoop环境搭建 3.hadoop mapreduce之WordCount例子 4.idea本地调试hadoop程序 5.hadoop 从mysql中读取数据 ...

  7. hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2

    问题导读 1.改变hdfs文件的权限,需要修改哪个配置文件?2.获取一个文件的或则目录的权限,哪个命令可以实现?3.哪个命令可以实现设置访问控制列表(ACL)的文件和目录? 接上篇:Hadoop[2. ...

  8. hadoop入门手册4:Hadoop【2.7.1】初级入门之命令:文件系统shell1

    问题导读1.Hadoop文件系统shell与Linux shell有哪些相似之处?2.如何改变文件所属组?3.如何改变hdfs的文件权限?4.如何查找hdfs文件,并且不区分大小写? 概述文件系统 ( ...

  9. hadoop入门手册3:Hadoop【2.7.1】初级入门之命令指南

    问题导读1.hadoop daemonlog管理员命令的作用是什么?2.hadoop如何运行一个类,如何运行一个jar包?3.hadoop archive的作用是什么? 概述 hadoop命令被bin ...

随机推荐

  1. AngularJS 中 Provider 的用法及区别

    在一个分层良好的 Angular 应用中,Controller 这一层应该很薄.也就是说,应用里大部分的业务逻辑和持久化数据都应该放在 Service 里. 为此,理解 AngularJS 中的几个 ...

  2. min宏的学习

    1.先上实现代码: #define __min(t1, t2, min1, min2, x, y) ({ \ t1 min1 = (x); \ t2 min2 = (y); \ (void) (&am ...

  3. Linux系统CPU频率调整工具使用

    现在的CPU耗电很大,按需调节CPU频率对普通桌面及移动设备节能有重要的意义,目前多数Linux发行版都已经默认启用了这个功能,但在一些像数据库,集群系统等特别需要CPU高性能的服务器环境中,Linu ...

  4. 线程相关函数(7)-sem_post(), sem_wait() 信号量

    sem_tsem_initsem_waitsem_trywaitsem_timedwaitsem_postsem_destroy 生产者消费者实例: #include <stdlib.h> ...

  5. 内存控制函数(1)-mmap() 建立内存映射

    示例1: 1.首先建立一个文本文件,名字为tmp,内容为hello world 2.编写mmap.c #include <sys/types.h> #include <sys/sta ...

  6. CEffectMgr类

    #ifndef __EFFECTMGR_H__ #define __EFFECTMGR_H__ #include "GameFrameHead.h" namespace cocos ...

  7. UIApplication深入学习

    多时候,我们不需要关心这个类,我们很少继承这个类,偶尔会调用这个类的api来实现一些功能,但是不可否认,这个类是iOS编程中很重要的一个概念.UIApplication的核心作用是提供了iOS程序运行 ...

  8. EAV/ESS 8.x 自定义服务器正确方法+更新服务器列表

    下面用64位的ESET Smart Security 8.0.319.1进行设置自定义更新服务器说明(注:修改方法32位和64位通用) 1.  让我们先看一下ESET Smart Security 8 ...

  9. java 代理模式,观察者模式

    代理模式1 import <a href="http://lib.csdn.net/base/17" class='replace_word' title="Jav ...

  10. 源码分享!!!world文档转换为JPG图片

    http://bbs.csdn.net/topics/390055515 —————————————————————————————————————————————————— 基本思路是:先将worl ...