1. hadoop2.x核心模块
Hadoop项目主要包括以下四个模块
◆ Hadoop Common:
- 为其他Hadoop模块提供基础设施
◆ Hadoop HDFS:
- 一个高可靠、高吞吐量的分布式文件系统
◆ Hadoop MapReduce:
- 一个分布式的离线并行计算框架
◆ Hadoop YARN:
一个新的MapReduce框架,任务调度与资源管理
2. 安装
3. HDFS服务功能
NameNode是主节点,存储元数据如文件名、文件目录结构,文件属性(生成时间/副本数/文件权限),以及每个文件的块列表和块所在的DataNode等。DataNode在本地文件系统存储文件块数据(会有NodeManager进程),以及块数据的校验和。SecondNameNode用来监听HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
在NameNode的文件夹目录:
[hadoop@hadoop1 dfs]$ pwd
/home/hadoop/hadoop-current/tmp/dfs
[hadoop@hadoop1 dfs]$ tree nn
nn
├── current
│ ├── edits_0000000000000000001-0000000000000000242
│ ├── edits_0000000000000000243-0000000000000000243
│ ├── edits_inprogress_0000000000000000244
│ ├── fsimage_0000000000000000242
│ ├── fsimage_0000000000000000242.md5
│ ├── fsimage_0000000000000000243
│ ├── fsimage_0000000000000000243.md5
│ ├── seen_txid
│ └── VERSION
└── in_use.lock
1 directory, 10 files
dataName目录结构:
[hadoop@hadoop2 dfs]$ tree dn
dn
├── current
│ ├── BP-864899108-10.179.25.59-1553789556161
│ │ ├── current
│ │ │ ├── dfsUsed
│ │ │ ├── finalized
│ │ │ │ └── subdir0
│ │ │ │ ├── subdir0
│ │ │ │ │ ├── blk_1073741825
│ │ │ │ │ ├── blk_1073741825_1001.meta
│ │ │ │ │ ├── blk_1073741826
│ │ │ │ │ ├── blk_1073741826_1002.meta
│ │ │ │ │ ├── blk_1073741827
│ │ │ │ │ ├── blk_1073741827_1003.meta
│ │ │ │ │ ├── blk_1073741838
│ │ │ │ │ ├── blk_1073741838_1014.meta
│ │ │ │ │ ├── blk_1073741879
│ │ │ │ │ ├── blk_1073741879_1059.meta
│ │ │ │ │ ├── blk_1073741881
│ │ │ │ │ ├── blk_1073741881_1061.meta
│ │ │ │ │ ├── blk_1073741889
│ │ │ │ │ ├── blk_1073741889_1069.meta
│ │ │ │ │ ├── blk_1073741890
│ │ │ │ │ ├── blk_1073741890_1070.meta
│ │ │ │ │ ├── blk_1073741932
│ │ │ │ │ ├── blk_1073741932_1112.meta
│ │ │ │ │ ├── blk_1073741933
│ │ │ │ │ ├── blk_1073741933_1113.meta
│ │ │ │ │ ├── blk_1073741939
│ │ │ │ │ └── blk_1073741939_1119.meta
│ │ │ │ ├── subdir1
│ │ │ │ ├── subdir10
│ │ │ │ ├── subdir11
│ │ │ │ ├── subdir12
│ │ │ │ ├── subdir13
│ │ │ │ ├── subdir14
│ │ │ │ ├── subdir15
│ │ │ │ ├── subdir2
│ │ │ │ │ ├── blk_1073742400
│ │ │ │ │ └── blk_1073742400_1580.meta
│ │ │ │ ├── subdir3
│ │ │ │ ├── subdir4
│ │ │ │ ├── subdir5
│ │ │ │ ├── subdir6
│ │ │ │ ├── subdir7
│ │ │ │ ├── subdir8
│ │ │ │ └── subdir9
│ │ │ ├── rbw
│ │ │ │ ├── blk_1073745767
│ │ │ │ ├── blk_1073745767_4947.meta
│ │ │ │ ├── blk_1073745768
│ │ │ │ ├── blk_1073745768_4948.meta
│ │ │ │ ├── blk_1073745769
│ │ │ │ ├── blk_1073745769_4949.meta
│ │ │ │ ├── blk_1073745770
│ │ │ │ └── blk_1073745770_4950.meta
│ │ │ └── VERSION
│ │ ├── scanner.cursor
│ │ └── tmp
│ └── VERSION
└── in_use.lock
23 directories, 37 files
HDFS图示理解:

