分布式文件系统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
建立HDFS文件
重命名HDFS文件
查看HDFS文件的最后修改时间
8.怎样添加节点
在新节点安装好hadoop
把namenode的有关配置文件复制到该节点
修改masters和slaves文件,增长该节点(每台机都改,能够写个脚本,散发到各个机器上)
设置ssh免密码进出该节点
单独启动该节点上的datanode和tasktracker(hadoop-daemon.sh start datanode/tasktracker)
运行start-balancer.sh进行数据负载均衡