版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/answer100answer/article/details/89792302
1. hadoop2.x核心模块
Hadoop项目主要包括以下四个模块
◆ Hadoop Common
:
◆ Hadoop HDFS
:
◆ Hadoop MapReduce
:
◆ Hadoop YARN
:
一个新的MapReduce框架,任务调度与资源管理
2. 安装
见hadoop安装
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
文件中加入:
<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
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过程: