zoukankan      html  css  js  c++  java
  • 第130讲:Hadoop集群管理工具DataBlockScanner 实战详解学习笔记

    130讲:Hadoop集群管理工具DataBlockScanner 实战详解学习笔记

    DataBlockScannerdatanode上运行的block扫描器,定期检测当前datanode节点上所有的block,从而在客户端读到有问题的块前及时检测和修复有问题的块。

    它有所有维护的块的列表,通过对块的列表依次的扫描,查看是否有校验问题或错误问题,它还有截流机制。

    什么叫截流机制?DataBlockScanner扫描时会消耗大量的磁盘带宽,如果占用磁盘带宽太大,会有性能问题。所以它会只占用一小部分磁盘带宽。

    默认隔504小时(3周)扫描一次。可以dfs.datanode.scan.period.hours属性中设置,如果发现损坏的块会报告给namenode进行修复。

    如果想查看当前datanodeDataBlockScanner的信息的话,可以访问datanodeIP50075端口。如worker4:50075/blockScannerReport。结果非常清晰。

    hdfs提供两种校验方式:

    1.校验和。第一次进行系统计算数据的校验和,在通道传输过程中,如果新生成的校验和不匹配原始的校验和,数据被认为是损坏的。

    hdfs是以透明的方式检验所有写入的数据,默认情况下进行设置,读取数据时验证校验和。数据的每一个校验块都会创建单独的校验和,默认校验块大小是512字节,对应校验和是4个字节,datanode节点在存储数据前会验证收到 的数据,如果节点检测错误,客户端会收到校验和错误:checksumexception

    客户端读取datanode上的数据时就会验证校验和,即将校验和跟datanode存储的校验和比较,每一个datanode上都会维护有校验和日志,里面有验证时间,客户端成功验证校验和后告诉datanode节点,随后更新日志。

    2.DataBlockScanner,是在datanode上开启后台线程,定期验证存储在当前datanode上的块,防止物理介质损坏出现的数据损失。

    是在单独线程中执行,周期性地校验。当dfs.client读取时会通知DataBlockScanner校验结果,DataBlockScanner最大的扫描速度是8MB/s(可设)。最小扫描速度1MB/s。默认扫描周期是3周(504hr)。因为周期较长,扫描所花时间也很长,为了避免扫描过程中datanode节点重启的情况,DataBlockScanner采用日志记录器,持久化保存每一个block上次扫描时间,这样datanode重启后会通过日志恢复每一个block的有效时间。

    为节约系统资源,会对block的验证不仅仅依赖于DataBlockScanner的后台线程还会向具体客户端传送block时更新block的扫描时间。因为datanode向客户端传送一个block时,需要校验数据块,这时日志记录器不会马上把block的扫描信息写到日志,因为频繁的磁盘IO会导致性能下降,何时会把当前block的最后扫描时间写入日志呢?这有不同条件,感兴趣可以参考源码。

     

    以上内容是王家林老师DT大数据梦工厂《Hadoop深入浅出实战经典》第130讲的学习笔记。
    王家林:SparkFlinkDockerAndroid技术中国区布道师。Spark亚太研究院院长和首席专家,DT大数据梦工厂创始人,Android软硬整合源码级专家,英语发音魔术师,健身狂热爱好者。

    微信公众账号:DT_Spark

    联系邮箱18610086859@126.com 

    电话:18610086859

    QQ:1740415547

    微信号:18610086859  

    新浪微博:ilovepains

    王家林的第一个中国梦:免费为全社会培养100万名优秀的大数据从业人员!

    可以通过王家林老师的微信号18610086859发红包捐助,目前已经发布的王家林免费视频全集如下:

    1,《大数据不眠夜:Spark内核天机解密(共100讲)》:http://pan.baidu.com/s/1eQsHZAq  

    2,《Hadoop深入浅出实战经典》 http://pan.baidu.com/s/1mgpfRPu 

    3,《Spark纯实战公益大讲坛》 http://pan.baidu.com/s/1jGpNGwu 
    4,《Scala深入浅出实战经典》 http://pan.baidu.com/s/1sjDWG25 
    5,《Docker公益大讲坛》 http://pan.baidu.com/s/1kTpL8UF 
    6,《Spark亚太研究院Spark公益大讲堂》 http://pan.baidu.com/s/1i30Ewsd 

    7Spark实战高手之路全部六阶段视频:http://edu.51cto.com/pack/view/id-144.html

    8,《大数据Spark企业级实战》购买http://item.jd.com/11622851.html

     

    130讲视频网站地址:

    51CTO

    http://edu.51cto.com/lesson/id-78344.html

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 选择排序
    Java实现 蓝桥杯VIP 算法提高 选择排序
    Java实现 蓝桥杯VIP 算法提高 选择排序
    QT中的SOCKET编程
    代理Delegate的小应用(使用setModelData设置下拉日期对话框)
    360企业云盘需求调研,包括定价
    大神为你分析 Go、Java、C 等主流编程语言(Go可以替代Java,而且最小化程序员的工作量,学习比较容易)
    VS 查看是否有内存泄露的方法
    SpringMVC之 数据绑定-1
    动画操作 (Applying Animations) ngAnimate12
  • 原文地址:https://www.cnblogs.com/richard1023/p/4966878.html
Copyright © 2011-2022 走看看