大数据 — Hadoop

HDFS


Hadoop 1.0:

  • 3个组件:
    • Namenode
    • SecondNamenode
    • Datanode

namenode(主节点,master,只有一个,单点故障的风险)中间存储信息(元数据)
2种映射关系

  1. path -> blockid list 列表
  2. blockid 数据块 -> datanode 节点地址
    元数据存在内存中
    元数据进行持久化 — 磁盘fsimage — 目的:避免数据丢失
    fsimage : 元数据镜像文件
    只有机器重启的时候加载fsimage

    元数据持久化的过程 — SNN — secondnamenode
    内存 -> edit log(磁盘)-> fsimage

    SNN 存在意义 : 备份 / 数据恢复

    namenode和 edit log关系:
    namenode需要把每一次改动都存在 edit log ,整个过程谁来推动?(Datanode和namenode之间心跳机制)

    namenode除了单点问题之外,还有不适合存储太多小文件的问题,因为内存有限

datanode (slave,从节点,多个机器)

  1. block 数据块 -> 真实输据
    多副本机制 — 默认3副本 (作用:数据冗余,高可用)
    本地化原则 (就近原则):mapreduce:主(jobtracker - namenode),从(tasktracker - datanode)

可靠性保证 :

  1. 数据校验
    目的 : 保证数据完整性 (通过crc32校验算法)
    整个数据传输过程,输据需要校验几次?
    1. client给datanode写数据:要针对写的数据,每个检查单元(512字节)
      • 每一个单元创建一个单独的校验码(crc32) , 数据和校验码统一发送给Datanode
    2. Datanode 接受输据的时候 : 用同样的加密算法,生成校验码,并校验
      • 在后台还会运行一个扫描进程:DataBlockScanner(定期校验)
      • 一旦检测出现问题,通过心跳,通知NN,让NN发起DN修复 (拷贝没有问题的备份)

2.可靠性保证 :

  • 心跳
  • 多副本机制
  • crc32
  • SNN (secondnamenode)
  • 回收站 ( .Trash 目录)

Hadoop 2.0:

 

  1. HA 高可用 : 解决了单点故障问题
    1.0里有一个SNN,但是不可靠
    如何便可靠:需要两个NN,一个active,一个standby(备用)
    为了保证两个NN的数据一致性,Datanode要对两个NN同时发送心跳

  2. 虽然Datanode同时发送心跳,但是为什么还需要JN?
    2种映射关系
    path -> blockid list 列表 :JN
    blockid 数据块 -> datanode 节点地址 : Datanode心跳
    分工不同:::

  3. HDFS2.0 需要引入zookeeper , (zookeeper目的:协调分布式集群中各个节点工作有序进行,完成故障转移)

  4. 在2.0,引入zkfc(ZookeeperFailoverController)进程,和NN部署到同一个机器上,目的:负责自己管辖之内的NN进行健康检查
    zkfc 进程会在zookeeper上注册一个临时节点
    目的:监控NN,一旦NN挂掉,相对应的临时节点消失,接下来开始选主(申请锁)流程

  5. JN目的:让activeNN和standbyNN保持输据同步(文件 -> block)
    同步问题:需要以来JN(JournalNodes)守护进程,完成元数据的一致性

  6. JN 角色有两种选择:
    1) NFS — 网络系统 (network file system)
    需要额外的磁盘空间
    2)QJM — 最低法人管理机制 (投票)
    不需要额外的磁盘空间
    需要用2n+1台机器存储edit log (奇数是为了投票)
    QJM本质是小集群
    好处
    * 不需要空间
    * 无但点问题
    * 不会因为个别机器延迟,影响整体性能
    * 只需要通过简单的系统配置可以实现

  7. NN 和 JN 通常不再一个机器上
    FC 和 NN 在同一个机器上
    RM(Yarn主) 和 NN(HDFS主) 通常在同一台机器上
    zookeeper 需要单独维护一套独立集群

 

HDFS Federation(联邦) : 水平扩展

