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 ...
随机推荐
- 点滴积累【JS】---JS实现仿百度模糊搜索效果
效果: HTML代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="In ...
- Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript.
Atitit.线程 死锁 跑飞 的检测与自动解除 与手动解除死锁 java c# .net php javascript. 1. 现象::主程序卡住无反应,多行任务不往下执行 1 2. 原因::使用j ...
- @XStreamAlias使用
@XStreamAlias使用 一. 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法 提供序列化接口 ...
- 错误:undefined reference to `__gxx_personality_v0'
使用gcc编译C代码,引用了C++ 库,出现这个错误,网上搜到这哥们的文章,解决问题 转自:错误:undefined reference to `__gxx_personality_v0' 1. Li ...
- ubuntu 16.04 安装 ITDB
其实标题本不应该是这个 之前也部署过itdb,这款软件本身不必多言,来自希腊的精品.最近因为单位需要,又要重新部署.前几年部署itdb的时候用的是ub14,但目前最新的是ub16,于是就部署呗.但在后 ...
- Entity Framework(七):Fluent API配置案例
一.配置主键 要显式将某个属性设置为主键,可使用 HasKey 方法.在以下示例中,使用了 HasKey 方法对 Product 类型配置 ProductId 主键. 1.新加Product类 usi ...
- Java中float/double取值范围与精度
Java浮点数 浮点数结构 要说清楚Java浮点数的取值范围与其精度,必须先了解浮点数的表示方法,浮点数的结构组成,之所以会有这种所谓的结构,是因为机器只认识01,你想表示小数,你要机器认识小数点这个 ...
- Thinlphp 模版 foreach 嵌套在 另一个循环出现不能在次循环问题。
把 foreach 循环改成 volist 就可以重置循环所以的数据.
- 指数族分布(Exponential Families of Distributions)
指数族分布是一大类分布,基本形式为: T(x)是x的充分统计量(能为相应分布提供足够信息的统计量) 为了满足归一化条件,有: 可以看出,当T(x)=x时,e^A(theta)是h(x)的拉普拉斯变换. ...
- 面向对象分析和设计(OOA/D)
UML不是OOA/D,也不是方法,它仅仅是一种图形表示法(表示的是OOA/D的想法),我们将在OOA/D中应用UML:分析,就是理解客户脑子中的概念,跟客户来沟通,分析出专业术语:设计,对分析出来的专 ...