hdfs存储文件格式
A. hdfs 列式存储和行式存储的区别
列式数据库是将同一个数据列的各个值存放在一起。插入某个数据行时,该行的各个数据列的值也会存放到不同的地方。
列式存储: 每一列单独存放,数据即是索引。
只访问涉及得列,如果我们想访问单独一列(比如NAME)会相当迅捷。
一行数据包含一个列或者多个列,每个列一单独一个cell来存储数据。而行式存储,则是把一行数据作为一个整体来存储。
在HANA的世界中,并不是只存在列式存储,行式存储也是存在的。
各自的优缺点:
B. hdfs的特点有哪些
hdfs的特点
一、hdfs的优点
1.支持海量数据的存储:一般来说,HDFS存储的文件可以支持TB和PB级别的数据。
2.检测和快速应对硬件故障:在集群环境中,硬件故障是常见性问题。因为有上千台服务器连在一起,故障率很高,因此故障检测和自动恢复hdfs文件系统的一个设计目标。假设某一个datanode挂掉之后,因为数据是有备份的,还可以从其他节点里找到。namenode通过心跳机制来检测datanode是否还存活。
3.流式数据访问:(HDFS不能做到低延迟的数据访问,但是HDFS的吞吐量大)=》Hadoop适用于处理离线数据,不适合处理实时数据。HDFS的数据处理规模比较大,应用一次需要大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理。应用程序能以流的形式访问数据库。主要的是数据的吞吐量,而不是访问速度。访问速度最终是要受制于网络和磁盘的速度,机器节点再多,也不能突破物理的局限。
4.简化的一致性模型:对于外部使用用户,不需要了解hadoop底层细节,比如文件的切块,文件的存储,节点的管理。一个文件存储在HDFS上后,适合一次写入,多次读取的场景。因为存储在HDFS上的文件都是超大文件,当上传完这个文件到hadoop集群后,会进行文件切块,分发,复制等操作。如果文件被修改,会导致重新触发这个过程,而这个过程耗时是最长的。所以在hadoop里,2.0版本允许数据的追加,单不允许数据的修改。
5.高容错性:数据自动保存多个副本,副本丢失后自动恢复。可构建在廉价的机器上,实现线性扩展。当集群增加新节点之后,namenode也可以感知,将数据分发和备份到相应的节点上。
6.商用硬件:Hadoop并不需要运行在昂贵且高可靠的硬件上。它是设计运行在商用硬件(在各种零售店都能买到的普通硬件)的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。
二、HDFS缺点(局限性)
1、不能做到低延迟数据访问:由于hadoop针对高数据吞吐量做了优化,牺牲了获取数据的延迟,所以对于低延迟数据访问,不适合hadoop。对于低延迟的访问需求,HBase是更好的选择。
2、不适合大量的小文件存储 :由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存容量。根据经验,每个文件、目录和数据块的存储信息大约占150字节。因此,如果有一百万个小文件,每个小文件都会占一个数据块,那至少需要300MB内存。如果是上亿级别的,就会超出当前硬件的能力。
3、修改文件:对于上传到HDFS上的文件,不支持修改文件。Hadoop2.0虽然支持了文件的追加功能,但是还是不建议对HDFS上的文件进行修改。因为效率低下。HDFS适合一次写入,然后多次读取的场景。
4、不支持用户的并行写:同一时间内,只能有一个用户执行写操作。
C. hdfs文件系统可以代替mysql吗
不能。
不是一个概念。mysql是传统的关系型数据库。hdfs是nosql hadoop的存储方式。hdfs是分布式的自带高可用存储,文件格式跟mysql的存储引擎不一样。大数据离线存储,当然是hdfs更合适。通过Map/Rece进行批处理递送到Apache Hadoop仍然是中枢环节。但随着要从“超思维速度“分析方面获取竞争优势的压力递增,因此Hadoop(分布式文件系统)自身经历重大的发展。
科技的发展允许实时查询,如Apache Drill, Cloudera Impala和Stinger Initiative正脱颖而出,新一代的资源管理Apache YARN 支持这些。为了支持这种日渐强调实时性操作,我们正发布一个新MySQL Applier for Hadoop(用于Hadoop的MySQL Applier)组件。它能够把MySQL中变化的事务复制到Hadoop / Hive / HDFS。Applier 组件补充现有基于批处理Apache Sqoop的连接性。
D. hdfs和mysql有什么区别大数据离线数据存储在mysql还是hdfs比较好
这区别可大了,不是一个概念。mysql是传统的关系型数据库。hdfs是nosql hadoop的存储方式。hdfs是分布式的自带高可用存储,文件格式跟mysql的存储引擎不一样。大数据离线存储,当然是hdfs更合适
E. Hbase与HDFS是什么关系
HDFS是GFS的一种实现,他的完整名字是分布式文件系统,类似于FAT32,NTFS,是一种文件格式,是底层的,Hadoop HDFS为HBase提供了高可靠性的底层存储支持。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统。
(5)hdfs存储文件格式扩展阅读:
Hadoop 中各模块的作用:
1、Hadoop HDFS为HBase提供了高可靠性的底层存储支持。
2、Hadoop MapRece为HBase提供了高性能的计算能力。
3、Zookeeper为HBase提供了稳定服务和failover机制。
4、Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变得非常简单。
5、Sqoop则为HBase提供了方便的RDBMS(关系型数据库)数据导入功能,使得传统数据库数据向HBase中迁移变得非常方便。
F. hdfs适合存储多大的单个文件
首先hdfs是建立在多个机器文件系统上的一个逻辑上的文件系统。它的底层数据以数据块方式存储,块大小可进行调整。
假如你设置一个数据块大小为256M,上传一个1G的文件,它底层会将这个文件分成4块存储,每个块256M。你在hdfs上看到的是一个完整的文件,随时可对这个文件进行操作,无需关注它的存储。就像你在操作系统上操作文件一样,无需关注它存在那个磁盘哪个扇区
G. Hbase与HDFS是个什么关系
他们的关系是:hbase是一个内存数据库,而hdfs是一个存储空间;是物品和房子的关系。
hdfs只是一个存储空间,他的完整名字是分布式文件系统。从名字可知他的作用了。
hbase是一个内存数据库,简单点说hbase把表啊什么的存在hdfs上。
H. 用sqoop将mysql得表导入HDFS里,那么问题来了,这个表将会以什么格式存储在HDFS中呢,是txt还是别的
sqoop是一个能把数据在关系型数据库和HDFS之间互相传输的工具。在这里,我写一下用java程序来实现sqoop把数据从HDFS写入到MYSQL。在接触sqoop之前,我自己写了一个传输类来实现数据从HDFS到MYSQL。这里简单说一下时间的思想:1、在MYSQL中创建一个参数表A,用来记录要传输的表的表名B和字段。2、HDFS上的数据的格式和MYSQL中参数表A中B表的字段的数量一样。3、从MYSQL的参数表A中,读取要传输的表B。把这些字段拼凑成一个insert语句,例如,拼凑为insertintob(column1,column2..)values(value1,value2)4、从HDFS相应的目录逐行读取数据,通过JDBC,把数据批量导入到MYSQL的B表中。我现在用sqoop来代替原来传输的那个功能。先做一下准备工作:1、hadoop的每个节点下lib文件夹中要有mysql的jar包和sqoop的jar包。2、在HDFS的某个目录上的数据格式和MYSQL相应的表中的字段数量一致。实现类如下:packagesqoop;importjava.util.ArrayList;importjava.util.List;importorg.apache.hadoop.conf.Configuration;importorg.apache.sqoop.Sqoop;importorg.apache.sqoop.tool.ExportTool;/***用SQOOP来把数据从HDFS导入到MYSQL。**/publicclassTest{publicstaticvoidmain(String[]args){ListgeneratedJarsList=newArrayList();Configurationconf=newConfiguration();conf.set("fs.default.name","hdfs://master:9000");conf.set("hadoop.job.ugi","hadooper,hadoopgroup");conf.set("mapred.job.tracker","master:9001");ArrayListlist=newArrayList();//定义一个listlist.add("--table");list.add("a_baat_client");//mysql中的表。将来数据要导入到这个表中。list.add("--export-dir");list.add("/tmp/datathree/");//hdfs上的目录。这个目录下的数据要导入到a_baat_client这个表中。list.add("--connect");list.add("jdbc:mysql://192.168.1.10:3306/report");//mysql的链接list.add("--username");list.add("root");//mysql的用户名list.add("--password");list.add("root");//mysql的密码list.add("--lines-terminated-by");list.add("\\n");//数据的换行符号list.add("-m");list.add("1");//定义maprece的数量。String[]arg=newString[1];ExportToolexporter=newExportTool();Sqoopsqoop=newSqoop(exporter);sqoop.setConf(conf);arg=list.toArray(newString[0]);intresult=Sqoop.runSqoop(sqoop,arg);System.out.println("res:"+result);//打印执行结果。}}这个导出类执行过程中,可以在浏览器中看一下http://master:50030页面。会发现导出数据也是一个把任务转换为maprece执行的过程。当然,上面的java代码,也可以用命令行来实现。命令如下:bin/sqoopexport--connectjdbc:mysql://192.168.1.10:3306/report\--tablea_baat_client--usernameroot--passwordroot\--export-dir/tmp/datathree/-m1关于sqoop把数据从HDFS导入到MYSQL就说这么多。把数据从HIVE导入到MYSQL,其实可以理解为把HIVE表所对应的HDFS路径的数据导入到MYSQL,这里就不多说了。
I. hdfs为什么能存储不同类型数据为什么能存储pb级的数据
“TB是一个计算机存储容量的单位,它等于2的40次方,或者接近一万亿个字节(即,一千千兆字节)。”
一提到数据量级,人们通常会联想到美国国会图书馆(见图)。德勤、麦肯锡、IBM、Gartner和移动广告公司Adfonic的数据专家向TechTarget记者介绍了PB级数据究竟有多大。
麦肯锡首席分析师Michael Chui指出,美国国会图书馆“在2011年4月前已经收集了235TB的数据,而一个PB相当于它的4倍。”
TechTarget自己的网络网站Whatis有关于PB大小的定义:“PB是数据存储容量的单位,它等于2的50次方个字节,或者在数值上大约等于1000个TB。”
未来学家Raymond Kurzweil他的论文中对PB的定义进行延伸:人类功能记忆的容量预计在1.25个TB。这意味着,800个人类记忆才相当于1个PB。
如果这样还不够清楚,那么Adfonic的CTO Wes Biggs给出了下面更直接的计算:
假设手机播放MP3的编码速度为平均每分钟1MB,而1首歌曲的平均时长为4分钟,那么1PB歌曲可以连续播放2000年。
如果智能手机相机拍摄相片的平均大小为3MB,打印照片的平均大小为8.5英寸,那么总共1PB的照片的并排排列长度就达到48000英里——大约可以环绕地球2周。
1PB足够存储整个美国人口的DNA,而且还能再克隆2倍。
DVD、战列舰和六国赛
从比特(bit)和字节(byte)开始,德勤的分析师还将他们的思考向以下方面进一步延伸。(1个比特是1个二进制位,可能是0或1;1个字节长8个二进制):
如果以每秒1个位的速度数一下1PB所包含的位数,那么您需要2.85亿年才能数完。
如果每秒数1个字节,那么您需要数357万年。
保存1PB数据需要用掉22.3万张DVD。
保存1PB数据,需要用掉7.46亿张3.5英寸软盘;这7.46亿软盘重13422吨。这个重量仅仅比2艘Type 45驱逐舰轻一些。
人类身体细胞数据各不相同,但是数量最多的接近100万亿个,如果用1个位来表示1个细胞,那么1PB足够记录90个人的身体细胞,相当于橄榄球六国赛的全部球员。
谷歌、社交媒体和宇宙大爆炸
谷歌在2004年率先进军数字地图领域,并在2005年发布了谷歌地图和谷歌地球。现在,谷歌为用户提供了超过20PB(215亿MB)的地图影像——包括卫星图片、航拍照片和360度街景图片。
即使在2008年,谷歌每天处理的数据已经达到20 PB,一年就是7300 PB。
从那时起,社交媒体网站就开始生成PB级数据,它们逐渐成为所谓的“大数据”。
根据2012年2月1日Facebook向美国证券交易委员会提交的IPO文档记录,Facebook在1年前已经存储了100 PB数据。
在Twitter网站上,每分钟就有34000条微博出现。IBM非常关注于一个天文项目:“由于20个国家共同出资总计15亿欧元建设的平方公里阵列(Square Kilometer Array, SKA)是一个无线电天文望远镜,它可以观测宇宙大爆炸的衰弱信号。”
SKA(计划在2024年完成)估计整个宇宙每天将生成1376 PB数据,相当于每天传输的全球互联网流量的两倍。
只能尽量减少,而不能消除,常用减少误差的