Block数据&##x5757;apache
基本存储单位,通常大小为64M(配置大的块主要是由于:1)减小搜寻时间,通常硬盘传输速率比寻道时间要快,大的块能够减小寻道时间;2)减小管理块的数据开销,每一个块都须要在NameNode上有对应的记录;3)对数据块进行读写,减小创建网络的链接成本)浏览器
一个大文件会被拆分红一个个的块,而后存储于不一样的机器。若是一个文件少于Block大小,那么实际占用的空间为其文件的大小安全
基本的读写S#x5355;位,相似于磁盘的页,每次都是读写一个块网络
每一个块都会被复制到多台机器,默认复制3份ssh
NameNode分布式
存储文件的metadata,运行时全部数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小ide
一个Block在NameNode中对应一条记录(通常一个block占用150字节),若是是大量的小文件,会消耗大量内存。同时map task的数量是由splits来决定的,因此用MapReduce处理大量的小文件时,就会产生过多的map task,线程管理开销将会增长做业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。所以Hadoop建议存储大文件oop
数据会定时保存到本地磁盘,但不保存block的位置信息,而是由DataNode注册时上报和运行时维护(NameNode中与DataNode相关的信息并不保存到NameNode的文件系统中,而是NameNode每次重启后,动态重建)spa
NameNode失效则整个HDFS都失效了,因此要保证NameNode的可用性线程
Secondary NameNode
定时与NameNode进行同步(按期合并文件系统镜像和编辑日&#x#x5FD7;,而后把合并后的传给NameNode,替换其镜像,并清空编辑日志,相似于CheckPoint机制),但NameNode失效后仍须要手工将其设置成主机
DataNode
保存具体的block数据
负责数据的读写操做和复制操做
DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息
DataNode之间会进行通讯,复制数据块,保证数据的冗余性
项目案例-hdfs分布式文件系统
Hadoop是apache软件基金会的开源分布式计算平台hadoop集群包括两种角色Mater和Slave。一个HDFS集群由一个运行于Master上的NameNode和若干个运行于Slave节点的DataNode组成。NameNode负责管理文件系统命名空间和客户端对文件系统的访问操做;DataNode管理存储的数据。文件以块形式在DataNode中存储,假如一个块大小设置为50MB,块的副本数为3(经过设置块的副本数来达到冗余效果,防止单个DataNode磁盘故障后数据丢失),一个40MB的文件将被存储在一个块中,而后将相同的3个块存储在3个DataNode中实现冗余。大文件将被切成小块存储。
本实验的目的:
搭建hadoop的HDFS,经过DataNode节点的添加与删除实现HDFS空间动态增长与减小,以及HDFS文件系统的基本管理。
实验环境:
虚拟机环境:
实验步骤:
一、准备环境
1)master、slave1~3上配置域名解析与主机名
在0.11~0.13分别操做 主机名不同分别为slave2,slave3.
2)JDK安装
3)添加hadoop运行用户
同理:在slave1-slave3上重复步骤2)和步骤3),这里就不在截图。
二、配置SSH密钥对
要求master免密码登陆各slave,用于开启相应服务。
Master无密码链接slave,先切换hadoop用户,用ssh-keygen按照默认配置直接按Enter键生成密钥对,经过ssh-copy-id将公钥复制至3个slave主机中,复制过程须要输入slave主机的hadoop用户密码,做用是master远程启动slave。
三、安装hadoop,在master和slave上配置环境变量。
1)安装hadoop
2)配置环境变量
执行source /etc/profile
3)配置hadoop
每一个slave主机重复步骤1)和步骤2)(即它们也须要安装hadoop并设置环境变量),等前两步完成了再由master经过SSH安全通道把刚才配置的6个文件复制给每一个slave。
每一个slave主机上重复1)和2)步骤的截图这里省略,请参考上面去作,命令所有同样
四、使用HDFS初始化master
1)格式化HDFS文件系统
2)检查新生成的目录
3)启动hadoop群集(开机hadoop的冗余功能)
启停hadoopde的管理命令位于$HADOOP_HOME/sbin下,以start-*或stop-*开头;单独启动HDFS分布式文件系统可以使用start-dfs.sh,也可使用如下命令启动整个hadoop集群。
4)验证访问
经过浏览器查看NameNode,即master,访问http://192.168.0.10:50070,能够查看视图统计信息和HDFS存储信息等。
验证以前先关闭master和全部slave的防火墙
5)hadoop基本命令
使用“hadoop fs”命令能够结合普通的文件管理命令实现不少操做,如查看、修改权限、统计、获取帮助、建立、删除、上传下载文件等,更多的用法可以使用“hadoop fs -help”或“hadoop fs -usage”命令查看。
6)HDFS高级命令
⑴开机安全模式
⑵复制
①将本地文件复制到HDFS上(注意不要在安全模式下)
②将HDFS上的文件复制到本地
⑶权限和归属
①修改属组
②修改权限
③修改全部者
⑷统计显示目录中文件大小
⑸合并文件
五、为HDFS集群添加节点
⑴slave4节点安装jdk与hadoop,配置环境变量
⑵配置/etc/hosts解析,NameNode与4台DataNode都要配置
⑶配置ssh无密码链接
⑷在master上修改hadoop配置后,复制到其余节点
⑸新节点启动并平衡节点已经存储的数据
在slave4上
su - hadoop
以后执行下面的命令
⑹查看集群信息
六、删除DataNode节点
⑴增长exclude配置,做用为存放要删除的DataNode信息。
⑵检查slave4的进程
⑶查看集群信息