hadoop 分布式文件系统HDFS(2)

分布式文件系统HDFSnode

1.对刚安装好的hadoop集群作个测试,WordCount(统计一批文本文件中个单词出现的次数)实例使用web

首先新建一个目录input浏览器

mkdir input安全

cd input负载均衡

echo "hello world" > test1.txt框架

echo "hello hadoop"> text2.txtssh

bin/hadoop dfs -put input in 把本地目录上传到hadoop以in命名分布式

bin/hadoop dfs -ls ./in/* 查看列表信息oop

bin/hadoop jar hadoop-1.2.1-examples.jar wordcount in out测试

提交mapreduce做业,并把结果输出到out目录中

bin/hadoop dfs -ls ./out/*

2.经过web了解hadoop的活动

能够经过浏览器访问jobtracker所在节点50030端口监控jobtracker

namenode 50070

http://192.168.80.100:50030

3.HDFS设计基础与目标

硬件错误是常态,所以须要冗余

流式数据访问,即数据批量读取而非随机读写,hadoop擅长作的事数据分析而不是事物处理

大规模数据集

简单一致性模型,为了下降系统复杂度,对文件采用一次性写屡次读取的逻辑设计,即文件一经写入,就不再能修改

程序采用“数据就近”原则分配节点执行

4.HDFS体系结构

(1)HDFS: Hadoop Distributed File System 分布式文件系统

主从结构

主节点,只有一个: namenode

从节点,有不少个: datanodes

namenode负责:

HDFS的守护程序

对内存和I/O进行集中管理

接收用户操做请求

维护文件系统的目录结构

管理文件与block之间关系,block与datanode之间关系

管理文件系统的命名空间

记录每一个文件数据块在各个DataNode上的位置和副本信息

协调客户端对文件的访问

使用事物日志记录HDFS元数据的变化,使用映像文件存储文件系统的命名空间,包括文件映射,文件属性

是个单点,发生故障将使集群崩溃

datanode负责:

存储文件

文件被分红block存储在磁盘上

为保证数据安全,文件会有多个副本

一次写入,屡次读取(不能修改)

(2)MapReduce:并行计算框架

主从结构

主节点,只有一个: JobTracker

从节点,有不少个: TaskTrackers

JobTracker负责:

位于Master节点

用户处理做业(用户提交代码)的后台程序

接收客户提交的计算任务

把计算任务分给TaskTrackers执行

监控TaskTracker的执行状况

TaskTrackers负责:

位于slave节点,与datanode结合(代码与数据一块儿的原则)

执行JobTracker分配的计算任务

管理各自节点上的task

每一个节点只有一个tasktracker,但一个tasktracker能够启动多个JVM,用于执行map或reduce任务

与jobtracker交互

(3)SecondaryNameNode

监控HDFS状态的辅助后台程序

每一个集群都有一个

与NameNode进行通信,按期保存HDFS元数据快照

当NameNode故障能够做为备用NameNode使用

5.读取数据流程

客户端要访问HDFS的一个文件,首先从namenode得到组成这个文件的数据块列表

根据列表知道存储数据块的datanode

访问datanode获取数据

NameNode并不参与数据实际传输

6.HDFS的可靠性

(1)冗余副本策略

能够在hdfs-site.xml中设置复制因子指定副本数量

全部数据块都有副本

DataNode启动时,遍历本地文件系统,产生一份hdfs数据块和本地文件的对应关系列表(blockreport)汇报给namenode

(2)机架策略

集群通常放在不一样机架上,机架间带宽要比机架内要小

HDFS的“机架感知”

通常在机架存储一个副本,在其余机架再存放别的副本,这样能够防止机架失效时丢失数据,也能够提升宽带利用率

(3)心跳机制

NameNode周期性从datanode接收心跳信号和块报告

namenode根据块报告验证元数据

没有按时发总心跳的datanode会被标记为宕机,不会再给他任何I/O请求

若是datanode失效形成副本数量降低,而且低于预先设置的阈值,namenode会检测出这些数据块,并在适合的时机进行复制

引起从新复制的缘由还包括数据副本自己损坏,磁盘错误,复制因子被增大等。

(4)安全模式

NameNode启动时会先通过一个“安全模式”阶段

安全模式阶段不会产生数据额写

在此阶段NameNode收集各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的

在必定比例(可设置)的数据块被确认为“安全”后,再过若干时间,安全模式结束

当检测到副本数量不足的数据块时,该块会被复制直到达到最小副本数

(5)校验和

在文件创立时,每一个数据块都产生校验和

校验和会做为单独一个隐藏文件保存在命名空间下

客户端获取数据时能够检查校验和是否相同,从而发现数据块是否损坏

若是正在读取的数据块损坏,则能够继续读取其余副本

(6)回收站

(7)元数据保护

映像文件和事务日志是namenode的核心数据,能够配置为拥有多个副本

副本会下降namenode的处理速度,但增长安全性

namenode依然是单点,若是发生故障要手工切换

(8)快照

支持存储某个时间点的映像,须要时可使数据重返这个时间点的状态

7.HDFS文件操做

(1)命令行方式

列出HDFS下的文件,(没有当前目录的概念,也没有cd命令)

hadoop dfs -ls 列出HDFS下的文件

上传文件到HDFS

hadoop dfs -put ../abc abc

将HDFS的文件复制到本地

hadoop dfs -get abc ./xyz

删除HDFS下的文档

hadoop dfs -rmr abc

查看HDFS下某个文件的内容

hadoop dfs -cat ./out/part-r-00000

查看HDFS基本统计信息

hadoop dfadmin -report

进入和退出安全模式

hadoop dfadmin -safemode enter

hadoopp dfadmin -safemode leave

(2)HDFS API

上传文件到HDFS

clip_image002

建立HDFS文件

clip_image004

重命名HDFS文件

clip_image006

查看HDFS文件的最后修改时间

clip_image008

8.怎样添加节点

在新节点安装好hadoop

把namenode的有关配置文件复制到该节点

修改masters和slaves文件,增长该节点(每台机都改,能够写个脚本,散发到各个机器上)

设置ssh免密码进出该节点

单独启动该节点上的datanode和tasktracker(hadoop-daemon.sh start datanode/tasktracker)

运行start-balancer.sh进行数据负载均衡

相关文章
相关标签/搜索