安全机制
- 副本数
- 一份文件写多份备份
如果有丢失的块block,扫描到会补上。
以下图示展示了3份备份:


分析:200M的文件会被分成128M+72M两块。在使用命令的客户端机器会向NameNode发送信息。根据“就近原则”,使用命令的客户端会优先存一份。


关于SecondNameNode
Secondary NameNode 用来监控HDFS状态的辅助后台程序,每隔一段时间获 取HDFS元数据的快照。
快照相当于某个时间点的信息。便于还原到该点。
开启SecondNameNode,需要再配置文件中加入配置。
http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
搜dfs.namenode.secondary.http-address
在hdfs-site.xml文件中加入:
<!-- secondary namenode的http通讯地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop1:9001</value>
</property>
注意:value中的主机和master对应起来即可。(原hadoop安装)
先关闭hadoop进程:
命令1:
[hadoop@hadoop1 sbin]$ sh stop-all.sh
# Instead use start-dfs.sh and start-yarn.sh
# 指的是 hdfs的
namenode、
datanode
yarn的nodemanage
同样的,开启用start-all.sh
命令2:
使用 ./hadoop-daemon.sh来指定管理。
[hadoop@hadoop1 sbin]$ ./hadoop-daemon.sh start namenode
[hadoop@hadoop1 sbin]$ ./hadoop-daemon.sh start datanode
[hadoop@hadoop1 sbin]$ ./hadoop-daemon.sh start secondarynamenode
[hadoop@hadoop1 sbin]$ ./hadoop-daemon.sh stop secondarynamenode
虽然没有指定secondarynamenode的目录,默认会在namenode同级建立目录。
[hadoop@hadoop1 dfs]$ pwd
/home/hadoop/hadoop-current/tmp/dfs
[hadoop@hadoop1 dfs]$ ls
dn namesecondary nn
[hadoop@hadoop1 dfs]$ tree namesecondary/
namesecondary/
├── current
│ ├── edits_0000000000000034584-0000000000000034585
│ ├── fsimage_0000000000000034583
│ ├── fsimage_0000000000000034583.md5
│ ├── fsimage_0000000000000034585
│ ├── fsimage_0000000000000034585.md5
│ └── VERSION
└── in_use.lock
1 directory, 7 files
说明:上述583、584、585后来建的,nameNode中会存和他一模一样的文件。当namenode挂掉时,可以将这个复制过去。
SecondNameNode过程:

上述图示的解析:

解读:
fsimage和edits文件的作用,见深入hadoop1-1 hadoop-hdfs-2- 为什么要有
SecondNameNode做到备份的呢?edits会实时记录操作命令,如put/get等,即实时更新edits。而fsimage不会,因为它是快照,数据较大,需要定时更新。那么定时更新为什么不由namenode自己完成呢?因为这会占用namenode的IO,所以交给SecondNameNode完成(SecondNameNode和namenode不在一个机器上,所以不会影响到namenode的IO)。 - 如何备份呢?见下图。会根据
fsimage的信息和fsimage时刻以后的edits操作信息来恢复。SecondNameNode会默认1小时http请求一次。

那么,线上有人在用SecondNameNode吗?没有了,都是用的HA。
可以访问SecondNameNode WEB页面:
http://hadoop1:9001


Hadoop2.x核心模块及HDFS服务功能解析
本文介绍了Hadoop2.x的核心模块,包括为其他模块提供基础设施、分布式文件系统、离线并行计算框架和新的MapReduce框架。还阐述了HDFS服务功能,如NameNode存储元数据、DataNode存储文件块数据等,同时对SecondNameNode的作用、配置和备份过程进行了说明。
1491

被折叠的 条评论
为什么被折叠?



