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. Object-C中的字符串对象1-不可变字符串

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  2. Object-C中的数字对象

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  3. 2014圣诞节一款纯css3实现的雪人动画特效

    在2014年的圣诞节,爱编程小编给大家分分享一款纯css3实现的雪人动画特效.该实例实现一个雪人跳动的特效,效果图如下: 在线预览   源码下载 实现的代码. html代码: <span cla ...

  4. [Linux]Linux printf 输出重定向

    方法一 #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/st ...

  5. Android——RelativeLayout(相对布局)

    一.相对于父容器 1.居中 2.同方向 <?xml version="1.0" encoding="utf-8"?> <RelativeLay ...

  6. 文件模式设置用户ID/设置组ID/sticky bit_转

    S_ISUID  (04000)  set-user-ID (set process effective user ID on execve(2))S_ISGID  (02000)  set-grou ...

  7. mysql 分区 限制

    MySQL分区的限制 •   只能对数据表的整型列进行分区源码天空,或者数据列可以通过分区函数转化成整型列 •   最大分区数目不能超过1024 •   如果含有唯一索引或者主键,则分区列必须包含在所 ...

  8. setTranslatesAutoresizingMaskIntoConstraints和setFrame组合使用导致的异常

    在用Ojbect-c开发OSX应用的时候需要用到自定义控件并用代码进行布局,很自然地就使用了setTranslatesAutoresizingMaskIntoConstraints和setFrame组 ...

  9. kettle利用触发器实现数据同步

    2016年8月17日 一.目的 通过触发器实现数据同步二.思路 1.在数据库需要同步的源表中建立一个insert触发器,当有新数据插入时,会自动将新插入数据的主键记录到临时表temp中.(当然也可以记 ...

  10. hdu 1233 还是畅通project

    本题链接:点击打开链接 本题大意: 有n个村庄,n*(n-1)/2条路,输入每条路所连接是哪两个村庄及长度,求使全部村庄均连通(并不是都两两连通) 所铺公路的最短路程. 解题思路: 使用并查集基础及K ...