zoukankan      html  css  js  c++  java
  • Hadoop学习笔记【入门】

    Hadoop是雅虎根据Google的几项核心技术,演化而来

    Google VS Hadoop

      

    Hadoop是什么

    1. 一个分布式文件系统和并行执行环境
    2. 让用户便捷的处理海量数据
    3. Apache软件基金会下面的一个开源项目
    4. 目前Yahoo!是最主要的贡献者
    5. 09年4月-- 赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。

    Hadoop的特点

    1. 扩容能力(处理PB级数据)
    2. 成本低(普通计算机群)
    3. 高效率(并行处理)
    4. 可靠性(备份)

    物理部署

      

    HDFS(Hadoop Distributed分布式 File System)

    1. 存储并管理PB级数据
    2. 处理非结构化数据
    3. 注重数据处理的吞吐量
    4. 应用模式为:write-once-read-many
    5. 不建议存储小文件
    6. 不建议大量的随机读
    7. 不支持对文件修改

    HDFS的设计目标

    1. 假设节点失效是常态
    2. 任何节点失效,不影响HDFS服务
    3. HDFS可以自动完成副本的复制

    HDFS主要组件

      

      

    1. 文件切分成块(默认大小64M),以块为单位,每个块有多个副本存储在不同的机器上,副本数可在文件生成时指定(默认3)
    2. NameNode是主节点,存储文件的元数据,如:文件名,文件目录结构,文件属性(生成时间,副本数,文件权限),以及每个文件的块列表以及块所在的DataNode等等 
    3. DataNode在本地文件系统存储文件块数据,以及块数据的校验和
    4. 可以创建、删除、移动或重命名文件,当文件创建、写入和关闭之后不能修改文件内容

      

    NameNode

    1. 是一个中心服务器,单一节点(简化系统设计和实现),负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
    2. 文件操作:它负责文件元数据操作,DataNode负责处理文件内容的读写请求,跟文件内容相关的数据流不经过NameNode,只会询问它跟哪个DataNode联系。
    3. 副本存放在哪个DataNode上由NameNode控制,读取文件时NameNode尽量让用户读最近的副本,降低时延。
    4. NameNode全权管理数据块的复制,它周期性地从集群中的每个DataNode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该DataNode上所有数据块的列表。

    DataNode

    1. 一个数据块在DataNode以文件存储在磁盘上,包括两个文件,一个是数据本身;一个是元数据,包括数据块的长度,块数据的校验和,以及时间戳。
    2. DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有块信息。
    3. 心跳每3秒一次,返回结果带有NameNode给该DataNode的命令,如复制块数据到哪,或删除某个数据块。如果超过10分钟没有收到DataNode的心跳,则认为该节点不可用。
    4. 集群运行中可以安全加入和退出一些机器。

    Example:HDFS如何写文件

       

    Example:HDFS如何读文件

       

    MapReduce

    与高性能计算比较-->HPC是将作业分配给一个机器集群,它们访问共享文件系统,但是当节点需要访问大量数据时,网络带宽成为“瓶颈”,计算节点会闲置下来;
    MapReduce尝试在计算节点本地存储数据,这项“数据本地化”功能,成为MR的核心也是它拥有良好性能的原因之一。
      
    MR的特性:1.自动实现分布式并行计算
    2.容错
    3.提供状态监控工具
    4.模型抽象简洁,程序员易用

    MapReduce示例

      

      

      

      

    MapReduce处理流程

      
    1. Map产生输出,先将数据写到内存的一个缓冲区,进行预排序(每个Map任务都有一个缓冲区,默认100M。当缓冲区中的数据量达到阀值时0.8,系统会启动一个后台线程把缓冲区中的内容spill到磁盘,在spill过程中,Map继续输出,如果缓冲区已满,Map线程阻塞,直到spill完)。
    2. Spill线程在把缓冲区的数据写到磁盘前,会进行二次快速排序,输出一个索引文件和数据文件。
    3. 如果设定了Combiner,将在排序输出的基础上运行

    附加几点

    1. JobTracker对应于NameNode,TaskTracker对应于DataNode
    2. NameNode和DataNode是针对数据存放而言的
    3. JobTracker和TaskTracker是对于MapReduce执行而言的
    4. JobTracker运行在HDFS的NameNode节点上,TaskTracker运行在DataNode节点上

  • 相关阅读:
    搜索型SQL注入解决方法
    windows10系统下phpstudy安装php8版本
    齐博cms基础教程之认识齐博cms
    thinkphp查找父级栏目及子级栏目的所有文章
    phpstudy+iis搭建php项目
    python办公自动化基础搜索文件
    thinkphp屏蔽ip访问项目做法
    thinkphp使用paypal进行支付的做法详细步骤
    数据库无法插入数据解决方法
    tp5发送邮件适用于常用的php版本做法
  • 原文地址:https://www.cnblogs.com/lukawa/p/3727386.html
Copyright © 2011-2022 走看看