大数据学习笔记2--hdfs工作原理及源码分析

windows下配置hadoop

  1. hadoop 安装包解压,路径不要有特殊字符
  2. lib和bin直接解压出来的不可用,需要自己重新编译
  3. 配置环境变量:HADOOP_HOME,path中添加:bin目录

namenode

  • 整个文件系统的管理节点。它维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。

响应客户端的请求,上传文件:

  1. client申请上传文件,namenode查看元数据信息,查看客户端申请的路径是否已存在
  2. namenode返回可用的datanode
  3. client直接访问第一个datanode,上传第一个block,datanode向namenode报告block信息,第一个block建立一个pipeline,向其他datanode拷贝block副本,链式向下传递副本,达到配置的副本数。

namenode写元数据

  • 内存中:meta.data
  • 磁盘:fsimage、edits log
  • 先修改edits
  • 同步到meta.data

    fsimage结构:

  • 文件名,副本数,blockid,block存储的机器
  • NameNode(FileName, replicas, block-ids,id2host…)
  • /test/a.log, 3 ,{blk_1,blk_2},

    [{blk_1:[h0,h1,h3]},{blk_2:[h0,h2,h4]}]

secondary namenode 同步修改fsimage

  1. 通知namendoe切换edits,不再使用之前的edits文件
  2. secondary namenode从namenode下载edits和fsimage文件
  3. secondary namenode将他们加载到内存,进行合并,产生新的fsimage.chkpoint
  4. 将新的fsimage文件回传到namenode
  5. namenode用新的fsimage替换旧的fsimage

checkpoint

  • fs.checkpoint.period 指定两次checkpoint的最大时间间隔,默认3600秒。
  • fs.checkpoint.size

    规定edits文件的最大值,一旦超过这个值则强制checkpoint,不管是否到达最大时间间隔。默认大小是64M。

节点间通信:

  • 远程方法调用rpc
  • 大数据量的传输

FileSystem获取过程

  1. FileSystem.get(new URI(HDFS_PATH), new Configuration());//获取文件对象
  2. CACHE.get(uri, conf)//从缓存Map中获取
  3. fs = createFileSystem(uri, conf);//创建新的fs
  4. clazz = getFileSystemClass(uri.getScheme(), conf);//获取fs类
  5. ReflectionUtils.newInstance(clazz, conf)//实例化fs
  6. fs.initialize(uri, conf);//初始化fs参数
  7. dfs = new DFSClient(uri, conf, statistics)//获取dfs客户端
  8. proxyInfo =

    NameNodeProxies.createProxyWithLossyRetryHandler(conf,nameNodeUri,

    ClientProtocol.class, numResponseToDrop)//通过RPC获取和NN通信的客户端代理对象

  9. this.namenode = proxyInfo.getProxy()//获得namenode代理对象

fs持有DistributedFileSystem dfs,dfs中持有DFSClinet dfsc对象,dfsc中持有namenode代理对象

时间: 2024-10-11 01:51:40

大数据学习笔记2--hdfs工作原理及源码分析的相关文章

详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析] good

目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口的具体应用 常用HandlerMethodArgumentResolver介绍 常用HandlerMethodReturnValueHandler介绍 本文开头现象解释以及解决方案 编写自定义的HandlerMet

【MVC - 参数原理】详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:http://www.cnblogs.com/fangjian0423/p/springMVC-introduction.html SpringMVC中Controller的方法参数可以是Integer,Double,自定义对象,ServletRequest,ServletResponse,ModelAndView等等,非常灵活.本文将分析SpringMVC是如何对这些参数进行处理的,

Apache Shiro学习笔记(四)身份验证源码分析

鲁春利的工作笔记,好记性不如烂笔头 本文出自 "闷葫芦的世界" 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1828405

Java并发包中Semaphore的工作原理、源码分析及使用示例

1. 信号量Semaphore的介绍 我们以一个停车场运作为例来说明信号量的作用.假设停车场只有三个车位,一开始三个车位都是空的.这时如果同时来了三辆车,看门人允许其中它们进入进入,然后放下车拦.以后来的车必须在入口等待,直到停车场中有车辆离开.这时,如果有一辆车离开停车场,看门人得知后,打开车拦,放入一辆,如果又离开一辆,则又可以放入一辆,如此往复. 在这个停车场系统中,车位是公共资源,每辆车好比一个线程,看门人起的就是信号量的作用.信号量是一个非负整数,表示了当前公共资源的可用数目(在上面的

大数据学习笔记6·社会计算中的大数据(4)

上一篇介绍了LifeSpec项目,这个项目是关于用户理解和用户画像的.这篇是社会计算部分的最后一篇,关于用户连接和图隐私. 用户连接与隐私保护 用户连接与隐私保护有很强的相关性. 上图中,左边有两个网络.对于用户连接,我们的目标是映射这两个网络和连接这些网络中的用户节点.然后,我们就能产生一个更大的网络.这样,用户就能够被连接在一起,我们就可以知道跨网络的用户信息. 但是,如果从隐私的角度来看这个问题,把第一个图看成一个匿名化处理后的图,称其为目标图:把第二张图看成辅助图或者攻击者可获得的信息.

OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波

http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 2013-03-23 17:44 16963人阅读 评论(28) 收藏 举报 分类: 机器视觉(34) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] KAZE系列笔记: OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 OpenCV学习笔记(28)KA

【Spring】Spring&WEB整合原理及源码分析

表现层和业务层整合: 1. Jsp/Servlet整合Spring: 2. Spring MVC整合SPring: 3. Struts2整合Spring: 本文主要介绍Jsp/Servlet整合Spring原理及源码分析. 一.整合过程 Spring&WEB整合,主要介绍的是Jsp/Servlet容器和Spring整合的过程,当然,这个过程是Spring MVC或Strugs2整合Spring的基础. Spring和Jsp/Servlet整合操作很简单,使用也很简单,按部就班花不到2分钟就搞定了

ConcurrentHashMap实现原理及源码分析

ConcurrentHashMap实现原理 ConcurrentHashMap源码分析 总结 ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分析(JDK1.7). ConcurrentHashMap实现原

【Spring】Spring&WEB整合原理及源码分析(二)

一.整合过程 Spring&WEB整合,主要介绍的是Jsp/Servlet容器和Spring整合的过程,当然,这个过程是Spring MVC或Strugs2整合Spring的基础. Spring和Jsp/Servlet整合操作很简单,使用也很简单,按部就班花不到2分钟就搞定了,本节只讲操作不讲原理,更多细节.原理及源码分析后续过程陆续涉及. 1. 导入必须的jar包,本例spring-web-x.x.x.RELEASE.jar: 2. 配置web.xml,本例示例如下: <?xml vers