一、简介
Hdfs有三个守护进程: 1、NameNode:保存存储文件与数据块的映射关系,并提供文件系统的全景图 2、Secondary NameNode: 3、DataNode:用于维护存储块的数据(数据的存储和获取) Hdfs数据读取流程: 1、客户端身份验证,(a)通过信任的客户端,(b)通过Kerberos等强认证机制来完成 2、客户端访问NameNode,并告知需要读取的文件 3、检查文件设置的访问权限 4、NameNode会告知客户端这个文件第一个数据块的标号以及保存有该数据块的DataNode列表 5、如果读取数据失败,Hdfs会尝试从其他有该copy副本的DataNode中读取数据,如果都没有则抛出异常 Hdfs数据写入流程: 1、客户端通过Hadoop文件系统相关API发送请求:请求要打开一个要写入的文件 2、判断是否拥有权限,如果拥有权限,请求发送到NameNode中,并在NameNode中建立文件的元数据 (此时新文件的元数据并未与任何数据块产生关联,客户端收到打开文件成功的信号) 3、客户端写入数据,数据被拆分成若干数据包,数据包保存在内存队列中,与此同时客户端会向NameNode请求一组DataNode列表,以便写入数据 4、客户端连接第一个DataNode,写入流,然后第二个.... 5、如果写入的磁盘过程中,有一台机器宕机了,写入管道会立即关闭,已发送并且没有得到回应的数据会被退回,并在健康的节点中更新新的ID,这样之前宕机或故障的节点中的冗余数据会发现没有与之匹配的ID而被丢弃(ID已经被更新)
二、windows 安装hadoop(Ubuntu 只是少了step 3,安装java jdk之类的是前提,估计计算机专业的在学java时安装了不止5遍吧,不谈了)
step 1:下载对应版本 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ step 2:添加环境变量:老规矩,bin目录 cmd>> hadoop version #测试是否成功 step 3:下载windows专用二进制文件和工具类依赖库: https://github.com/search?q=winutils #直接在github上找对应版本,search winntils-3.**,下载将hadoop.dll和winutils.exe放到bin文件中 step 4:etc 目录中core-site.xml <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/C:/Users/17768/Downloads/hadoop/data/dfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/C:/Users/17768/Downloads/hadoop/data/dfs/datanode</value> </property> </configuration> step 5:etc 目录中hdfs-site.xml <configuration> <property> <name>hadoop.tmp.dir</name> <value>/C:/Users/17768/Downloads/hadoop/data</value> <description>存放临时数据的目录,即包括NameNode的数据</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> step 6: cmd>> hdfs namenode -format # test success step 7:sbin目录下 start-dfs.cmd启动Hadoop http://localhost:9870/
分布式学习(4)hdfs@1
猜你喜欢
转载自blog.csdn.net/qq_36336522/article/details/104859148
今日推荐
周排行