集群中提供多个Name Node,每个NameNode负责管理一部分DataNode
每一个NN只管理自己管辖之内的DN
目的:减轻单一NN压力,将一部分文件转移到其他NN上管理

如果集群中一个目录比较大,那么可以用单独的NN维护起来
横向亏站,突破了NN的限制

不同的NN,会可以访问所有的DN吗? 会的 
联邦的本质:将元数据管理NN和存储DN进行解耦

可以把联邦和高可用同时体现出来

快照:真实数据(不是元数据) ::: 数据备份/灾备/快速恢复

本质:仅仅记录block列表和大小而已,并不涉及数据本身的复制
某个目录的某一时刻的镜像
创建和恢复,都非常快 — 瞬间完成,高效

HDFS快照是一个只读的基于时间点文件系统拷贝
HDFS快照是对目录进行设定,是某个目录的某一个时刻的镜像

  • 快照可以是整个文件系统的也可以是一部分
  • 常用来作为数据备份,防止用户错误操作和容灾恢复
  • Snapshot并不会影响HDFS的正常操作:修改会按照时间的反序记录,这样可以直接读取到最新的数据
  • 快照数据是当前数据减去修改部分计算出来的
  • 快照会存储在snapeshottable的目录下

 

快照的各种命令
hdfs dfsadmin -allowSnapshot /user/spark
hdfs dfs -createSnapshot /user/spark s0
hdfs dfs -renameSnapshot /user/spark s0 s_init
hdfs dfs -deleteSnapshot  /user/spark s_init
hdfs dfsadmin -disallowSnapshot /user/spark

 

 

缓存(集中式缓存 — 不局限具体的机器的cpu和操作系统层面上的优化)

对于重复访问的文件很有用
优点:速度快

  • 允许用户指定要缓存的HDFS路径
  • 明确的锁定可以阻止频繁使用的数据被从内存中清除
  • 集中化缓存管理对于重复访问的文件很有用
  • 可以换成目录或文件,但目录是非递归

 

权限控制 ACL

类似于linux系统acl

例:rwx - rwx - rwx
自己 - 组 - 其他

设置权限: setacl命令
需要开启功能:

    dfs.permissions.enableddfs.namenode.acls.enabledhadoop fs -getfacl /input/aclhdfs dfs -setfacl -m user:mapred:r-- /input/aclhdfs dfs -setfacl -x user:mapred /input/acl





















转载于:https://www.cnblogs.com/pipemm/articles/11331639.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/447963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE:兄弟组件间传参

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 1、定义一个中间 eventBus.js ,只有 2 行代码,用于传参: // 此页面是vue 巴士,用于兄…

asp.net ajax的学习第一篇

自己理解的asp.net ajax的核心思想&#xff1a; javascript 调用web service <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />由于工作的原因&#xff0c;要在自己的网页上使用无刷新技术&#xff0c;增加客户体验。开始学习asp…

解决:No goals have been specified for this build. You must specify a valid lifecycle phase or a goal i

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 执行打包命令报错&#xff1a; No goals have been specified for this build. You must specify a valid lifecycle phase or a goa…

生成随机码,保存随机文件.

PrivateFunction GetRandomizeNo()Function GetRandomizeNo() As Integer 功能说明:生成随机验证码 Dim RandomizeNo As Integer Randomize() RandomizeNo 9999 * Rnd() 1000 If (RandomizeNo).ToString.Length > 5 Then R…

解决:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) ...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题&#xff0c;即在mybatis中dao接口与mapper配置…

Mac 远程命令工具

转载于:https://www.cnblogs.com/BrightMoon/p/4479375.html

OpenCL 第6课:矩阵转置

上一节我们写了个一维向量相加的程序。这节我们来看一个44矩阵转置程序。 4X4矩阵我们采用二维数组进行存储&#xff0c;在程序设计上&#xff0c;我们让转置过程分4次转置完成&#xff0c;就是一次转一行。注意这里的OpenCL的工作维数是二维。&#xff08;当然用一维的方式也…

