刚启动了hdfs , 那么你就可以通过在浏览器中输入 localhost : 50070 来查看当前的namenode , datanode 以及 hdfs的状态
在配置文件中 ,配置的9000 , 9001端口是干什么用的?为什么这里通过浏览器访问的时候,用的是
50070端口?
这个9000表示系统请求到达的端口 ,用户是不能访问到的
要获得namenode的信息,那就向这个端口发信息.只不过是系统来发.
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
hdfs-default.xml 与 hdfs-site.xml?
hdfs-default.xml 则是当hdfs启动时 默认去加载的xml文件,hdfs-site.xml则是
对hdfs-default.xml中的一些属性值进行修改,然后,加载hdfs-default.xml会使用这些新的
属性值!
hdfs是什么?在linux文件系统中它存在哪里?hadoop.tmp.dir是干什么用?
通过在上面的浏览器中,看到hdfs跟linux中的文件系统都是一样 , 一个 "/" 下来....
分布式文件系统 , 集群中存储文件,通过这个Hdfs来进行管理,机子与机子之间通过
网络进行通信 , 来分享文件。
Hdfs是一种master/slave的架构,有一个节点是master,相当于调度器一样,其他 节点都是slave
他们的文件系统的metedata都存储在master上.
hdfs主要分namenode 和 datanode , namenode 放在master机子上,只有一个,存储整个集群中,
多少文件的metedata , datanode则每个slave中都有,负责存储数据。
所以,hdfs就是在集群(分布式)的环境中,帮你管理数据,使得这些数据对用户或者程序员看来就像在
一台机器上的文件系统一样 , 注意这句话:"一次写多次读!!!"。
tmp.dir就是存储datanode 和 namenode数据的地方,可是当我打开这个文件夹的时候,里面并没有文件系统
树一样的表示形式,而是一些文件.这个,其实想想,类似windown的文件系统表示形式,它只是为了方便与用户
进行交互,而额外写的这些客户端程序,就像linux中,如果你用命令行,那同样你不看不到文件系统!!
文件系统,就是一道程序或者一个应用,就像webapp , 部署好应用后,后台就会有应用启动,接收请求,然后后台
程序就会根据你的请求进行处理。同样的道理,如果你不写前端代码,你启动后台的时候,你通过url传入请求,同样可以
得到想要的结果。!!这里就解释了hdfs文件系统在那这个问题吧!!!!(还是用久了window , 老觉得文件系统就应该有一个
想他一样的表示形式才叫文件系统!!!!)
NameNode
(接收用户请求)
fsimage : 文件系统镜像,每次启动文件系统能跟上次一样,因为所有文件的metedata都存储在这个
文件里面.
edits : 操作日志, 事务文件
SecondaryNameNode
从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,
并将其推送到NameNode,同时重置NameNode的edits.
可以这样理解吗,当我们上传一个文件时,并没有立马在fsimage中写入该文件的metadata, 而是先写入
edits日志文件,然后通过secondrayNameNode , 合并edits与fsimage , 也就是将操作后的metadata写入
fsimage。
但是 , 为什么要交给secondaryNameNode来处理?
分工,namenode的快速响应。
DataNode
(存储数据)
Block : 基本的存储单位
Replication : 副本 , 默认三个 hdfs-site.xml的dfs.replication属性
DFSClient , DataNode , NameNode之间的通信:
图片来源 : 智障大师
可以简单的看成HDFS由这三个对象组成,三则之间的通信通过箭头表示了,箭头所指的一方就是
请求的接收者,也就是处理请求的,另一端则是发起者,所以,由图可知,NameNode就是一个纯粹的
处理,服务器,它不会主动向其他对象发起请求,试想一下,仅有一个NameNode节点的HDFS如果还得
向DataNode , Client发起请求的话,负载不就增加了吗?再者,它就像一个仲裁者或者调度器一样,不会他找别人
只有别人找他!
DataNode 除了应对Client端的读写请求外,还会周期性的发送心跳到NameNode , 表示他还还活着,同时,心跳的返回
信息中,还可能包含有NameNode对DataNode的控制数据信息。同时,DataNode节点之间也会有消息传递,比如数据备份。
所有的这些通信都是基于RPC!
hdfs 命令的一点总结
一般格式 :
hdfs [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS]
比如 hdfs dfs -ls -h /
hdfs 表示这是在hadoop 的 dfs 中,而不是linux的文件系统中
dfs表示这是对dfs的操作, -ls 则是 dfs操作中的某一种 , -h 则是这种操作
的一种可选项 , / 则是操作对象 , 或则理解成一个方法必须有的参数
-lsr <目录名> 递归查看 -put <linux本地文件> <hdfs目录地址> 上传文件 (如果hdfs目录地址/a不存在,则会创建一个文件a) -get ......................... 下载hdfs文件到linux中 参数与put相反 -text <hdfs文件地址> 查看文件 -rm <地址> 删除文件 - rmr <地址> 删除目录 -help <命令名> 查看命令
hdfs dfs -ls hdfs://localhost:9000/ 这样 同样可以访问到根目录下的文件 有点像webapp了!
参考资源 :Jeoygin HDFS概述
吴超的HDFS视频
相关推荐
Hadoop介绍,HDFS和MapReduce工作原理
《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是IT领域的经典之作,专门探讨了Hadoop的核心组件——Hadoop Common和HDFS(Hadoop Distributed File System)的设计理念、架构及其背后的...
《Hadoop技术内幕:深入解析HADOOP COMMON和HDFS架构设计与实现原理》这本书是Hadoop技术领域的一本深入解析之作,它详尽地探讨了Hadoop的两大核心组件——HADOOP COMMON和HDFS(Hadoop Distributed File System)的...
Hadoop 的 HDFS(Hadoop Distributed File System)是 Hadoop 项目中最核心的组件之一,它提供了高可靠、高-performance 的分布式文件系统。HDFS 的核心组件包括 Namenode、Datanode、Block、DataStreamer 等。其中...
Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理
HDFS(Hadoop Distributed File System)是Hadoop的核心组件之一,它是一个高度容错性的系统,能够自动地将数据分布在多台服务器上,确保数据的高可用性和可扩展性。 标题中的"hdfs.rar_hadoop_hadoop ubuntu_hdfs_...
在本实验中,我们将深入探讨Hadoop的安装过程及其核心组件HDFS(Hadoop Distributed File System)的基础操作。Hadoop是大数据处理领域的基石,尤其在云计算环境中,它扮演着至关重要的角色。通过学习Hadoop,我们...
Hadoop技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理 (大数据技术丛书) 原版书籍,非扫描版,使用kindle可以打开,也可以转换为epub使用ibooks打开
赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...
Hadoop作为一个领先的开源分布式计算框架,其核心组成部分之一便是Hadoop Distributed File System(HDFS),它为大规模数据处理提供了高效、可靠且可扩展的存储解决方案。HDFS的设计理念主要侧重于处理大量数据的...
### Hadoop中的HDFS和MapReduce #### Hadoop核心组件:HDFS与MapReduce **Hadoop** 是一个能够处理海量数据的开源软件框架,它最初由Apache开发,旨在为大规模数据提供分布式处理能力。Hadoop的核心组件包括**HDFS...
赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...
Hadoop框架中的HDFS(Hadoop Distributed File System)是Hadoop项目的核心组成部分之一,它是一个高度容错性的系统,适合在廉价硬件上运行。HDFS提供了高吞吐量的数据访问,非常适合大规模数据集的应用。Hadoop用户...
在Java编程环境中,Hadoop分布式文件系统(HDFS)提供了丰富的Java API,使得开发者能够方便地与HDFS进行交互,包括文件的上传、下载、读写等操作。本篇文章将详细探讨如何使用HDFS Java API来实现文件上传的功能。 ...
在大数据处理领域,Hadoop是不可或缺的关键组件,其分布式文件系统(HDFS)为海量数据提供了可靠的存储解决方案。本文将详细讲解如何使用Java API来操作HDFS,特别是创建目录的功能。我们将探讨Hadoop的环境配置、...
赠送jar包:hadoop-hdfs-client-2.9.1.jar 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar 包含翻译后的API文档:hadoop-hdfs-client-2.9.1-javadoc-...
《Hadoop技术内幕:深入解析Hadoop Common和HDFS架构设计与实现原理》由腾讯数据平台的资深Hadoop专家、X-RIME的作者亲自执笔,对Common和HDFS的源代码进行了分析,旨在为Hadoop的优化、定制和扩展提供原理性的指导。...
赠送jar包:hadoop-hdfs-client-2.9.1.jar; 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar; 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-client-2.9.1.pom;...
数据架构师第004节hadoop精讲之hdfs(2) .mp4