如果需要查看某个文件的内容,则可以使用 cat
参数。最容易想到的是直接填写 HDFS 上的某个文件路径。
(2)文件对比
如果需要比对本地目录与 HDFS 之上的文件,则可以分别填写它们的路径。但需要注意的是,本地目录需要以 file://
指示符开头,并辅以文件路径(如 /home/hadoop/.bashrc
,不要忘记路径开始的 /
)。否则,任何填写到此处的路径都会默认识别为 HDFS 上的路径。
hdfs dfs -cat file:///home/hadoop/.bashrc /user/hadoop/mapred-env.sh
(3)复制
如果需要复制某个文件到另一个路径,则可以使用 cp
参数。
hdfs dfs -cp /user/hadoop/mapred-env.sh /user/hadoop/copied_file.txt
(4)移动
同样地,如果需要移动某个文件,则使用 mv
参数。这与 Linux 的文件系统命令格式基本相同。
hdfs dfs -mv /user/hadoop/mapred-env.sh /moved_file.txt
(5)追加
如果想把一些新的内容追加到 HDFS 上的某个文件中,则可以使用 appendToFile
参数。并且在填写待追加的本地文件路径时,可以填写多个。最后一个参数将作为被追加的对象,该文件必须在 HDFS 上存在,否则将报错。
echo 1 >> a.txt
echo 2 >> b.txt
hdfs dfs -appendToFile a.txt b.txt /user/hadoop/mapred-env.sh
可以使用 tail
参数来查看文件尾部内容,以确认是否追加成功。
hdfs dfs -tail /user/hadoop/mapred-env.sh
(6)删除
如果需要删除某个文件或目录,则使用 rm
参数。该参数还可以附带 -r
和 -f
,其意义与 Linux 文件系统相同。
hdfs dfs -rm /moved_file.txt
目录操作
(1)遍历创建
实际上,如果需要同时创建多个目录,你可以直接将多个目录的路径作为参数填入。-p
参数表明当其父目录不存在时,将会被自动创建。
hdfs dfs -mkdir -p /user/hadoop/dir1 /user/hadoop/dir2/sub_dir1
(2)查看资源占有
如果想查看某些文件或者目录占用了多少的空间,则可以使用 du
参数:
hdfs dfs -du /user/hadoop/
在前文中我应用程序计算完成并产生了记录结果的文件,则可以使用 get
参数来将其导出到 Linux 系统的本地目录中。
在此处第一个路径参数指的是 HDFS 内部的路径,而最后一个路径指的是保存在本地目录的路径。
hdfs dfs -get /user/hadoop/mapred-env.sh /home/hadoop/exported_file.txt
如果导出成功,可以在本地目录找到该文件
每个 NameNode 和 DataNode 都在内部运行着一个 Web 服务器,用于显示集群的当前状态等基本信息。在默认配置下,NameNode 的首页是http://localhost:50070/
。它列出了集群中的 DataNode 和集群的基本统计数据。
打开浏览器,在地址栏中输入:
http://localhost:50070/
在 OverView 中可以看到当前“集群”中活跃的 DataNode 节点数量:
如果集群发生了问题,并且使用 HDFS 时始终报错,可以先从这里检查集群的状态是否正常,再结合日志进行分析。
Web 界面也可以用于浏览 HDFS 内部的目录和文件,在顶部菜单栏点击 “Utilities” 下的 “Broswe the file system” 链接。
===============================================================================
webhdfs:使用 http 协议访问 HDFS
配置项
1、编辑 httpfs-env.sh,设置 webdfs 访问端口
vim /opt/hadoop-2.7.3/etc/hadoop/httpfs-env.sh
export HTTPFS_HTTP_PORT=14000
2、编辑 core-site.xml,设置代理主机
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
3、编辑 hdfs-site.xml
dfs.webhdfs.enabled
true
4、重启 NameNode,执行
httpfs.sh start
(使用内嵌的 tomcat 启动)
5、命令参考资料:
如果将 HDFS 作为某个云计算系统的存储组件组成部分,外部访问是不可缺少的功能。为此, HDFS 提供了基于 HTTP 协议访问的方式—— WebHDFS 。
文件系统 URI 与 HTTP URL
维基百科对 URI 的定义如下:
统一资源标识符(Uniform Resource Identifier, URI)是为通过 URI 方案明确标识资源和可扩展性而设计的字符串。
WebHDFS 的文件系统语法格式是以 webhdfs://
开头的,一个标准的 WebHDFS 文件系统 URI 写法如下:
webhdfs://:<HTTP_PORT>/
上面的 WebHDFS URI 等价于下面的 HDFS URI 。
hdfs://:<RPC_PORT>/
在 REST API 中,在路径之前多了一个前缀 /webhdfs/v1
,在路径之后多了一些操作的参数 ?op=...
,因此相关的 HTTP URL 写法应当是如下格式:
http://:<HTTP_PORT>/webhdfs/v1/
启用 WebHDFS
在启用 WebHDFS 之前,首先应该关闭 Hadoop 集群。任何对 Hadoop 的修改都应当先关闭集群以避免对数据产生影响。
使用 Vim 编辑器打开 hdfs-site.xml 文件:
vim /opt/hadoop-2.6.1/etc/hadoop/hdfs-site.xml
打开之后,在 configuration
标签中新增以下属性和配置值:
dfs.webhdfs.enabled
true
默认情况下,如果外部应用想要访问 Namenode ,则可以直接与 Namenode 的 IP 和 50070 端口进行通信。
同样地,如果外部应用想要使用 WebHDFS 诸如上传下载的文件管理功能,则需要通过 Datanode 的 IP 和 50075 端口来与其进行通信。
在实际应用中,如果不想过于细致地区分这些端口,则可以按照以上的方式来启用 Namenode 的 WebHDFS 功能。
修改完毕后,应当再次启动 Hadoop 的相关服务
在集群启动完成之后,可以利用 curl 工具来模拟 HTTP 请求。
在终端中输入以下命令来尝试创建目录:
curl -i -X PUT “http://localhost:50070/webhdfs/v1/user/hadoop/webhdfs_dir?op=MKDIRS”
如果直接使用以上命令来创建目录,可能会遇到权限相关报错信息:
这是由于 WebHDFS 启用的安全认证模式导致的。在目前的安全等级下,我们可以附加一个 user.name
参数来指明以哪个用户创建目录。更高的权限设置可以在官方文档 Authentication for Hadoop HTTP web-consoles 中查看如何设置。
在之前的 URL 中附加一个参数 &user.name=hadoop
来表示我们用 hadoop 用户创建目录。
再次尝试在终端中输入以下命令:
curl -i -X PUT “http://localhost:50070/webhdfs/v1/user/hadoop/webhdfs_dir?op=MKDIRS&user.name=hadoop”
使用 WebHDFS 上传文件需要两个步骤,首先是在 NameNode 上创建文件的信息。首先提交一个 HTTP 的 PUT 请求,不需要自动跟踪重定向,此时也不需要发送文件的数据。
将 op
参数设置为 CREATE
,表明当前操作是创建文件。附加的参数 overwrite=true
是文件名相同时的解决办法,即覆盖原来的文件。
请在终端中输入以下命令来创建文件,此时请求的 URL 仍然是 NameNode 的 IP 和端口:
curl -i -X PUT “http://localhost:50070/webhdfs/v1/user/hadoop/new_uploaded_file.txt?op=CREATE&overwrite=true”
可以看到 HTTP 响应信息里有一个 Location
字段,第二步便是利用申请到的 Location 来上传实际的文件数据。需要注意的是,此时的 URL 已经变成了 DataNode 的 IP 和端口。在本课程中由于是伪分布式部署,你可以用 localhost
替代其 IP 。
在终端中输入以下命令来发送数据,你可以直接复制之前返回的 Localtion 里的 URL 作为请求目标。
**请注意,涉及到文件修改的操作,都需要身份认证。**因此我们还需要在请求的 URL 尾部添加一个参数,即使用哪个用户来创建:user.name=hadoop
curl -i -X PUT -T /home/hadoop/sample_data/yarn-site.xml “http://localhost:50075/webhdfs/v1/user/hadoop/new_uploaded_file.txt?op=CREATE&namenoderpcaddress=localhost:9000&overwrite=true&user.name=hadoop”
可以看到响应信息里, Location 字段已经生成了上传成功的文件的 URI 。
有了之前的基础,重命名文件和目录的操作比较容易理解,直接使用 RENAME
作为操作参数的值。并指定 destination
参数即可,该参数是指重命名之后的文件路径。
curl -i -X PUT “http://localhost:50070/webhdfs/v1/user/hadoop/new_uploaded_file.txt?op=RENAME&destination=/user/hadoop/rename.txt&user.name=hadoop”
下载文件只需要发送一个 HTTP GET 请求,并自动跟随重定向。
curl -i -L “http://localhost:50070/webhdfs/v1/user/hadoop/rename.txt?op=OPEN” -o /home/hadoop/downloaded.txt
请求首先被重定向到可以读取到文件数据的 DataNode ,然后客户端(也就是我们发出请求的这方)将会被重定向到 DataNode 以读取文件的数据。你也可以使用 curl 的 -o
参数将其保存到文件中。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
分享一套阿里大牛整理的前端资料给大家,点击前端校招面试题精编解析大全即可下载
❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。
己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-kXWegIWr-1711769001954)]
[外链图片转存中…(img-gBPuDrqh-1711769001955)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-jkLXdAH5-1711769001955)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
分享一套阿里大牛整理的前端资料给大家,点击前端校招面试题精编解析大全即可下载
❤️ 谢谢支持,喜欢的话别忘了 关注、点赞哦。