精华内容
下载资源
问答
  • 大数据_05 【hadoop HDFS文件读写流程】01 文件写入过程02 文件读取过程03 数据校验04 DataNode节点丢失周期05 DataNode的目录结构 01 文件写入过程 详细步骤解析: 1、 client发起文件上传请求,通过RPC与NameNode...

    01 文件写入过程

    在这里插入图片描述

    详细步骤解析:
    1 client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;
    2 client请求第一个block该传输到哪些DataNode服务器上;
    3 NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C;
    
    4 client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,后逐级返回client;
    5 client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答。
    6 数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给client;
    7、关闭写入流。
    8 当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器。
    

    02 文件读取过程

    在这里插入图片描述

    1		客户端通过调用FileSystem对象的open()来读取希望打开的文件。
    2 	Client向NameNode发起RPC请求,来确定请求文件block所在的位置; 
    3 	NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址;  这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后; 
    4 	Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性) 
    5 	底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream  read 方法,直到这个块上的数据读取完毕; 
    6		并行读取,若失败重新读取
    7 	当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表; 
    8		返回后续block列表
    9  	最终关闭读流,并将读取来所有的 block 会合并成一个完整的最终文件。
    

    03 数据校验

    在这里插入图片描述

    1	数据第一次写入成功后,会进行数据校验,获得校验和。
    2	数据读取前,对数据进行校验,获得校验和,计算得到的校验和与第一次上传后的校验和进行对比。
    3	两个校验和相同表示数据相同,可以提读取数据
    4	两个校验和不相同表示数据不相同,节点去其他节点读取
    
    5	数据节点周期进行校验和计算,防止数据丢失。
    

    04 DataNode节点丢失周期

    DataNode节点长时间没有给NameNode汇报心跳,NameNode认为其丢失。
    长时间(10分钟+30秒): 2 * 超时时间 + 10 * 心跳周期

    05 DataNode的目录结构

    和namenode不同的是,datanode的存储目录是初始阶段自动创建的,不需要额外格式化。在/export/servers/hadoop-2.6.0-cdh5.14.0/hadoopDatas/datanodeDatas/current这个目录下查看版本号

    [root@node01 current]# cat VERSION 
    #Thu Mar 14 07:58:46 CST 2019
    storageID=DS-47bcc6d5-c9b7-4c88-9cc8-6154b8a2bf39
    clusterID=CID-dac2e9fa-65d2-4963-a7b5-bb4d0280d3f4
    cTime=0
    datanodeUuid=c44514a0-9ed6-4642-b3a8-5af79f03d7a4
    storageType=DATA_NODE
    layoutVersion=-56
    
    具体解释
    (1)storageID:		存储id号
    (2)clusterID		集群id,全局唯一
    (3)cTime			属性标记了datanode存储系统的创建时间,对于刚刚格式化的存储系统,这个属性为0;但是在文件系统升级之后,该值会更新到新的时间戳。
    (4)datanodeUuid:	datanode的唯一识别码
    (5)storageType:	存储类型
    (6)layoutVersion	是一个负整数。通常只有HDFS增加新特性时才会更新这个版本号。
    

    目录结构

    在这里插入图片描述

    展开全文
  • android文件读写,ndk文件读写

    千次阅读 2014-06-26 09:38:26
    1 android文件读写相关文章

    1 android文件读写相关文章

    http://sunzone.iteye.com/blog/1874382


    删除一个目录下所有文件相关方法,想不起来原创文章了,先贴上来:

    File dic4java = new File(path4crash);
    		if (dic4java.exists()) {
    			String[] tempList = dic4java.list();
    			
    			File temp = null;
    			for (int i = 0; i < tempList.length; i++) {
    				if (path4crash.endsWith(File.separator)) {
    					temp = new File(path4crash + tempList[i]);
    				} else {
    					temp = new File(path4crash + File.separator + tempList[i]);
    				}
    				if (temp.isFile()) {
    					temp.delete();
    				}
    			}


    2,ndk文件操作,

    http://www.cnblogs.com/luxiaofeng54/archive/2011/02/28/1967190.html


    c++获取当前时间:

    http://www.cppblog.com/Tongy0/archive/2011/11/23/160782.aspx


    c重命名的一个函数:

    http://hi.baidu.com/jimbor/item/8174f98eb9482b874514cf08

    http://www.linuxidc.com/Linux/2012-03/55909.htm

    展开全文
  • python文件读写

    千次阅读 2020-07-29 22:07:34
    摸了一个星期鱼,博客也断更很久了,今天看了一点python文件读写,记录一下。 打开文件 使用open函数打开文件,函数的两个主要参数为文件名和打开模式,默认的打开模式为r(read读文件) 还有一种较为常用的打开模式为...

    摸了一个星期鱼,博客也断更很久了,今天看了一点python文件读写,记录一下。

    打开文件

    使用open函数打开文件,函数的两个主要参数为文件名打开模式,默认的打开模式为r(read读文件)
    还有一种较为常用的打开模式为w(write写文件),注意使用w模式打开文件,如果文件不存在,会自动生成一个文件,如果已经存在,那么会删除文件中的所有内容,从头开始写入。还有很多打开模式,详见文字最底下的参考资料1。

    file = open('test.txt', 'r')  # 打开了同目录下的test.txt文件
    file.close()  # 关闭文件
    
    示例

    使用完文件之后记得关闭文件,这是一个好习惯。

    读文件

    假设已经有文件D:\Python_workspace\test.txt且文件中已经有如下内容:

    hello hesorchen !
    hello python !
    

    通过以下程序,可以读取文件中的所有内容,其中,read方法可以增加参数,表示读取的字符数/字节数(按照打开模式区分)

    file = open('D:\\Python_workspace\\test.txt', 'r')
    print(file.read())  # 读取所有的文件内容
    file.close()
    
    '''
    Output:
    hello hesorchen !
    hello python !
    '''
    
    示例

    当然,我们还有其他的方式读取文件,例如readline()和readlines()。其中,readline()是读取一行,readlines()是读取整个文件,并且将文件内容一行一行的分开存储在list中。

    file = open('D:\\Python_workspace\\test.txt', 'r')
    print(file.readline())  # 读取一行
    file.close()
    
    '''
    Output:
    hello hesorchen !
    '''
    
    readline()示例
    file = open('D:\\Python_workspace\\test.txt', 'r')
    print(file.readlines())  # 读取全部
    file.close()
    
    '''
    Output:
    ['hello hesorchen !\n', 'hello python !']
    '''
    
    
    readlines()示例

    另外,不得不提一个十分重要的seek()方法,他的作用是将文件指针移动到指定位置,该方法包含两个参数,第一个参数表示偏移量,第二个参数可以选择0/1/2,分别表示从文件头/当前位置/文件尾偏移

    file = open('D:\\Python_workspace\\test.txt', 'rb')
    file.seek(0, 0)
    print(file.read(1))
    file.seek(-1, 1)
    print(file.read(1))
    file.seek(-1, 2)
    print(file.read(1))
    file.close()
    
    '''
    Output:
    b'h'
    b'h'
    b'!'
    '''
    
    
    示例

    写文件

    写文件主要提两个方法:
    write():向文件写入字符串
    writellines():向文件写入字符串序列

    另外注意w模式写文件会删除文件原有内容

    file = open('D:\\Python_workspace\\test.txt', 'w')
    str1 = 'qwq'
    file.write(str1)
    file.close()
    
    read()示例
    file = open('D:\\Python_workspace\\test.txt', 'w')
    str1 = ['abc\n','1234\n','cdef\n']
    file.writelines(str1)
    file.close()
    
    readllines()示例

    参考资料

    1. Python 文件I/O
    2. python中的三个读read(),readline()和readlines()
    展开全文
  • c++文件读写

    千次阅读 2019-08-12 23:33:30
    //文件读写 using namespace std; void test() { //地址中的斜杠要么写双反斜杠,要么写单正斜杠 char sourceName[] = "C:\\Users\\Polaris\\Desktop\\source.txt"; //源文件地址 char ...

    文件操作

    #include<iostream>
    #include<fstream>	//文件读写
    using namespace std;
    
    void test()
    {
    	//地址中的斜杠要么写双反斜杠,要么写单正斜杠
    	char sourceName[] = "C:\\Users\\Polaris\\Desktop\\source.txt";	//源文件地址
    	char targetName[] = "C:\\Users\\Polaris\\Desktop\\target.txt";	//目标文件地址
    
    	ifstream ism(sourceName, ios::in);	//打开文件 读
    	//或者换成下面的写法
    	//ifstream ism;
    	//ism.open(fileName, ios::in);
    
    	//ofstream osm(targetName, ios::out);	//打开文件 写;清空文件内旧的内容,重新写进新的内容
    	ofstream osm(targetName, ios::out | ios::app);	//不清空旧内容,直接添加拷贝
    	//或者换成下面的写法
    	//ofstream osm;
    	//osm.open(targetName, ios::out);
        //osm.open(targetName, ios::out | ios::app);
    
    	if (!ism)
    	{
    		cout << "打开source文件失败!" << endl;
    	}
    	if (!ism)
    	{
    		cout << "打开target文件失败!" << endl;
    	}
    
    	char ch;
    	while (ism.get(ch))	//读文件
    	{
    		cout << ch;
    		osm.put(ch);	//写文件
    	}
    
    	ism.close();	//关闭文件
    	osm.close();	//关闭文件
    }
    
    int main() 
    {
    	test();
    	return 0;
    }
    

    在这里插入图片描述

    二进制文件读写
    #include<iostream>
    #include<fstream>	//文件读写
    using namespace std;
    
    template<class T>
    class Person
    {
    public:
    	Person() {};
    	Person(T age, T id) :m_Age(age), m_Id(id) {};
    	void Show()
    	{
    		cout << "Age: " << m_Age << "  Id: " << m_Id << endl;
    	}
    public:
    	T m_Age;
    	T m_Id;
    };
    
    
    void test()
    {
    	Person<int> p1(10, 20), p2(30, 40);	//二进制方式存在
    	//地址中的斜杠要么写双反斜杠,要么写单正斜杠
    	char targetName[] = "C:\\Users\\Polaris\\Desktop\\target.txt";	//如果文件不存在会自动创建
    	ofstream osm(targetName, ios::out | ios::binary);	
    	osm.write((char*)& p1, sizeof(Person<int>));	//二进制方式写文件
    	osm.write((char*)& p2, sizeof(Person<int>));	//二进制方式写文件
    	osm.close();	//关闭文件
    
    	Person<int> p3, p4;	
    	ifstream ism(targetName, ios::in | ios::binary);
    	ism.read((char*)& p3, sizeof(Person<int>));		//二进制读文件
    	ism.read((char*)& p4, sizeof(Person<int>));		//二进制读文件
    	p3.Show();
    	p4.Show();
    	ism.close();	//关闭文件
    }
    
    int main() 
    {
    	test();
    	return 0;
    }
    

    在这里插入图片描述

    展开全文
  • C语言文件读写(1)-文本文件读操作

    千次阅读 多人点赞 2020-06-30 12:40:09
    C语言文件读写-之文本文件读写
  • c 文件读写

    千次阅读 2019-01-30 14:50:30
    c 文件读写  一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。 打开文件  格式:  FILE *fopen( const ...
  • JNI 文件读写

    千次阅读 2017-08-20 17:51:22
    对于只要入门了的Java工程师,写一个文件读写的功能是相当的简单,但是通过JNI进行文件的读写,相信有很多人都没去做过。当然对于JNI入门了的开发人员来说,这只是小菜一碟而已。 今天我也来试试JNI如何实现文件...
  • Android 文件读写最全解析

    千次阅读 多人点赞 2020-04-21 18:08:19
    本文目录文件读写概述读取raw目录文件读取assets目录文件data/data/(包名) 目录文件读写写数据读数据sdcard文件读写申请动态权限写数据读数据完整代码 文件读写概述 raw下的和assert下的文件可以以资源文件的形式...
  • 21. Perl 文件操作-文件读写

    千次阅读 2019-08-27 16:03:27
    perl 程序通过文件句柄对文件进行文件读写 文件句柄相当于一个指针, 指向这个文件; 定义文件句柄有两种方式: 一种是会名称全部时大写, 另一种时是定位为标量, 笔者建议句柄使用标量, 因为perl默认的文件句柄为全部...
  • linux下文件读写

    千次阅读 2019-06-23 10:25:26
    linux 下一切皆文件 文件读写 文件的打开open函数 涉及头文件: ubuntu 头文件所在目录:/usr/include/x86_64-linux-gnu/sys #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> ...
  • C语言 文件读写的实现

    千次阅读 多人点赞 2019-04-26 11:55:33
    关于C语言的文件读写,我将介绍下面这几种方式: 字符的读写:使用 fgetc() 函数 和 fputc() 函数; 字符串的读写:使用 fgets() 函数和 fputs() 函数; 格式化的读写(主要用于文本文件):使用 ...
  • ini文件读写操作

    千次阅读 2016-11-17 15:56:54
    ini文件读写操作
  • 文件读写时,read write fread fwrite都可以实现,如果文件很大,耗时就特别长。 内存映射和分页读写可以解决这个问题,小弟对于读操作没疑问,对于写就有一个难题: 举例: 一个文件分成n页,我获取了第2页的内容...
  • python的文件读写操作

    千次阅读 多人点赞 2019-04-28 08:30:49
    文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一、I/O操作概述 I/O在计算机中是指Input/Output,也就是Stream(流)的输入和输出。这里的输入和...
  • C++文件读写详解(ofstream,ifstream,fstream)

    万次阅读 多人点赞 2018-12-29 11:29:08
    相关的头文件:#include <fstream> 需要相关的类 fstream提供三种类,实现C++对文件的操作 ofstream:写操作,由ostream引申而来 ifstream:读操作,由...文件读写的步骤: 1、包含的头文件:#includ...
  • SQL注入篇——文件读写注入

    千次阅读 2020-02-10 21:34:27
    文件读写注入的原理 就是利用文件的读写权限进行注入 文件读写注入的条件 1、读写文件需要secure_file_priv权限 secure_file_priv= 代表对文件读写没有限制 2.secure_file_priv=NULL 代表不能进行文件读写 secure_...
  • MATLAB03:数据类型与文件读写

    万次阅读 多人点赞 2019-11-14 13:13:44
    文章目录MATLAB03:数据类型与文件读取数据类型数值类型(numeric)字符串类型(char)结构体(structure)结构体的基本使用结构体的常用函数元胞数组(cell)元胞数组的基本使用元胞数组的常用函数高维元胞数组判断变量数据...
  • verilog文件读写

    千次阅读 2016-05-08 11:26:28
    verilog内建提供了一些系统函数用于文件读写,常用的有$readmemh(),$readmemb(),$fopen(),$fdisplay(); $readmemh/$readmemb函数通常用于对rom的行为模型建模,向rom中加载用户程序。 用法如下: 1 reg [31:0...
  • c之文件读写

    千次阅读 2018-02-09 15:26:34
    文件读写上一章我们讲解了 C 语言处理的标准输入和输出设备。本章我们将介绍 C 程序员如何创建、打开、关闭文本文件或二进制文件。一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言...
  • MFC中TXT文件读写

    万次阅读 多人点赞 2017-05-02 18:28:09
    正确的文本文件读写过程 1.定义文件变量;2.打开指定的文件;3.向从文本文件中写入信息;4.从文本文件中读取信息;5.关闭文件 1、定义文件变量 定义文件变量格式:CStdioFile 文件变量; 例如,定义一...
  • c++文件读写操作

    万次阅读 多人点赞 2018-04-17 11:07:00
    近期适配几款游戏的数据,因为重复量太大,因此写一个对数据进行处理的程序,下面是整个...fstream提供了三个类,用来实现c++对文件的操作(文件的创建、读、写) ifstream -- 从已有的文件读入 ofstream -- 向...
  • FileStorage 文件读写操作

    千次阅读 2017-11-20 17:37:30
    本片博客重点利用FileStorage 进行文件读写操作练习; 创建一个common.hpp文件,存放结构体 #ifndef common_hpp #define common_hpp #include #include #include #include typedef struct my_struct { int m...
  • Android 9.0 sdCard文件读写

    千次阅读 2019-02-22 14:59:21
    目录 背景描述: 解决方案: 处理过程中遇到的问题(代码中需要替换的点) ...导致之前的文件读写方式无法对sdcard生效 http://androidxref.com/9.0.0_r3/search?q=&amp;defs=&amp;refs=&...
  • Android Studio文件读写操作

    千次阅读 2020-04-28 12:14:56
    Android Studio文件读写操作 自己学习记录,以便后续复习和查找。大神飘过! 直接上代码 读代码: public String read(){ FileInputStream in=null; BufferedReader reader=null; StringBuilder content=new ...
  • C语言实现二进制文件读写

    千次阅读 2019-01-29 16:31:51
    C语言实现二进制文件读写
  • Android中的文件读写操作是不可或缺的,每个应用都会涉及到读写操作。这里将读写操作分成了四个部分 assets文件夹中文件数据的读取 raw文件夹中的文件数据的读取 Android内部存储文件的读写 Android...
  • Json格式文件读写

    千次阅读 2017-04-05 16:05:49
    Json格式文件读写操作记录 package com.springwoods.utills; import java.io.*; /** * Created by LucienWong on 16-11-16. */ public class JsonUtils { /** * 从给定路径读取Json文件 * */ ...
  • ios文件读写

    万次阅读 2012-02-09 15:05:07
    在开发的过程中,经常碰见文件读写的时候,这里我就简单记录一些在ios开发里面的文件读写api,为了以后用着方便。 ios开发里面,文件的目录是固定的,可以用 NSHomeDirectory()方法读取项目文件的目录, NSString*...
  • 关于二进制的文件读写

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,433
精华内容 48,573
关键字:

文件读写