HDFS的上传流程以及windows-idea操作文件上传的注意
HDFS的上传流程
命令:hdfs dfs -put xxx.wmv /hdfs的文件夹
cd进入到要上传文件的当前目录,再输入hdfs命令上传,注意-put后tab可以自动补全, 最后加上你要上传到hdfs的NN文件路径,/表示根目录。
步骤1:
client接受到Linux操作命令,要求上传文件到hdfs的存储空间中,将关于文件的元数据信息发送到NameNode.
步骤2:
NN对上传文件进行校验,文件夹是否存在等;计算出需要分为几个block块存储,分别几个副本因子,存储到哪几个服务器.
计算出要上传的文件需要几个block,以及对应几个副本
block0 128M [dn11,dn12,dn13]
block1 128M [dn11,dn12,dn13]
block2 44M [dn11,dn12,dn13]
步骤3:
将计算结果返回给客户端(操作发送文件的Linux系统),需要分块的切block块,不需要的直接发送数据给DataNode(DN可能有多个,按照实现规定好的放在哪个datanode下,从头到尾依次拷贝,拷贝好的数据块会应答发送的数据块)
副本存放机制—机架感知(rack-aware):
考虑要素:
- HDFS集群的DN有很多台节点。
- 节点内部的网络数据传输, 速度最快.
- 机架内可以安装多台服务器, 节点之间网络带宽, 由于机架之间的网络带宽.
机架感知-副本存放策略(hadoop2.7.6以前)--旧版本
- 第一个block副本放在客户端所在的服务器的datanode中。
- 第二个block副本放置在本机架内的其它数据节点datanode上
- 第三个block副本放置在不同机架的随机某个节点上。(防止某个机架数据丢失)
副本存放策略(hadoop2.8.4以后)--新版本
- 第一个block副本,放在client所在的节点
- 第二个block副本,放在另一个机架上的某个节点上。
- 第三个block副本,放在第二个机架的不同节点上。
步骤4/存储后期:
最后DN正常对NN发送六个小时一次的块汇报以及三秒一次的心跳(NN对DN的管理)
块汇报(block report):dn保存block块,同时保存block的数字指纹,定期计算数字指纹与保存的数字指纹是否一致,内容不一致就不一样,来判断是否被篡改损坏.如果损坏,不再发送块报告(六小时一次),NN发掘没有汇报后,删除损坏的block,从已有副本因子进行数据同步给该损坏区域.
心跳:接收dn的磁盘信息,硬盘健康状况.较为频繁,默认三秒.
windows-idea操作注意:
@Test
public void test1() throws IOException {
// 1. 初始化配置
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hadoop10:9000");
// 2. 获得操作hdfs的客户端。
FileSystem fs = FileSystem.get(conf);
// 使用客户端的方法(命令),操作hdfs
fs.copyFromLocalFile(new Path("D:/xxx.txt"), new Path("/data"));
// 3. 关闭资源。
if (fs != null) {
fs.close();
}
}
windows需要配置hadoop环境变量|改hosts ip映射文件 | 引入hadoop依赖 |
以及需要注意的这一个异常: Permission denied: user=Administrator,access=WRITE,inode="/hdfs":root:supergroup:drwxr-xr-x
解决办法: 为上传的hfds目录添加写w权限 hdfs dfs -chmod 777 /hdfs目录
补充:
个人随笔,转载注明
HDFS的上传流程以及windows-idea操作文件上传的注意的更多相关文章
- pscp使用详解 Windows与Linux文件互传工具
pscp使用详解 Windows与Linux文件互传工具 pscp使用方法详解:pscp是putty安装包所带的远程文件传输工具,是一款十分常见windows与linux系统之间文件互传的工具,使用方 ...
- jm解决乱码问题-参数化-数据库操作-文件上传下载
jm解决乱码问题-参数化-数据库操作-文件上传下载 如果JM出果运行结果是乱码(解决中文BODY乱码的问题) 找到JM的安装路径,例如:C:\apache-jmeter-3.1\bin 用UE打开jm ...
- 【转帖】Linux上搭建Samba,实现windows与Linux文件数据同步
Linux上搭建Samba,实现windows与Linux文件数据同步 2018年06月09日 :: m_nanle_xiaobudiu 阅读数 15812更多 分类专栏: Linux Samba 版 ...
- 将windows下的文件上传到Linux服务器上
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lx_Frolf/article/deta ...
- jmeter操作 — 文件上传、下载
一.上传/下载的过程. 上传的过程就是你把你本地的文件,扔到服务器上的这么一个过程. 下载呢,就是把服务器上的文件拿过来,然后存到你本地的这么一个过程. 总结 ...
- Jmeter骚操作—文件上传、下载
最近很多同学都在问jmeter上传.下载文件的脚本怎么做,要压测上传.下载文件的功能,脚本怎么做,网上查了都说的很含糊,这次呢,咱们就好好的把jmeter的上传下载文件好好缕缕,都整明白了,怎么个过程 ...
- PHP 图片上传工具类(支持多文件上传)
====================ImageUploadTool======================== <?php class ImageUploadTool { private ...
- Struts2文件上传(基于表单的文件上传)
•Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目 •Commons-Fil ...
- 常见的文件上传方法有哪些?Ajax文件上传原理是什么?
Ajaxfileupload,Ajaxupload,JqueryUploadify无刷新式的文件上传,在一个页面里嵌入一个Iframe,然后在Iframe使用原生的Post表单提交.
随机推荐
- TCP之“3次握手,4次挥手”问题——实例分析
上一篇我们分析了三次握手和四次握手的过程,但是理论分析难免枯燥难懂,下面这篇我们来看一个例子,就能更好地理解tcp链接了. 我们可以通过网络抓包的查看具体的流程: 比如我们服务器开启9502的端口.使 ...
- 快速计算类似斐波那契数列数列的数列的第N项,矩阵快速幂
这个题有循环节,可以不用这么做,这个可以当一个模板 #include <iostream> #include <cstdio> using namespace std; typ ...
- Springboot如何启用文件上传功能
网上的文章在写 "springboot文件上传" 时,都让你加上模版引擎,我只想说,我用不上,加模版引擎,你是觉得我脑子坏了,还是觉得我拿不动刀了. springboot如何启用文 ...
- Redis-第八章节-应用场景
目录 概述 详解 1.概述 Redis支持五种数据类型:String(字符串).Hash(哈希).List(列表).Set(集合).Zset(有序集合). 2.详解 1.String(字符串) 定义: ...
- μC/OS-III---I笔记6---互斥信号量
互斥信号量 操作系统中利用信号量解决进程间的同步和互斥(互斥信号量)的问题,在多道程序环境下,操作系统就是遮掩实现进程之间的同步和互斥.但是在使用的过程中厉害的前辈还是发现了这一优秀机制的缺陷,它会导 ...
- Androidstudio 新GradlePlugin和Gradle Version对应关系
Project Gradle AS建议升级到4.2. Plugin对应AS的版本,Plugin工具也要和Gradle对应上,否则某些语法不支持,如果是非必要的建议不要轻易升级. Gradle DSL ...
- vue 二级子路由跳转不了 bug
vue 二级子路由跳转不了 bug @click.prevent 阻止原生事件的冒泡 <li class="tools-hover-box-list-item" v-for= ...
- 快速下载 Visual Studio Code
快速下载 Visual Studio Code https://visualstudio.microsoft.com/zh-hant/downloads/ 切换 cdn https://az76429 ...
- 23 种设计模式 APP & 23 Design Patterns App
23 种设计模式 APP & 23 Design Patterns App https://github.com/xgqfrms/23-design-patterns-app https:// ...
- flutter web in action
flutter web in action flutter for web https://flutter.dev/web https://flutter.dev/docs/get-started/w ...