`

hadoop_NameNode_DataNode详解

 
阅读更多

 

hadoop配置文件含义解释:

 

 

1 hdfs-site.xml 和 hdfs-default.xml 的区别:

 



 

 

 上图明确指出: hdfs的核心文件hdfs-default.xml禁止修改,如果想要自定义内容,请在hdfs-site.xml 内修改, 看单机版hadoop配置时的 hdfs-site.xml,其中对参赛fs.default.name和hadoop.tmp.dir进行了重写:

 

[root@master conf]# cat  core-site.xml 
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
 <property>
        <name>fs.default.name</name> 
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>  
</configuration>

 

 

 

NameNode详解:

 

 是整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。
(见源码)
文件包括:
fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。
edits:操作日志文件。
fstime:保存最近一次checkpoint的时间
以上这些文件是保存在linux的文件系统中。

 

 

文件系统镜像simage : 存在位置:/usr/local/hadoop/tmp/dfs/name/current下

[root@master name]# cd current/
[root@master current]# ls
edits  fsimage  fstime  VERSION


 

如果此文件丢失,则整个hdfs宕掉,其路径配置在 hdfs-default.xml内,贴出如下:

 

<property>
  <name>dfs.name.dir</name>
  <value>${hadoop.tmp.dir}/dfs/name</value>
  <description>Determines where on the local filesystem the DFS name node
      should store the name table(fsimage).  If this is a comma-delimited list
      of directories then the name table is replicated in all of the
      directories, for redundancy. </description>
</property>

在文件 core.site.xml中, hadoop.tmp.dir配置如下,
 <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>  



那么上述两部分(hdfs-default.xml + core-site.xml )综合得到的结果是:

dfs.name.dir保持位置为
${hadoop.tmp.dir}/dfs/name = /usr/local/hadoop/tmp/dfs/name
其中current是固定写法

 

edits: 存放用户的操作日志, 用户的操作都是一个事务,要么成功,要么失败下回滚

 

每次用户操作hdfs时,产生的edits会记录操作结果,然后根据fstime(合并时间),由secondnamenode将当次的edits日志内容更新到 fsimage中,然后edits清空。

上述合并操作交给 secondnamenode原因如下:

namonode响应用户请求,内存消耗大,如果此时在处理 edits和fsimage的合并,更加消耗内存,因为这合并工作交给 secondenamenode操作

 

合并时间fstime,  看文件 core-default.xml

<property>
  <name>fs.checkpoint.period</name>
  <value>3600</value> 3600秒
  <description>The number of seconds between two periodic checkpoints.
  </description>
</property>

<property>
  <name>fs.checkpoint.size</name>
  <value>67108864</value>   大约64M  看下面的解释,这个触发的优先级更高
  <description>The size of the current edit log (in bytes) that triggers
       a periodic checkpoint even if the fs.checkpoint.period hasn't expired.
  </description>
</property>

 

 

 

 

Datanode详解:

 

 

作用:提供真实文件数据的存储服务,是一个文件管理系统,

 你可以类比于MySQL, mysql仅仅是一个数据库管理软件,它将数据转换为mysql坑理解的格式(eg: 表-->记录-->字段)然后存储在window/linux操作系统下的物理磁盘中。

同样,通过客户端用户操作的文件通过hdfs处理,将文件划分成hdfs世界里的块,然后存储在linux系统管理的硬盘中。

 

 

 

hdfs文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认Block大小是64MB,以一个256MB文件,共有256/64=4个Block.

不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。

 

针对于块的介绍引申1--Block的历史:

块并不是hdfs独有的概念, 这种数据基本存储单位出现在别的系统中,名词不一样而已,

eg: window的簇  ,Linux 为Block

hdfs借鉴linux的Block概念,但是又区别于linxu,Linux中Block是最小存储单元,即使物理文件没这么大,那么也要占用一个Block大小的物理空间,而在hdfs中,如果一个文件没有达到hdfs一个Block大小下,占用的是实际物理空间,而非一个Block(64M)

 

针对于块的介绍引申2---为何要划分快:

0 hdfs操作的文件很大, 如果原封不动的存储硬盘,并作为一个基本单位存储的话,

1 那么读写时都要打开此文件,加载内存耗费很大资源,读写速度自然很慢,

2 对这么大的文件操作时,文件独占,其余进程不能操作此文件,使用率降低

3 文件某块破坏,那么整个文件就废了,丢失概率为100%,而分块存储即使坏了

也就坏了某一块而已,丢失率远低于100%

 

针对于块的介绍引申3--64M是写死的吗?

1 这个64M可以修改,不是固定死的

其配置信息hdfs-default.xml:

<property>

  	<name>dfs.block.size</name>

	<value>67108864</value>  64M

	<description>The default block size for new files.</description>

</property>

 

 

针对hdfs 如果文件大于1个Block下文件大小是否占用下一整个Block的实验:

 

 

文件大小

[root@master local]# ls -l
-rwxr--r--  1 root root 84927175 Jul 19 19:12 jdk-6u24-linux-i586.bin




先清空hdfs下文件
[root@master local]# hadoop fs -rmr hdfs://master:9000/*  


查看此时 data/current下文件
[root@master current]# ls -l
total 16
-rw-r--r-- 1 root root 674 Aug  3 06:34 dncp_block_verification.log.curr
-rw-r--r-- 1 root root 158 Jul 30 06:41 VERSION



上传文件
[root@master local]# hadoop fs -put jdk-6u24-linux-i586.bin hdfs://master:9000/ 



再次查看

[root@master current]# ls -l
total 83724
-rw-r--r-- 1 root root 17818311 Aug  3 07:10 blk_4635014670961317001
-rw-r--r-- 1 root root   139215 Aug  3 07:10 blk_4635014670961317001_1022.meta
-rw-r--r-- 1 root root 67108864 Aug  3 07:10 blk_9146814489152210513
-rw-r--r-- 1 root root   524295 Aug  3 07:10 blk_9146814489152210513_1022.meta
-rw-r--r-- 1 root root      674 Aug  3 06:34 dncp_block_verification.log.curr
-rw-r--r-- 1 root root      158 Jul 30 06:41 VERSION
[root@master current]# 

上传完毕后 在查看 data/current下文件详细
其中 xx.meta是校对文件, 可以看到, 
排除原本就有的VERSION, dncp_block_verification.log.curr
和上传文件对应的 xx.meta校验文件后,新上传的文件jdk-6u24-linux-i586.bin(>64M, 84927175 )
被hdfs划分为两个block, blk_9146814489152210513-->67108864字节     blk_4635014670961317001-->17818311字节
两者大小和为84927175字节

 

 

 

datanode副本(理解为家里大门钥匙,分别放在不同的地方),默认配置写在 hdfs-default.xml中

 

<property>

  <name>dfs.replication</name>

  <value>3</value>   默认节点个数

  <description>Default block replication. 

  The actual number of replications can be specified when the file is created.

  The default is used if replication is not specified in create time.

  </description>

</property>

 

  • 大小: 91.2 KB
分享到:
评论

相关推荐

    Hadoop安装教程_单机_伪分布式配置_Hadoop2.6.0_Ubuntu141

    【Hadoop安装教程:单机与伪分布式配置详解】 在大数据处理领域,Hadoop是一个广泛使用的开源框架,它允许在廉价硬件集群上处理大规模数据。本文将指导您如何在Ubuntu 14.04 64位系统上安装Hadoop 2.6.0,无论是...

    3-haddop_hadoop_

    5. **故障恢复与高可用性**:学习Hadoop的容错机制,如NameNode的HA(High Availability)和DataNode的数据恢复。 6. **实际应用案例**:通过实际操作,了解Hadoop在处理大规模数据时的优势和应用场景。 通过深入...

    Hadoop_HDFS安装和管理

    ### Hadoop HDFS安装与管理知识点详解 #### 一、Hadoop HDFS概述 Hadoop是一种分布式计算框架,主要用于处理大规模数据集。它由多个组件组成,其中最核心的是Hadoop Distributed File System (HDFS) 和 MapReduce。...

    细细品味Hadoop_Hadoop集群(第5期)_Hadoop安装配置

    ### Hadoop集群构建与配置详解 #### 一、Hadoop概览及集群角色解析 **Hadoop**,作为Apache软件基金会旗下的一款开源分布式计算平台,以其核心组件**Hadoop分布式文件系统**(HDFS)和**MapReduce**而闻名。HDFS提供...

    hadoop_note.zip

    安装Hadoop通常涉及下载源码、编译、配置环境变量以及初始化NameNode和DataNode等步骤。配置过程中,需要设置如HDFS的目录结构、内存大小、网络通信参数等,确保集群稳定运行。 三、Hadoop数据存储 HDFS以块为单位...

    Hadoop_HBase_Pig

    ### Hadoop、HBase与Pig的安装与配置详解 #### Hadoop的安装与配置 在部署Hadoop之前,首先需要确保系统中已正确安装了Java环境。在本例中,使用的是`jdk-7u25-linux-i586.rpm`。安装过程包括将JDK包放置于`/usr/...

    hadoop_linux.rar

    在Linux环境下,这三种模式的设置略有不同,例如,伪分布式模式下,一个节点既充当NameNode又充当DataNode,而完全分布式则需要至少两台机器来分别担任这些角色。 4. HDFS操作: Hadoop的文件操作主要通过HDFS...

    Hadoop_HDFS安装和管理.pdf

    ### Hadoop HDFS安装与管理知识点详解 #### 一、Hadoop HDFS简介 Hadoop是一种分布式计算框架,主要用于处理大规模数据集。它由多个组件组成,其中最核心的是Hadoop Distributed File System (HDFS) 和 MapReduce。...

    HDFS体系结构(NameNode、DataNode详解)

    "HDFS体系结构详解" HDFS(Hadoop Distributed File System)是一种分布式文件系统,旨在存储和管理大规模数据。HDFS体系结构主要由两部分组成:NameNode和DataNode。 NameNode NameNode是HDFS的中心节点,负责...

    hadoop伪分布式安装.pdf

    ### Hadoop伪分布式安装知识点详解 #### 一、Hadoop伪分布式概述 Hadoop是一种能够处理海量数据的大规模分布式计算框架。它通过将任务分解到多个计算机节点上并行处理来提高数据处理效率。Hadoop支持多种运行模式,...

    Hadoop之NameNode Federation图文详解

    Hadoop之NameNode Federation图文详解 Hadoop的NameNode Federation是HDFS(Hadoop Distributed File System)中的一种架构设计,旨在解决NameNode的扩展性、隔离性和性能问题。本篇文章将对NameNode Federation的...

    HDFS的概念-namenode和datanode.pdf

    《HDFS的概念——Namenode和Datanode详解》 Hadoop分布式文件系统(HDFS)是Apache Hadoop项目的核心组件,为大数据处理提供了高效、可靠的分布式存储解决方案。HDFS设计的目标是处理海量数据,其架构基于两个核心...

    hadoop的2.2.0完全分布式集群配置.pdf

    ### Hadoop 2.2.0 完全分布式集群配置详解 #### 一、概述 随着大数据技术的发展,Hadoop已成为处理大规模数据集的核心工具之一。Hadoop 2.2.0版本作为Hadoop生态系统中的一个重要里程碑,在性能、稳定性和安全性...

    hadoop-common-2.7.3-bin-master-windows

    1. 启动Hadoop守护进程,通常包括NameNode、DataNode和YARN的ResourceManager、NodeManager。 2. 配置HDFS的目录结构,如使用`winutils.exe fs -mkdir /user`创建用户目录。 3. 通过`hadoop fs -put`命令将本地文件...

    hadoop 命令大全

    此脚本会根据NameNode上的`$HADOOP_CONF_DIR/slaves`文件中列出的所有从节点(DataNodes)启动相应的DataNode守护进程。 **7. 启动Map/Reduce服务** 在分配的JobTracker上启动Map/Reduce服务,则需要执行命令`$bin...

    hadoop完全分布式集群搭建

    ### Hadoop完全分布式集群搭建详解 #### 一、前言及环境准备 在开始搭建Hadoop完全分布式集群之前,需要确保已经准备好相应的硬件资源和软件环境。本篇指南旨在为初学者提供一个全面且详细的Hadoop集群搭建流程,...

    HDFS的java api详解

    Java操作Hdfs,配置开发环境,NameNode详解,DataNode详解,namenode与datanode的工作机制

    hadoop-3.1.3.tar.gz

    《Hadoop 3.1.3在CentOS7上的安装与配置详解》 Hadoop,一个由Apache基金会所开发的分布式系统基础架构,是大数据处理领域的重要工具。本文将详细阐述如何在CentOS7操作系统上安装和配置Hadoop 3.1.3版本,旨在帮助...

    HADOOP安装部署文档

    Hadoop的NameNode通过SSH启动和停止DataNode上的进程。为了无密码连接,需要在所有节点间配置SSH无密码公钥认证。启动SSH服务,生成私钥和公钥,将公钥复制到其他节点,使得节点间可以通过公钥进行身份验证。 在...

    详解Hadoop核心架构HDFS

    ### 详解Hadoop核心架构HDFS #### HDFS体系架构概览 Hadoop作为一个领先的开源分布式计算框架,其核心组成部分之一便是Hadoop Distributed File System(HDFS),它为大规模数据处理提供了高效、可靠且可扩展的...

Global site tag (gtag.js) - Google Analytics