分布式学习(4)hdfs@1

一、简介

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/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值