分享

hdfs的访问方式

ld512870 发表于 2015-3-5 22:56:59 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 11 38603
  在网上看到这样一句话:
在HDFS上运行的应用需要流式顺序访问他们的数据,不适合那种随机访问数据的模式,这样做可以提供非常高效的数据访问速度。
  这里的流式顺序访问是什么意思呢?高效在什么地方?是指将大文件块分成两块。需要先访问第一块,才能根据第一块的信息去访问第二块吗?在我们普通文件中,我们可以通过偏移量去随机访问文件中的数据。在lucene中,索引文件中也是一级一级的保存的各种信息以及偏移量。那么,在hdfs中如果无法随机访问。那么,solr在hdfs上存储的索引是怎么去访问的呢?

已有(11)人评论

跳转到指定楼层
arsenduan 发表于 2015-3-6 00:13:29
流式读取最小化了硬盘的寻址开销,只需要寻址一次,然后就一直读啊读。硬盘的物理构造导致寻址开销的优化跟不上读取开销。所以流式读取更加适合硬盘的本身特性。当然大文件的特点也更适合流式读取。与流数据访问对应的是随机数据访问,它要求定位、查询或修改数据的延迟较小,比较适合于创建数据后再多次读写的情况,传统关系型数据库很符合这一点
总结为:
流式就是按照顺序来,一条线,找一次就够了。所以适合一次写,多次读的数据
随机访问,就是需要找了在找那个。

回复

使用道具 举报

rsgg03 发表于 2015-3-6 00:36:20
只要是存在hdfs的上数据都是流式访问
回复

使用道具 举报

ld512870 发表于 2015-3-6 09:15:12
流的访问方式我了解了。那么lucene的索引是支持大量的随机读写访问的。这在hdfs上是怎么操作的呢?
回复

使用道具 举报

ld512870 发表于 2015-3-6 09:22:16
流的访问方式我了解了。那么lucene的索引是支持大量的随机读写访问的。那么请问,这在hdfs上是怎么操作的呢?
回复

使用道具 举报

ld512870 发表于 2015-3-6 09:23:26
arsenduan 发表于 2015-3-6 00:13
流式读取最小化了硬盘的寻址开销,只需要寻址一次,然后就一直读啊读。硬盘的物理构造导致寻址开销的优化跟 ...

流的访问方式我了解了。那么lucene的索引是支持大量的随机读写访问的。那么请问,这在hdfs上是怎么操作的呢?
回复

使用道具 举报

xuanxufeng 发表于 2015-3-6 11:43:47
ld512870 发表于 2015-3-6 09:23
流的访问方式我了解了。那么lucene的索引是支持大量的随机读写访问的。那么请问,这在hdfs上是怎么操作的 ...
HDFS系统,对随机读支持的并不友好,而像Lucene这种全文检索的框架,几乎所有的检索操作,都离不开随机读写的操作,那么如何才能使Lucene结合hadoop完美的工作呢,其实hadoop的版本里,在一个contrib的工具包里面,带了Lucene索引的工具类,不过貌似是用的人很少
回复

使用道具 举报

ld512870 发表于 2015-3-12 10:20:01
本帖最后由 ld512870 于 2015-3-12 10:34 编辑
arsenduan 发表于 2015-3-6 00:13
流式读取最小化了硬盘的寻址开销,只需要寻址一次,然后就一直读啊读。硬盘的物理构造导致寻址开销的优化跟 ...

我可以这么理解吗?就是说因为hdfs上存放的都是大文件,如果进行随机读取的话。需要对磁盘进行寻址。因为文件太大,寻址的开销要远远大于对文件进行流读取的方式?
           我从hadoop权威指南上,可以通过FileSystem类对hdfs的文件进行随机的访问。但是开销很高。是不是就是说其实可以对hdfs文件进行随机访问,只不过随机访问的开销比流开销大?
回复

使用道具 举报

howtodown 发表于 2015-3-12 11:03:58
ld512870 发表于 2015-3-12 10:20
我可以这么理解吗?就是说因为hdfs上存放的都是大文件,如果进行随机读取的话。需要对磁盘进行寻址。因为 ...

赞同的
FSDataInputStream对象

实际上,FileSystem对象中的open()方法返回的是FSDataInputStream对象,而不是标准的java.io类对象。这个类是继承了java.io.DataInputStream接口的一个特殊类,并支持随机访问,由此可以从流的任意位置读取数据。

回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条