1 HDFS机制

namenode

负责元数据的管理
处理client的读写的请求

datanode

数据块本身
数据块的元数据(数据块的长度,块数据的校验和,以及时间戳)

心跳

namenode启动后,datanode向namenode进行注册,然后周期性的发送心跳信号;

心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令;比如删除块,复制块等;
如果超过10分钟没有收到某个DataNode 的心跳,NameNode则认为该节点不可用

块报告

并且datanode周期性的向namenode进行块报告。

DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息

块损坏

当DataNode读取block的时候,重新计算checksum,和创建时的对比
DataNode 在其文件创建后三周验证其checksum

2 HDFS启动流程及元数据的同步

HDFS启动流程

NameNode启动,加载元数据,并等待datanode注册,同时进入安全模式; datanode注册后,向namenode发送心跳和和Block Report。

加载元数据:加载fsimage和edits文件,合并生成新的fsimage,并生成edits文件

元数据同步

fsimage 是元数据的镜像文件

edits 是记录元数据操作的文件

元数据的同步触发的阈值(hdfs-default.xml)
	dfs.namenode.checkpoint.period		3600
	dfs.namenode.checkpoint.txns		1百万个事务

3 安全模式

在安全模式下,文件系统不允许修改

进入安全模式的三种方式
1) 手动进入
	$ bin/hdfs  dfsadmin -safemode enter 
	$ bin/hdfs  dfsadmin -safemode leave
2) namenode启动会自动进入

3) 正常块的个数/总的块个数<0.999 也会进入安全模式
	<property>
		<name>dfs.namenode.safemode.threshold-pct</name>
		<value>0.999f</value>
	</property>

4 HDFS特点

  • 优点
  • 处理超大文件
  • 一次写入,多次读取
  • 运行廉价服务器
  • 缺点:
  • 高延迟,不适合接入前台业务,一般用于离线分析
  • 不支持任意的修改

5 window下mapreduce开发环境搭建

5.1 Windows安装hadoop
1. 解压hadoop-2.x.tar.gz到windows磁盘

2. 配置hadoop的环境变量
        添加环境变量           HADOOP_HOME=hadoop解压目录
        在PATH环境变量中追加    %HADOOP_HOME%/bin;
3. cmd测试
        hadoop -h
5.2 在windows添加
拷贝winutils.exe 和hadoop.dll到${hadoop_HOME}/bin
单独拷贝hadoop.dll到C:\Windows\System32
5.3 关闭HDFS权限
配置hadoop集群的权限
在linux中的hadoop安装目录下的etc/hadoop/hdfs-site.xml添加如下配置,重启HDFS的进程
<!--关闭hdfs的文件权限控制-->
<property>
    <name>dfs.permissions</name>
    <value>false</value>		
</property>
5.4 创建maven工程,通过pom.xml导包
创建maven工程
将lo4j.perperties文件拷贝到src/main/resources

6 HDFS Java API