avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yin Huai (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AVRO-1208) Improve Trevni's performance on row-oriented data access
Date Fri, 01 Feb 2013 23:04:13 GMT

    [ https://issues.apache.org/jira/browse/AVRO-1208?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13569215#comment-13569215
] 

Yin Huai commented on AVRO-1208:
--------------------------------

Did a quick test with [my benchmark tool|https://github.com/yhuai/tableplacement.git], using
the table described at [here|https://github.com/yhuai/tableplacement/blob/AVRO-1208/tableplacement-experiment/tableProperties/LazyBinaryColumnarSerDe/t0.4-singleFile-noColumnGroup.properties].
Without prefetching, the throughput is about 70 MiB/s. By prefetching 16 blocks (reading 17
blocks at a time), the throughput is about 82 Mib/s.

My system info: 
OS: Ubuntu 12.04 with kernel 3.2.0-37.
Java: 1.6.0_24
Disk: WD RE4 WD1003FBYX 1TB 7200 RPM

To play with the patch. 
1) install avro applied with this patch to your local maven repo
2) checkout branch AVRO-1208 from the tool linked above and build it with {code}mvn clean
package -DskipTests -P avro-1.7.4{\code}
3) in tableplacement-experiment/expScripts/exp0.6.conf, modify the path of data generated
by the benchmark ("DIR") and the device you are using ("DEVICE")
4) in tableplacement-experiment/expScripts/expConf, use {code}sudo ./exp.write.Trevni.sh exp0.6{\code}
to generate data
5) in tableplacement-experiment/expScripts/expConf, use {code}sudo ./exp.strace.read.Trevni.sh
exp0.6 <io buffer size> cfg1:all <dir of strace> <num of prefetched blocks>{\code}
to do the test. <io buffer size> does not matter at here since I am using InputFile.
<dir of strace> is the location to store the results of strace.
                
> Improve Trevni's performance on row-oriented data access
> --------------------------------------------------------
>
>                 Key: AVRO-1208
>                 URL: https://issues.apache.org/jira/browse/AVRO-1208
>             Project: Avro
>          Issue Type: Improvement
>    Affects Versions: 1.7.3
>            Reporter: Yin Huai
>         Attachments: AVRO-1208.1.patch
>
>
> Trevni uses an 64KB internal buffer to store values of a column. When accessing a column,
it reads 64KB (if we do not consider compression and checksum) data from the storage layer.
However, when the table is accessed in a row-oriented fashion (a entire row needs to be handed
over to the upper layer), in the worst case (a full table scan and values of this table are
all the same size), every 64KB data read can cause a seek.
> This jira is used to discuss if we should consider the data access pattern mentioned
above and if so, how to improve the performance of Trevni. Row-oriented data processing engines,
e.g. Hive, can benefit from this work.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message