Hadoop介绍——HDFS

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数据

15737641-28972230a43da5a8.png
HDFS架构
15737641-6fc6a2789e85f73b.png
文本放置思想

•存储模型:

15737641-9c1aa833ed0ef1d1.png
HDFS存储模型

NameNode:

15737641-ce21149d95f2c7f6.png

•NameNode持久化

      –NameNode的metadate信息在启动后会加载到内存

      –metadata存储到磁盘文件名为”fsimage”

      –Block的位置信息不会保存到fsimage

      –edits记录对metadata的操作日志。。。redis

DataNode:

15737641-a300a92f31f61200.png

HDFS的优点:

15737641-01f5b15a396f926d.png
优点


15737641-b9e86662a2dbfe3a.png
缺点

HDFS是比较常用的分布式文件系统,适合大文件的存储,如果文件过小会造成寻找不同文件所带了的时间和空间的麻烦!!

Secondary NameNode

    –它不是NN的备份(但可以做备份),它的主要工作是帮助NN合并edits log,减少NN启动时间。

   –SNN执行合并时机

    •根据配置文件设置的时间间隔fs.checkpoint.period  默认3600秒

    •  根据配置文件设置edits log大小 fs.checkpoint.size 规定edits文件的最大值默认是64MB 。

15737641-83e9edf55a0df62b.png
SNN帮助NN合并edits log的过程

Block的副本放置策略:

15737641-dcf1df8291503333.png
副本存放策略

HDFS写操作

15737641-a9985b250c03ffdc.png
由客户端写文件到HDFS
15737641-c8758b33378dbf51.png

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

15737641-fd4d2faad938beba.png
HDFS读操作

•HDFS读流程

   –Client:

      •和NN获取一部分Block副本位置列表

      •线性和DN获取Block,最终合并为一个文件

      •在Block副本列表中按距离择优选取

15737641-815c6d0770f1cb82.png
client写,读操作过程

HDFS文件权限

–与Linux文件权限类似

•r: read; w:write; x:execute

•权限x对于文件忽略,对于文件夹表示是否允许访问其内容

如果Linux系统用户zhangsan使用hadoop命令创建一个文件,那么这个文件在HDFS中owner就是zhangsan。

15737641-65598ec0eca742d0.png
安全模式
15737641-bd51e61534c74b53.png
总结

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的指导手册,不同的版本略有差异。

猜你喜欢

转载自blog.csdn.net/weixin_34336292/article/details/91013995