设为首页 收藏本站
查看: 542|回复: 0

[经验分享] hadoop_NameNode_DataNode详解

[复制链接]

尚未签到

发表于 2016-12-7 08:16:04 | 显示全部楼层 |阅读模式
  hadoop配置文件含义解释:
  
  1 hdfs-site.xml 和 hdfs-default.xml 的区别:
  
DSC0000.png
 
  上图明确指出: hdfs的核心文件hdfs-default.xml禁止修改,如果想要自定义内容,请在hdfs-site.xml 内修改, 看单机版hadoop配置时的 hdfs-site.xml,其中对参赛fs.default.name和hadoop.tmp.dir进行了重写:

[iyunv@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下

[iyunv@master name]# cd current/
[iyunv@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的实验:

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


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

查看此时 data/current下文件
[iyunv@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

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

再次查看
[iyunv@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
[iyunv@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>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310674-1-1.html 上篇帖子: hadoop-分布式安装及报错分析 下篇帖子: hadoop_NameNode_DataNode详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表