zoukankan      html  css  js  c++  java
  • hadoop学习日志

    Hadoop思想之源:Google

      面对的数据和计算难题

        ——大量的网页怎么存储

        ——搜索算法

      带给我们的关键技术和思想

        ——GFS

        ——Map-Reduce

        ——Bigtable

      

    Hadoop创始人介绍:

      Hadoop作者Doug cutting,就职Yahoo期间开发了Hadoop项目,目前在CLoudera公司从事架构工作。他不但是Hadoop项目的发起人,还是Lucene、Nutch项目的发起人。

              

    Hadoop简介:

      ——名字来源于Hadoop之父Doug Cutting儿子的玩具大象。

      2003-2004年,Google公开了部分GFS和Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年业余时间实现了DFS和Mapreduce机制,一个微缩版:Nutch。

      Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入成为Hadoop的项目中。

      ——分布式存储系统HDFS(Hadoop Distributed File System)

      • 分布式存储系统;
      • 提供了:高可靠性、高扩展性和高吞吐率的数据存储服务;

      ——分布式计算框架Map-Reduce

      • 分布式计算框架
      • 具有易于编程、高容错性和高扩展性等优点。

     

    HDFS优点:

      - 高容错性:

      • 数据自动保存多个副本
      • 副本丢失后,自动恢复(最少保留三份)

      - 高可靠性

      • Hadoop按位存储和处理数据的能力值得人们信赖

      - 高扩展性

      • Hadoop是在可用的计算机集簇间分配数据并完成计算任务,这些集簇可以方便地扩展到数以千计的节点中

      - 高效性:

      • Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快

      - 适合批处理:

      • 移动计算而非数据移动
      • 数据位置暴露给计算框架

      - 适合大数据处理:

      • GB、TB、甚至PB级数据
      • 百万规模以上的文件数量
      • 10K+节点

      - 可构建在廉价机器上:

      • 通过多副本提高可靠性
      • 提供了容错和回复机制

    HDFS缺点:

      - 不适合低延迟数据访问:

      • 比如毫秒级
      • 低延迟于高吞吐率

      - 不适合小文件存取:

      • 占用NameNode大量内存
      • 寻道时间超过读取时间

      - 不支持并发写入、文件随机修改:

      • 一个文件只能有一个写者,不支持多用户写入及任意修改文件
      • 仅支持append(数据追加)

    HDFS数据存储元(block)

      - 文件被切分成固定大小的数据块

      • 默认数据块大小为64MB,可以配置
      • 若文件大小不到64MB,则单独存成一个bloce

      - 一个文件存储方式

      • 按大小被切分成若干个block,存储到不同节点上
      • 默认情况下每个block都有三个副本

      - Block大小和副本数通过Clien端上传文件时设置,文件上传成功后副本数可以变更,Block Size不可变更

    HDFS设计思想:

    NameNode(NN):
      - NameNode主要功能:接受客户端的读写服务

      - NameNode保存metadata信息,包括:

      • 整个文件系统的目录信息
      • 文件owership(所有者)和permissions(权限)
      • 文件包含哪些block
      • 文件包含的Block保存在哪个DataNode(由DataNode启动时上报)

      - NameNode的metadata信息在启动后会加载到内存:

      • metadata存储到磁盘文件名为“fsimage”
      • Block的位置信息不会保存到“fsimage”
      • edits记录对metadata的操作日志

        

    SecondaryNameNode(SNN):

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

      - SecondaryNameNode执行合并时机:

      • 根据配置文件设置的时间间隔fs.checkpoint.period默认3600秒
      • 根据配置文件设置edits log大小fs.checkpoint.size规定edits文件的最大值,默认是64MB

    SecondaryNameNode合并流程:

    DataNode(DN):

      - 存储数据(block)

      - 启动DataNode线程的时候会向NameNode汇报block信息(block位置信息),保存到NameNode的metadata(fsimage文件)中

      - 通过向NameNode发送心跳保持与其联系(3秒一次),如果NameNode10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其他DataNode,以保证每个文件的每个Block至少保存有3个副本

    Block的副本放置策略:

    HDFS写流程

    HDFS读流程

    HDFS文件权限:

      - 与Linux文件权限类似

      • r:read;w:write;x:execute,权限x对于文件忽略,对于文件夹表示是否允许访问其内容

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

      - HDFS的权限目的:阻止好人做错事,而不是阻止坏人做坏事。HDFS相信,你告诉我你是谁,我就认为你是谁

    安全模式:

      - namenode启动的时候,首先将映像文件(fsimage)载入内存,并执行编辑日志(edits)中的各项操作

      - 一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件(这个操作不需要SecondaryNameNode)和一个空的编辑日志

      - 此刻namenode运行在安全模式,即namenode的文件系统对于客户端来说是只读的(显示目录,显示文件内容等。写、删除、重命名都会失败)。

      - 在此阶段Namenode手机各个datanode的报告,当数据块达到最小副本数以上时,会被认为是“安全”的,在一定比例(可以设置)的数据块被确定为“安全”后,再过若干时间,安全模式结束

      - 当检测到副本数不足的数据块时,该块会被复制直到达到最小副本数,系统中数据块的位置并不是由namenode维护的,而是以块列表形式存储在datanode中。

    HDFS安装:

      完全分布式安装

      • 下载
      • 解压
      • 检查java和ssh的免密码登录
      • 修改core-site.xml
      • 修改hdfs-site.xml
      • 修改masters文件和slaves文件
      • 格式化namenode
      • start-hdfs.sh启动
  • 相关阅读:
    再谈AR中的图像识别算法
    turret
    Unity之MVC 模式
    Unity之Application.runInBackground = true
    快速了解和使用Photon Server
    Unity Standard Assets 简介之 CrossPlatformInput
    Lua的闭包详解(终于搞懂了)
    代码大全、人月神话和你的灯亮着吗三本软件开发设计方面好书
    大数据入门推荐
    迷茫的旅行商:一个无处不在的计算机算法问题
  • 原文地址:https://www.cnblogs.com/zhoujingyu/p/5040957.html
Copyright © 2011-2022 走看看