Hadoop作者Doug cutting,就职Yahoo期间开发Hadoop项目,目前在Cloudera 公司从事架构工作。
•Hadoop简介:hadoop官网
–分布式存储系统HDFS (Hadoop Distributed File System )POSIX
• 分布式存储系统
• 提供了 高可靠性、高扩展性和高吞吐率的数据存储服务
–分布式计算框架MapReduce
• 分布式计算框架(计算向数据移动)
•具有 易于编程、高容错性和高扩展性等优点。
–分布式资源管理框架YARN(Yet Another Resource Management)
•负责集群资源的管理和调度
1.hadoop的分布式文件系统(HDFS)
•架构模型:
–文件元数据MetaData,文件数据
•元数据
•数据本身
–(主)NameNode节点保存文件元数据:单节点 posix
–(从)DataNode节点保存文件Block数据:多节点
–DataNode与NameNode保持心跳,提交Block列表
–HdfsClient与NameNode交互元数据信息
–HdfsClient与DataNode交互文件Block数据


•存储模型:

NameNode:

•NameNode持久化
–NameNode的metadate信息在启动后会加载到内存
–metadata存储到磁盘文件名为”fsimage”
–Block的位置信息不会保存到fsimage
–edits记录对metadata的操作日志。。。redis
DataNode:

HDFS的优点:


HDFS是比较常用的分布式文件系统,适合大文件的存储,如果文件过小会造成寻找不同文件所带了的时间和空间的麻烦!!
Secondary NameNode:
–它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。
–SNN执行合并时机
•根据配置文件设置的时间间隔fs.checkpoint.period 默认3600秒
• 根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB 。

Block的副本放置策略:

HDFS写操作:


由于block是固定大小的,不能调整期其大小,所以hdfs不支持文件修改。
HDFS读操作:

•HDFS读流程
–Client:
•和NN获取一部分Block副本位置列表
•线性和DN获取Block,最终合并为一个文件
•在Block副本列表中按距离择优选取

HDFS文件权限
–与Linux文件权限类似
•r: read; w:write; x:execute
•权限x对于文件忽略,对于文件夹表示是否允许访问其内容
如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。


•HDFS安装
–伪分布式安装
–完全分布式安装
•下载
•解压 tar -zxvf 压缩包 路径
•检查java和ssh的免密码登陆
–环境变量JAVA_HOME
–. /etc/profile 最后记得source下profile文件 或者 ~/.bashrc 都是设置环境变量的文件
-免密登陆(通过一个结点可以登录集群的所有的结点)
–ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa (生成本节点的授权码)
–cat ~/.ssh/id_dsa.pub >>~/.ssh/authorized_keys (添加到authorized_keys中)
–scp ~/.ssh/id_dsa.pub root@node02:`pwd`/node01.pub (拷贝到别的结点中)
–cat node01.pub >> ~/.ssh/authorized_keys (添加到其他结点的authorized_keys中)
•修改core-site.xml
•修改hdfs-site.xml
•修改masters文件和slaves文件 slaves文件主要配置datanode节点列表
•格式化namenode 命令为:hdfs dfs namenode -format 格式化主要是为了fsimage,version的统一化。
•Start-hdfs.sh启动
具体搭建环境参考Hadoop的指导手册,不同的版本略有差异。
网友评论