大数据与Hadoop--1

  • 大数据概念

    大数据(big data,mega data),或称巨量资料。比如TB、PB级别的数据。 5V volume 大量 velocity 高速 variet 多样 value 价值密度低 veracity 真实

  • 大数据价值

    数据量达到一定程度,数据本身也可以说话,数据被誉为新的生产力 当数据足够多的时候,不需要了解具体的因果关系就能够得出结论 大数据提供了多种结构的数据能够最大程度的分析出各种特征 大数据产生大量就业岗位 大数据是一种新的生产力

  • Hadoop

    是apache的一个开源的,可靠的,可扩展的系统架构,可利用分布式架构来存储海量数据,以及实现分布式计算 作用:1海量存储数据2计算海量数据 允许使用简单的编程模型在计算机集群中对大型数据进行分布式处理 hadoop集群的高可用性非常好,因为框架内的机制是可以自动检测和故障处理的 源于google的三篇论文

  • 版本

    第一代hadoop1.0为0.20.x和0.21.x和0.22.x 第二代hadoop2.0为0.23.x和2.x 第二代完全不同于第一代,是一个全新的架构,加入了yarn资源协调管理框架 yarn资源调度框架--实现对资源的细粒度封装(cpu 内存 带宽) yarn协调不同计算框架(MR,spark) hadoop3.0在2017年发布

  • 安装模式

    单机模式:不能使用HDFS,只能使用MapReduce,所以单机模式最主要的目的是在本机调试mapreduce代码 伪分布式模式:用多个线程模拟多台真实机器,即模拟真实的分布式环境。 完全分布式模式:用多台机器(或启动多个虚拟机)来完成部署集群。

  • hadoop安全模式

    在重新启动HDFS后,会立即进入安全模式,此时不能操作hdfs中的文件,只能查看目录文件名等,读写操作都不能进行。 此时namenode文件系统对于客户端来说是只读的。

    如果HDFS处于安全模式,对外只能提供读服务,不能提供写服务。

    当整个HDFS启动(namenode和datanode)时,底层每台datanode都会向namenode汇报自身的存储状态信息(存储了哪些文件块),namenode收到这写数据后,汇总并检查。检查文件块是否缺少,数据是否丢失,以及每个文件块的副本数量是否达到要求(集群环境,3副本),如果检查有问题,HDFS会进入安全模式,在安全模式下,要完成数据的修复、副本的复制。安全模式直到数据恢复完毕之后自动退出

    指令:

    hadoop dfsadmin -safemode enter
    hadoop dfsadmin -safemode leave
  • HDFS

    1.HDFS是hadoop的分布式文件系统,可以存储海量数据(文件,图片,影音等),实际工作中一般存储用户的访问日志 2.HDFS之所以能够存储海量数据,原因是一个可扩展的分布式架构,磁盘存储空间不足,加机器就可以解决 3.HDFS是基于google的一篇论文《Google File System》

    伪分布下在hdfs-site.xml 配置副本数量,只能配置1,因为如果大于1,会使得HDFS一直安全模式而不退出(因为副本数量一直满足不了要求,就一台服务器,只能存一个副本)

    HDFS存储文件的方式是切块存储:

    Hadoop 1.0 切块大小64MB

    Hadoop 2.0 切块大小128MB

    切块是以文件为单位的,不同文件的文件块不能共用。

    块是多大,在磁盘上就占多大。

    HDFS的特点:当文件上传HDFS之后,就不允许修改此文件。所以HDFS的适用场景:once-write-many-read (一次写入,多次读取)

    HDFS不允许修改数据,但允许追加数据

    HDFS不适合存储海量的小文件:因为每个文件都会占用一条元数据信息,根据经验,一条元数据大约在150字节,即如果由海量小文件时,会占用大量的namenode服务内存空间。

    HDFS 回收站机制:

    Hadoop回收站trash,默认是关闭的。

    修改conf/core-site.xml,增加

    <property>
      <name>fs.trash.interval</name>
      <value>1440</value>
      <description>
        Number of minutes between trash checkpoints.  
        If zero, the trash feature is disabled. 
      </description>
    </property>

    注:value的时间单位是分钟,如果配置成0,表示不开启HDFS的回收站。

    1440=24*60,表示的一天的回收间隔,即文件在回收站存在一天后,被清空。

    启动回收站后,比如我们删除一个文件:

    我们可以通过递归查看指令,找到我们要恢复的文件放在回收站的哪个目录下

    执行:

    hadoop fs -lsr  /user/root/.Trash

    找到文件路径后,如果想恢复,执行hdfs 的mv 指令即可,(mv指令可用于文件的移动)

  • NameNode

    主要职责是管理和存储HDFS的元数据信息(如文件名,文件大小,文件切块的数量,每个文件块的大小,文件块编号,在哪个datanode存储)-locations

    hadoop  fsck  /park01/1.txt  -files  -blocks -locations

    namenode不存储文件块 ,除了存储元数据信息以外,还会通过RPC心跳机制来管理各个datanode

    namenode为了给用户提供快速的查询,会把元数据信息存储在namenode服务器的内存中。

    namenode为了确保存储元数据的可靠性,会将元数据落地,存储的目录路径由配置文件core-site.xml里的hadoop.tmp.dir属性来指定。此属性默认是放在linux的 /tmp 目录,所以在工作中一定要更换此目录。

    namenode底层是通过两个文件来进行元数据管理:

    ①Edits文件 当客户端发起写请求时,Edits文件都会进行记录

    写请求,比如:-mkdir -put -mv

    ②Fsimage文件 存储元数据信息的

    以上这个两个文件会定期做一次合并,合并的目的是确保Fsimage文件里的数据是最新的。合并周期默认是3600s(1小时)

    以上这个两个文件可以在配置的元数据目tmp/dfs/name/current找到

    namenode格式化指令

    hadoop namenode -format 

    它的作用是在元数据目录生成新的Edits和Fsimage文件。这个指令 在初次Hadoop时需要执行一次。

    格式化指令是很危险,因为它会清空之前所有的元数据。所以在实际工作,初次使用完之后,会通过配置文件的使得这个指令失效。

    Edits和Fsimage文件可以通过指令手动合并

    hadoop dfsadmin -rollEdits

    为了当namenode宕机后,SecondaryNameNode能够工作,我们需要SecondaryNameNode具有元数据数据,所以Hadoop底层机制是让SecondaryNameNode来做元数据的合并工作,通过这机制使得namenode和SecondaryNameNode都有元数据信息了。

    以上这个机制存在一个问题,就是可能会造成元数据丢失,这个机制是Hadoop1.0的机制,是存在问题的,即SecondaryNameNode合并不能达到实时热备,所以会存在元数据丢失的情况,即Hadoop1.0的namenode还是会存在单点故障问题。

    在Hadoop2.0版本中取消了SecondaryNameNode而是使用了namenode的双机热备

    当namenode挂掉再次启动时,底层会将Edits和Fsimage合并一次。所以通过这种机制,可以确保namenode宕机再启动之后,Fsimage是最新的。

    指令单独启停某个进程:

    启动:

    hadoop-daemon.sh start namenode
    hadoop-daemon.sh start datanode
    hadoop-daemon.sh start secondarynamenode

    停止:

    hadoop-daemon.sh stop namenode
  • DataNode

   数据节点,专门用来存储和管理文件块。DataNode会定期向namenode发送心跳,心跳周期默认是3s,.配置datanode地址列表是在slaves配置文件里配置的

   如果10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其它DataNode

   DN在其文件创建后三周进行验证其checkSum的值是否和文件创建时的checkSum值一致

猜你喜欢

转载自www.cnblogs.com/Striverchen/p/10148642.html
今日推荐