That sounds about right for loading CSV directly on a 5-8 node cluster. As
Gabriel/James mentioned in another thread, CSVBulkLoadTool with pre-split
table might offer significantly better performance for large datasets.

On Tue, Aug 23, 2016 at 2:17 PM, John Leach <jle...@splicemachine.com>
wrote:

> So to load a TB of data would take around 2 days?  Does that seem right to
> you?
>
> Regards,
> John
>
> > On Aug 23, 2016, at 3:07 PM, Mujtaba Chohan <mujt...@apache.org> wrote:
> >
> > Since there are 100 files on which this 600M row data is split. 5
> separate
> > psql script running in parallel on single machine ran that loaded data
> from
> > files 1-20, 21-40, 41-60, 61-80, 81-100. Performance get affected as keys
> > are in sequence in these files which lead to hot-spotting of RS, for this
> > should also try out Salted <https://phoenix.apache.org/salted.html>
> Phoenix
> > table to get the best write performance. Higher batch size might offer
> > better performance too.
> >
> > I've also just started data load from single psql client as loading from
> > single machine can get bottled-necked on network I/O. I'll update on its
> > result tomorrow and I don't think its time would be too off from loading
> > using multiple clients.
> >
> >
> > On Tue, Aug 23, 2016 at 12:49 PM, John Leach <jle...@splicemachine.com>
> > wrote:
> >
> >> Mujtaba,
> >>
> >> Not following the import process.
> >>
> >> The 5 parallel psql clients means that you manually split the data into
> 5
> >> buckets/files/directories and then run 5 import scripts simultaneously?
> >>
> >> If we wanted to benchmark import performance, what would be the right
> >> model for that?
> >>
> >> Thanks this is very helpful...
> >>
> >> Regards,
> >> John
> >>
> >>
> >>
> >>> On Aug 23, 2016, at 2:28 PM, Mujtaba Chohan <mujt...@apache.org>
> wrote:
> >>>
> >>> FYI re-loaded with Phoenix 4.8/HBase 0.98.20 on a 8 node cluster with
> 64G
> >>> total/12G HBase heap.
> >>>
> >>> *Data Load*
> >>> * 5.5 hours for 600M rows
> >>> * Method: Direct CSV load using psql.py script
> >>> * # client machines: 1
> >>> * Batch size 1K
> >>> * Key order: *Sequential*
> >>> * 5 parallel psql clients
> >>> * No missing rows due to data load
> >>>
> >>> *Schema*
> >>> CREATE TABLE LINEITEM_MULTICF (L_ORDERKEY INTEGER not null, A.L_PARTKEY
> >>> INTEGER, B.L_SUPPKEY  INTEGER , L_LINENUMBER  INTEGER not null,
> >>> B.L_QUANTITY DECIMAL(15,2), B.L_EXTENDEDPRICE DECIMAL(15,2),
> C.L_DISCOUNT
> >>> DECIMAL(15,2), C.L_TAX DECIMAL(15,2), C.L_RETURNFLAG  CHAR(1),
> >>> C.L_LINESTATUS  CHAR(1), C.L_SHIPDATE DATE, C.L_COMMITDATE DATE,
> >>> C.L_RECEIPTDATE DATE, C.L_SHIPINSTRUCT CHAR(25), C.L_SHIPMODE CHAR(10),
> >>> C.L_COMMENT VARCHAR(44) constraint pk primary key(l_orderkey,
> >>> l_linenumber));
> >>>
> >>> * 100M guidepost width
> >>> * ~42GB data
> >>> * Uncompressed/default fast-diff encoded
> >>>
> >>> *Performance with default 128 threadpool*
> >>> select count(*) from lineitem_multicf;
> >>> +------------+
> >>> |  COUNT(1)  |
> >>> +------------+
> >>> | 600037902  |
> >>> +------------+
> >>> 1 row selected (*24.1** seconds*)
> >>>
> >>> select l_returnflag, l_linestatus,sum(l_quantity) as
> >>> sum_qty,sum(l_extendedprice) as sum_base_price,sum(l_extendedprice *
> (1
> >> -
> >>> l_discount)) as sum_disc_price,sum(l_extendedprice * (1 - l_discount)
> *
> >> (1
> >>> + l_tax)) as sum_charge,avg(l_quantity) as avg_qty,avg(l_extendedprice)
> >> as
> >>> avg_price,avg(l_discount) as avg_disc,count(*) as count_order from
> >> lineitem
> >>> where l_shipdate <= current_date()- 90 group by l_returnflag,
> >> l_linestatus
> >>> order by l_returnflag, l_linestatus;
> >>> 4 row selected (*185.2** seconds*)
> >>>
> >>> *Data*
> >>> do curl -O http://static.druid.io/data/benchmarks/tpch/100/lineitem.
> >> tbl.$i.gz
> >>> ; done
> >>>
> >>>
> >>>
> >>> On Mon, Aug 22, 2016 at 7:48 AM, John Leach <jle...@splicemachine.com>
> >>> wrote:
> >>>
> >>>> It looks like you guys already have most of the TPCH queries running
> >> based
> >>>> on Enis’s talk in Ireland this year.  Very cool.
> >>>>
> >>>> (Slide 20:  Phoenix can execute most of the TPC-H queries!)
> >>>>
> >>>> Regards,
> >>>> John Leach
> >>>>
> >>>>
> >>>>> On Aug 19, 2016, at 8:28 PM, Nick Dimiduk <ndimi...@gmail.com>
> wrote:
> >>>>>
> >>>>> It's TPC-DS, not -H, but this is what I was using way back when to
> run
> >>>> perf
> >>>>> tests over Phoenix and the query server while I was developing on it.
> >> The
> >>>>> first project generates, loads the data via mapreduce and the second
> >> tool
> >>>>> wraps up use of jmeter to run queries in parallel.
> >>>>>
> >>>>> https://github.com/ndimiduk/tpcds-gen
> >>>>> https://github.com/ndimiduk/phoenix-performance
> >>>>>
> >>>>> Probably there's dust and bit-rot to brush off of both projects, but
> >>>> maybe
> >>>>> it'll help someone looking for a starting point?
> >>>>>
> >>>>> Apologies, but I haven't had time to see what the speakers have
> shared
> >>>>> about their setup.
> >>>>>
> >>>>> -n
> >>>>>
> >>>>> On Friday, August 19, 2016, Andrew Purtell <apurt...@apache.org>
> >> wrote:
> >>>>>
> >>>>>>> Maybe there's such a test harness that already exists for TPC?
> >>>>>>
> >>>>>> TPC provides tooling but it's all proprietary. The generated data
> can
> >> be
> >>>>>> kept separately (Druid does it at least -
> >>>>>> http://druid.io/blog/2014/03/17/benchmarking-druid.html
> >>>>>> ​).
> >>>>>>
> >>>>>> I'd say there would be one time setup: generation of data sets of
> >>>> various
> >>>>>> sizes, conversion to compressed CSV, and upload to somewhere public
> >>>> (S3?).
> >>>>>> Not strictly necessary, but it would save everyone a lot of time and
> >>>> hassle
> >>>>>> to not have to download the TPC data generators and munge the output
> >>>> every
> >>>>>> time. For this one could use the TPC tools.
> >>>>>>
> >>>>>> Then, the most sensible avenue I think would be implementation of
> new
> >>>>>> Phoenix integration tests that consume that data and run uniquely
> >>>> tweaked
> >>>>>> queries (yeah - every datastore vendor must do that with TPC).
> Phoenix
> >>>> can
> >>>>>> use hbase-it and get the cluster and chaos tooling such as it is for
> >>>> free,
> >>>>>> but the upsert/initialization/bulk load and query tooling would be
> all
> >>>>>> Phoenix based: the CSV loader, the JDBC driver.
> >>>>>>
> >>>>>> ​
> >>>>>> ​
> >>>>>>
> >>>>>>
> >>>>>> On Fri, Aug 19, 2016 at 5:31 PM, James Taylor <
> jamestay...@apache.org
> >>>>>> <javascript:;>>
> >>>>>> wrote:
> >>>>>>
> >>>>>>> On Fri, Aug 19, 2016 at 3:01 PM, Andrew Purtell <
> apurt...@apache.org
> >>>>>> <javascript:;>>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>>> I have a long interest in 'canned' loadings. Interesting ones are
> >>>>>> hard
> >>>>>>> to
> >>>>>>>>> come by. If Phoenix ran any or a subset of TPCs, I'd like to try
> >> it.
> >>>>>>>>
> >>>>>>>> Likewise
> >>>>>>>>
> >>>>>>>>> But I don't want to be the first to try it. I am not a Phoenix
> >>>>>> expert.
> >>>>>>>>
> >>>>>>>> Same here, I'd just email dev@phoenix with a report that TPC
> query
> >>>> XYZ
> >>>>>>>> didn't work and that would be as far as I could get.
> >>>>>>>>
> >>>>>>>> I don't think the first phase would require Phoenix experience.
> It's
> >>>>>> more
> >>>>>>> around the automation for running each TPC benchmark so the process
> >> is
> >>>>>>> repeatable:
> >>>>>>> - pulling in the data
> >>>>>>> - scripting the jobs
> >>>>>>> - having a test harness they run inside
> >>>>>>> - identifying the queries that don't work (ideally you wouldn't
> stop
> >> at
> >>>>>> the
> >>>>>>> first error)
> >>>>>>> - filing JIRAs for these
> >>>>>>>
> >>>>>>> The entire framework could be built and tested using standard JDBC
> >>>> APIs,
> >>>>>>> and then initially run using MySQL or some other RDBMS before
> trying
> >> it
> >>>>>>> with Phoenix. Maybe there's such a test harness that already exists
> >> for
> >>>>>>> TPC?
> >>>>>>>
> >>>>>>> Then I think the next phase would require more Phoenix & HBase
> >>>>>> experience:
> >>>>>>> - tweaking queries where possible given any limitations in Phoenix
> >>>>>>> - adding missing syntax (or potentially using the calcite branch
> >> which
> >>>>>>> supports more)
> >>>>>>> - tweaking Phoenix schema declarations to optimize
> >>>>>>> - tweaking Phoenix & HBase configs to optimize
> >>>>>>> - determining which secondary indexes to add (though I think
> there's
> >> an
> >>>>>>> academic paper on this, I can't seem to find it)
> >>>>>>>
> >>>>>>> Both phases would require a significant amount of time and effort.
> >> Each
> >>>>>>> benchmark would likely require unique tweaks.
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> James
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> Best regards,
> >>>>>>
> >>>>>> - Andy
> >>>>>>
> >>>>>> Problems worthy of attack prove their worth by hitting back. - Piet
> >> Hein
> >>>>>> (via Tom White)
> >>>>>>
> >>>>
> >>>>
> >>
> >>
>
>

Reply via email to