本篇文章给大家谈谈大数据保存在哪个文件夹,以及大文件储存对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、大数据常用文件格式介绍2、第三章 大数据存储3、数据库备份文件在哪个文件夹4、如何查看IT大数据中ElasticSearch组件的数据存储路径5、一般手机里的信息是储存在哪个文件夹里?6、在新建一个数据库后,.mdf 和.ldf 文件默认保存在哪个盘的哪个目录里了?大数据常用文件格式介绍
图片看不见的话可以看我CSDN上的文章:
最近在做hdfs小文件合并的项目,涉及了一些文件格式的读写,比如avro、orc、parquet等。期间阅读了一些资料,因此打算写篇文章做个记录。
这篇文章不会介绍如何对这些格式的文件进行读写,只会介绍一下它们各自的特点以及底层存储的编码格式 。
[图片上传失败...(image-a5104a-1547368703623)]
使用sequencefile还可以将多个小文件合并到一个大文件中,通过key-value的形式组织起来,此时该sequencefile可以看做是一个小文件容器。
[图片上传失败...(image-4d03a2-1547368703623)]
Parquet是一个基于列式存储的文件格式,它将数据按列划分进行存储。Parquet官网上的文件格式介绍图:
[图片上传失败...(image-92770e-1547368703623)]
我们可以看出,parquet由几个部分构成:
[图片上传失败...(image-391e57-1547368703623)]
Orc也是一个列式存储格式,产生自Apache Hive,用于降低Hadoop数据存储空间和加速Hive查询速度。
[图片上传失败...(image-ba6160-1547368703623)]
目前列式存储是大数据领域基本的优化项,无论是存储还是查询,列式存储能做的优化都很多,看完上面对orc和parquet的文件结构介绍后,我们列式存储的优化点做一个总结:
在压缩方面 :
在查询方面 :
就网上找到的一些数据来看,Orc的压缩比会比Parquet的高一些,至于查询性能,两个应该不会差距太大。本人之前做过一个测试,在多数场景,hive on mr下,orc的查询性能会更好一些。换成hive on spark后,parquet的性能更好一些
本文介绍的4种大数据存储格式,2个是行式存储,2个是列式存储,但我们可以看到一个共同点:它们都是支持分割的。这是大数据文件结构体系中一个非常重要的特点, 因为可分割使一个文件可以被多个节点并发处理,提高数据的处理速度 。
另外,当前大数据的主要趋势应该是使用列式存储,目前我们公司已经逐步推进列式存储的使用,本人也在hive上做过一些测试,在多个查询场景下,无论是orc还是parquet的查询速度都完爆text格式的, 差不多有4-8倍的性能提升 。另外,orc和parquet的压缩比都能达到10比1的程度。因此,无论从节约资源和查询性能考虑,在大多数情况下,选择orc或者parquet作为文件存储格式是更好的选择。另外,spark sql的默认读写格式也是parquet。
当然,并不是说列式存储已经一统天下了,大多时候我们还是要根据自己的使用场景来决定使用哪种存储格式。
Sequencefile
Avro和Sequencefile区别
parquet
Orc
Orc和parquet的一些对比
第三章 大数据存储
一,HDFS的基本特征与构架
1.基本特征
(1)大规模数据分布存储能力:以分布式存储能力和良好的可扩展性。(基于大量分布节点上的本地文件系统,构建一个逻辑上具有巨大容量的分布式文件系统,并且整个文件系统的容量可随集群中节点的增加而线性扩展)
(2)高并发访问能力:提供很高的数据访问宽带(高数据吞吐率),并且可以把带宽的大小等比例扩展到集群中的全部节点上
(3)强大的容错能力:(设计理念中硬件故障被视作常态)保证在经常有节点发生硬件故障的情况下正确检测硬件故障,并且能自动从故障中快速恢复,确保数据不丢失(采用多副本数据块形式存储)
(4)顺序式文件访问:(大数据批处理都是大量简单数据记录的顺序处理)对顺序读进行了优化,支持大量数据的快速顺序读出,代价是对于随机的访问负载较高
(5)简单的一致性模型(一次写多次读):支持大量数据的一次写入,多次读取;不支持已写入数据的更新操作,但允许在文件尾部添加新的数据
(6)数据块存储模式:默认的块大小是64MB。好处:减少元数据的数量,允许这些数据块通过随机方式选择节点,分布存储在不同地方
2.基本框架与工作过程
(1)基本组成结构与文件访问过程
[1]HDFS;一个建立在一组分布式服务器节点的本地文件系统之上的分布式文件系统(采用经典主-从结构)
[2]主控节点NameNode:
1)是一个主服务器,用来管理整个文件系统的命名空间和元数据,以及处理来自外界的文件访问请求
2)保存了文件系统的三中元数据
命名空间:整个分布式文件系统的目录结构
数据块与文件名的映射表
每个数据块副本的位置信息,每一个数据块默认有3个副本
[3]从节点DataNode:
1)用来实际存储和管理文件的数据块
2)为了防止数据丢失,每个数据块默认有3个副本,且3个副本会分别复制在不同节点上,以避免一个节点失效造成一个数据块的彻底丢失
[4]程序访问文件时,实际文件数据流并不会通过NameNode传送,而是从NameNode获得所需访问数据块的存储位置信息后,直接去访问对应的DataNode获取数据
[5]设计好处:
1)可以允许一个文件的数据能同时在不同DataNode上并发访问,提高数据访问的速度
2)减少NameNode的负担,避免使NameNode成为数据访问瓶颈
[6]基本访问过程:
1)首先,用户的应用程序通过HDFS的客户端程序将文件名发送至NameNode
2)NameNode接收到文件名之后,在HDFS目录中检索文件名对应的数据块,再根据数据块信息找到保存数据块的DataNode地址,讲这些地址回送到客户端
3)客户端接收到这些DataNode地址之后,与这些DataNode并行的进行数据传输操作,同时将操作结果的相关日志提交到NameNode
2.数据块
(1)为了提高硬盘的效率,文件系统中最小的数据读写单元是数据块
(2)HDFS数据块的默认大小是64MB,实际部署中,可能会更多
(3)将数据块设置大的原因是减少寻址开销的时间
(4)当应用发起数据传输请求:
[1]NameNode首先检索文件对应的数据块信息,找到数据块对应的DataNode
[2]DataNode根据数据块信息在自身的存储中寻找相应的文件,进而与应用程序之间交换数据
[3]因为检索过程是但进行,所以要增加数据块大小,这样就可以减少寻址的频度和时间开销
3.命名空间
(1)文件命名遵循“目录/子目录/文件”格式
(2)通过命令行或者是API可以创建目录,并且将文件保存在目录中。可以对文件进行创建,删除,重命名操作
(3)命令空间由NameNode管理。所有对命名空间的改动都会被记录
(4)允许用户配置文件在HDFS上保存的副本数量,保存的副本数称作“副本因子”
4.通信协议
(1)采用TCP协议作为底层的支撑协议
(2)应用协议
[1]应用可以向NameNode主动发起TCP连接
[2]应用和NameNode交互协议称为Client协议
[3]NameNode和DataNode交互的协议称为DataNode协议
(3)用户和DataNode的交互是通过发起远程调用(RPC),并由NameNode响应来完成的。另外,NameNode不会主动发起远程过程调用请求
5.客户端:是用户和HDFS通信最常见的渠道,部署的HDFS都会提供客户端
二,HDFS可靠性设计
1.HDFS数据块多副本存储设计
(1)采用了在系统中保存多个副本的方式保存数据,且同一个数据块的多个副本会存放在不同节点上
(2)优点:
[1]采用多副本,可以让客户从不同数据块中读取数据,加快传输速度
[2]HDFS的DataNode之间通过网络传输数据,如果采用多个副本可以判断数据传输是否出错
[3]多副本可以保证某个DataNode失效的情况下,不会丢失数据
2.可靠性的设计实现
(1)安全模式:
[1]HDFS启动时,NameNode进入安全模式
[2]处于安全模式的NameNode不能做任何文本操作,甚至内部的副本创建不允许
[3]NameNode需要和各个DataNode通信,获得其中保存的数据块信息,并对数据块信息进行检查
[4]只有通过了NameNode检查,一个数据块被认为安全。当被认为安全的数据块所占比例达到某个阈值,NameNode退出
(2)SecondaryNmaeNode
[1]使用它来备份NameNode元数据,以便在其失效时能从中恢复出其上的元数据
[2]它充当NameNode的一个副本,本身并不处理任何请求。
[3]作用:周期性保存NameNode的元数据
(3)心跳包和副本重新创建
[1]心跳包:位于HDFS核心的NameNode,通过周期性的活动检查DataNode的活动
[2]检测到DataNode失效,保存在其上的数据不可用。则其上保存的副本需要重新创建这个副本,放到另外可用的地方
(4)数据一致性
[1]采用了数据校验和机制
[2]创建文件时,HDFS会为这个文件生成一个校验和,校验和文件和文件本身保存在同一空间上,
[3]传输数据时会将数据与校验和一起传输,应用收到数据后可以进行校验
(5)租约
[1]防止同一个文件被多个人写入数据
[2]NameNode保证同一个文件只会发放一个允许的租约,可以有效防止出现多人写入的情况
(6)回滚
三,HDFS文件存储组织与读写
1.文件数据的存储组织
(1)NameNode目录结构
[1]借助本地文件系统来保存数据,保存文件夹位置由配置选项({dfs.name.dir}/{/tmp/dfs/name})决定
[2]在NameNode的${dfs.name.dir}之下有3个文件夹和1个文件:
1)current目录:
文件VERSION:保存了当前运行的HDFS版本信息
FsImages:是整个系统的空间镜像文件
Edit:EditLog编辑文件
Fstime:上一次检查点时间
2)previous.checkpoint目录:和上一个一致,但是保存的是上一次检查点的内容
3)image目录:旧版本的FsImage存储位置
4)in_use.look:NameNode锁,只在NameNode有效(启动并且能和DataNode正常交互)时存在。
(2)DataNode目录结构
[1]借助本地文件系统来保存数据。保存文件夹位置由配置选项{dfs.data.dir}决定
[2]在其之下有4个子目录和2个文件
1)current目录:已经成功写入的数据块,以及一些系统需要的文件
a)文件VERSION:保存了当前运行的HDFS版本信息
b)subdirXX:当同一目录下文件超过一定限制,新建一个目录,保存多出来的数据块和元数据
2)tmp目录和blockBeingWritten目录:正在写入的数据块,是HDFS系统内部副本创建时引发的写入操作对应的数据块
3)detach目录:用于DataNode升级
4)Storage目录:防止版本不同带来风险
5)in_user.lock文件:DataNode锁。只有在DataNode有效时存在。
(3)CheckPointNode目录结构:和上一个基本一致
2.数据的读写过程
(1)数据读取过程
[1]首先,客户端调用FileSystem实例的open方法,获得这个文件对应的输入流,在HDFS中就是DFSInputStream
[2]构造第一步的输入流时,通过RPC远程调用NameNode可以获得NameNode中此文件对应的数据块保存位置,包括这个文件副本的保存位置(注:在输入流中会按照网络拓扑结构,根据与客户端距离对DataNode进行简单排序)
[3]-[4]获得此输入流后,客户端调用READ方法读取数据。输入流选择最近的DFSInputStream会根据前面的排序结果,选择最近的DataNode建立连接并读取数据。
[5]如果已达到数据块末端,关闭这个DataNode的连接,然后重新查找下一个数据块
[6]客户端调用close,关闭输入流DFSInputStream
(2)数据输入过程
[1]-[2]:客户端调用FileSystem实例的create方法,创建文件。检查后,在NameNode添加文件信息,创建结束之后,HDFS会返回一个输出流DFSDataOutputStream给客户端
[3]调用输出流的write方法向HDFS中对应的文件写入数据。
数据首先会被分包,这些分包会写入一个输出流的内部队列Data队列中,接收完整数据分包,输出流回想NameNode申请保存文件和副本数据块的若干个DataNode
[4]DFSDataOutputStream会(根据网络拓扑结构排序)将数据传输给距离上最短的DataNode,这个节点接收到数据包后传给下一个。数据在各节点之间通过管道流通,减少传输开销
[5]数据节点位于不同机器上,数据需要通过网络发送。(为保证数据节点数据正确,接收到数据的节点要向发送者发送确认包)
[6]执行3-5知道数据全部写完,DFSDataInputStream继续等待知道所有数据写入完毕并确认,调用complete方法通知NameNode文件写入完成
[7]NameNode接收到complete消息之后,等待相应数量的副本写入完毕后,告知客户端
传输过程,当某个DataNode失效,HDFS执行:
1)关闭数据传输的管道
2)将等待ACK队列的数据放到Data队列头部
3)更新正常DataNode中所有数据块版本。当失效的DataNode重启,之前的数据块会因为版本不对被清除
4)在传输管道中删除失效的DataNode,重新建立管道并发送数据包
4.HDFS文件系统操作命令
(1)HDFS启动与关闭
[1]启动过程:
1)进入到NameNode对应节点的Hadoop安装目录
2)执行启动脚本:bin/start-dfs.sh
[2]关闭过程:bin/stop-dfs.sh
(2)文件操作命令格式与注意事项
[1]基本命令格式:
1)bin/hadoop dfs-cmd args args- scheme://authority/path
2)args参数基本格式前面是scheme,authority是机器地址和对应端口
a)本地文件,scheme是file
b)HDFS上文件,scheme是hdfs
(3)文件操作基本格式
[1]hadoop dfs-cat URL [URL ...]
[2]作用:将参数所指示文件内容输出到stdout
数据库备份文件在哪个文件夹
SQL数据库的备份,一般默认在你的数据库安装目录下。
可以自己点击浏览,选择保存的位置。
如何查看IT大数据中ElasticSearch组件的数据存储路径
如果是默认配置的话,就是放在ES目录下的data文件夹下
如果是默认配置的话,就是放在ES目录下的data文件夹下
-
一般手机里的信息是储存在哪个文件夹里?
你没讲清楚你的是苹果手机还是安卓手机,因为安卓手机和苹果手机存储短信的位置是不一样的,让他显示出来的方法也是不一样的,所以下面我把这两种手机短信储存位置和让其显示出来的方法都进行了说明,你可以根据自己手机类型进行查看。
一、安卓手机短信文件夹储存位置及在电脑上打开短信数据库文件
1.要找到安卓手机短信所在的文件夹,首先我们需要对安卓手机进行Root,因为手机短信是保存在手机系统盘中的,不对其进行root的话,我们是无法直接访问到系统盘里面的文件的,你可以在网上搜索“360一键Root”对您的安卓手机进行Root。
2.然后再在安卓手机上安装一款名为“RE管理器 RootExplorer"的软件。
3.在手机上打开“RE管理器RootExplorer”软件,并进入到“data\data\com.android.telephony\databases”文件夹,安卓手机短信就保存在这里。具体是保存在“mmssms.db”及“mmssms.db-wal”文件中。我们可以勾选上这两个文件,然后对其进行复制。如果您的手机中没有"mmssms.db-wal”文件的话,则说明您的所有短信内容均保存在"mmssms.db"文件中,您无需再复制"mmssms.db-wal”文件。
3.复制后,我们点击窗口顶部的".."文件夹来返回到上一层文件夹,直到返回到根目录。
4.在根目录下找到“sdcard"文件夹,点击进入,然后将先复制的两个(或一个)文件粘贴到该文件夹中。
5.将手机与电脑进行连接,然后打开手机所在盘符,将刚才复制到sdcard上的文件再次复制并粘贴到电脑的某个文件夹中。
6.导出到电脑后,该短信数据库文件是无法直接打开的,你可以下载任意手机短信恢复软件来打开mmssms.db文件,恢复安卓手机里面删除的短信内容。
二、苹果手机短信储存位置及在电脑上打开
1.打开iTunes软件,然后将手机与电脑进行连接。稍等几秒钟,待手机与电脑连接成功后,在iTunes软件界面上依次点击左上角的手机小图标,然后选择“本电脑”,再点击“立即备份”按钮,然后在弹出窗口中点击“不备份应用程序”,即依次点击下图中的1,2,3,4处,这样做,是为了将手机里面所有数据导出到电脑上来。
注意:请不要勾选“给iPhone备份加密“,如果加密了的话,导出来的手机短信也进行了加密,这样在后面将无法完成恢复操作。
2.备份的时间与您手机上安装的软件的多少有关,可能会需要几分钟到几十分钟不等,请耐心等待。当备份完成后,窗口顶部的进度条将消失。当您看不到顶部的进度条后,说明备份已经完成,下图为正在备份时的窗口界面。
3.打开“PP助手”软件,点击“工具箱”,“iTunes备份管理”,如下图所示:
4.双击刚才备份下来的这一行数据。
5.在弹出窗口的左侧,我们可以看到“短信”,我们点击它,然后再单击选中右边的“sms.db”,再点击“导出”按钮,将该文件进行导出。
说明:sms.db就是苹果手机短信保存的数据库文件,所有已删除及未删除的手机短信都保存在该文件中。
6.打开任意一款手机短信恢复软件,然后点击菜单“文件”,“打开短信数据库文件”,然后选择刚才导出来的sms.db文件。
7.然后我们再点击菜单“文件”,“恢复已删除短信”,然后软件将开始扫描。
8.稍等片刻后,软件将弹出窗口,提示成功恢复的短信条数,此时您可以点击左侧的手机号码列表来查看苹果手机上所有已删除的手机短信。
在新建一个数据库后,.mdf 和.ldf 文件默认保存在哪个盘的哪个目录里了?
如果你的程序装在c盘的话,默认的数据库是放在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data这里边的~
关于大数据保存在哪个文件夹和大文件储存的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。