Hadoop入门必须知道的简单知识
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入门必须知道的简单知识的更多相关文章
- hadoop入门手册1:hadoop【2.7.1】【多节点】集群配置【必知配置知识1】
问题导读 1.说说你对集群配置的认识?2.集群配置的配置项你了解多少?3.下面内容让你对集群的配置有了什么新的认识? 目的 目的1:这个文档描述了如何安装配置hadoop集群,从几个节点到上千节点.为 ...
- Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码
Hadoop基础-MapReduce入门篇之编写简单的Wordcount测试代码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文主要是记录一写我在学习MapReduce时的一些 ...
- hadoop入门手册2:hadoop【2.7.1】【多节点】集群配置【必知配置知识2】
问题导读 1.如何实现检测NodeManagers健康?2.配置ssh互信的作用是什么?3.启动.停止hdfs有哪些方式? 上篇: hadoop[2.7.1][多节点]集群配置[必知配置知识1]htt ...
- Hadoop入门之hdfs
大数据技术开篇之Hadoop入门[hdfs] 学习都是从了解到熟悉的过程,而学习一项新的技术的时候都是从这个技术是什么?可以干什么?怎么用?如何优化?这几点开始.今天这篇文章分为两个部分.一. ...
- 初识Hadoop入门介绍
初识hadoop入门介绍 Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. < ...
- 一.hadoop入门须知
目录: 1.hadoop入门须知 2.hadoop环境搭建 3.hadoop mapreduce之WordCount例子 4.idea本地调试hadoop程序 5.hadoop 从mysql中读取数据 ...
- hadoop入门手册5:Hadoop【2.7.1】初级入门之命令:文件系统shell2
问题导读 1.改变hdfs文件的权限,需要修改哪个配置文件?2.获取一个文件的或则目录的权限,哪个命令可以实现?3.哪个命令可以实现设置访问控制列表(ACL)的文件和目录? 接上篇:Hadoop[2. ...
- hadoop入门手册4:Hadoop【2.7.1】初级入门之命令:文件系统shell1
问题导读1.Hadoop文件系统shell与Linux shell有哪些相似之处?2.如何改变文件所属组?3.如何改变hdfs的文件权限?4.如何查找hdfs文件,并且不区分大小写? 概述文件系统 ( ...
- hadoop入门手册3:Hadoop【2.7.1】初级入门之命令指南
问题导读1.hadoop daemonlog管理员命令的作用是什么?2.hadoop如何运行一个类,如何运行一个jar包?3.hadoop archive的作用是什么? 概述 hadoop命令被bin ...
随机推荐
- MySql(三):MyISAM和InnoDB区别详解
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- WebSocket请求过程分析及实现Web聊天室
WebSocket协议是基于TCP的一种新的协议.WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符.它实现了浏览器与服务器全双工(full-duplex ...
- 使用ReaderWriterLock类实现多用户读/单用户写同步
使用ReaderWriterLock类实现多用户读/单用户写同步[1] 2015-03-12 应用程序在访问资源时是进行读操作,写操作相对较少.为解决这一问题,C#提供了System.Threadin ...
- WiFi(802.11)基础
参考: 1. Wireshark数据包分析实战(第2版) 2. wifi技术从了解到熟悉1----概念.802.11协议简述及四种主要物理组件.wifi适配层.wap_supplicant和wap_c ...
- Entity Framework(六):数据迁移
在前面的几篇文章中,简单的介绍了如何使用Entity Framework的Code First模式创建数据库,但是,在前面的几篇文章中,我们都是通过使用数据库初始化策略来做,也就是每次先删除数据库然后 ...
- golang 环境bash 以及shell
standard_init_linux.go:178: exec user process caused "no such file or directory" 2018年04月2 ...
- 匿名内部类 Inner class
先说结论 匿名内部类分两种,一种是接口的匿名实现,一种是类的匿名子类!后者往往用于修改特定方法. 再说起因 本来以为匿名内部类很简单,就是接口的匿名实现,直到我发现了下面这段代码: public cl ...
- HBase和ZooKeeper
HBase和ZooKeeper HBase内置有ZooKeeper,也可以使用外部ZooKeeper. 让HBase使用一个已有的不被HBase托管的Zookeep集群,需要设置 conf/hbase ...
- 【BZOJ】2555: SubString(后缀自动机)
http://www.lydsy.com/JudgeOnline/problem.php?id=2555 学到了如何快速维护right值orz (不过这仍然是暴力维护,可以卡到O(n) 首先我们在加一 ...
- 【BZOJ】1697: [Usaco2007 Feb]Cow Sorting牛排序(置换群)
http://www.lydsy.com/JudgeOnline/problem.php?id=1697 置换群T_T_T_T_T_T_T 很久以前在黑书和白书都看过,,,但是看不懂... 然后找了本 ...