OpenCL 第7课:旋转变换(1)

旋转是一个常用的处理功能。图片中所有的点以某一个点为轴&#xff0c;顺时或逆时方向旋转N个角度。我们利用OpenCL就可以对图片中所有的点进行并行转换&#xff0c;大大提高效率。 上两节中&#xff0c;我们编写了CL文件来传递数组的地址&#xff0c;这一节中我们会多加入几个…

WinForms多线程编程之摇奖程序

利用多线程模拟一个电脑摇奖程序&#xff0c;如图所示。在点击【滚动号码】&#xff0c;启动线程&#xff0c;对后台的电话号码进行循环显示&#xff1b;点击【开奖】按钮&#xff0c;关闭线程&#xff0c;此时显示在文本框中的电话号码即为中奖号码 using System;using System…

idea 版本控制忽略文件、文件夹设置

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 setting 中&#xff1a; 或者底部的 设置 忽略某个文件 后面选择框可以去选择 忽略某个文件夹 后面选择框可以去选择 忽略某种文件 后面…

Windows Azure HandBook (1) IaaS相关技术

《Windows Azure Platform 系列文章目录》 1.Microsoft Azure底层是否由System Center和Hyper-V构成? Microsoft Azure虽然支持Hyper-V的VHD直接上传至Azure云端进行管理&#xff0c;但是Azure底层技术是微软自己研发的、独有的技术&#xff0c;且不对外提供。如果客户想构建属…

OpenCL 第8课:旋转变换(2)

上两节课都是对一个数组进行处理。这节我们来个有意思的。同样是旋转。但我们旋转的对象是张&#xff08;&#xff12;&#xff15;&#xff16;*&#xff12;&#xff15;&#xff16;&#xff09;的图片。图片旋转&#xff14;&#xff15;度&#xff0c;旋转后大小还是&…

VUE: 当前页面 引用自定义公用样式 (:style=“样式名“)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 在当前页面&#xff0c;自行定义了几个样式&#xff0c;在不同地方引用。 2. 实现代码。 样式定义&#xff1a; data() {return {i…

Visual Studio 使用说明文档、VScode 使用手册

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我只是记录下地址&#xff0c;方便自已以后查看&#xff1a; Visual Studio 使用文档 内容如&#xff1a;

“ 紫手环的力量 ” :我想,美好的生活应该是自已造就的...

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我想或许我可以试试这个方法&#xff1a; 其实 我是真的打算试试&#xff0c;最近总是会忧虑&#xff0c;或许我应该自已努力给自已造就…

解决 VUE:[WDS] Errors while compiling. Reload prevented...- invalid expression: Unexpected token -- in

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 在网上找了个组件&#xff0c;直接把代码放入自已的项目中报错&#xff0c;提示信息如黑框中&#xff1a; 2. 此组件原码就是这样用的…

linux 上 日志中查异常,指定显示异常前后日志内容

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 查异常cat -n abc.log |grep Exception|more如找到行数为&#xff1a;5201314行&#xff0c;再查看该行前后的异常信息cat -n abc.log |…

my40_MySQL锁概述之意向锁

本文在锁概述的基础上&#xff0c;通常实验举例&#xff0c;详细地介绍了意向锁的原理。 锁范围 全局锁&#xff08;global lock&#xff09;表锁&#xff08;table lock&#xff09;行锁 (row lock) ROW LOCK的粒度LOCK_REC_NOG_GAP, record lock with out gap lockLOCK_GAP&…

C语言的整型溢出问题

整型溢出有点老生常谈了&#xff0c;bla, bla, bla… 但似乎没有引起多少人的重视。整型溢出会有可能导致缓冲区溢出&#xff0c;缓冲区溢出会导致各种黑客攻击&#xff0c;比如最近OpenSSL的heartbleed事件&#xff0c;就是一个buffer overread的事件。在这里写下这篇文章&…

Thymeleaf 简介、教程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎。 Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可…