我正在做Hbase和Spark的性能基准测试,并且在Spark需要大约10分钟的时间内读取并整合了9700万行中的100万行。以下是有关配置和数据的详细信息。
设备:
Total 4 servers.
1 - Master
3- Slaves
Each server config
CPU: Intel i5 processor
RAM: 16GB
HDD: 1TB (not SSD)
软件:
Hbase - 1.2.1
Spark - 1.6.2
Phoenix - 4.8.1
Hadoop - 2.6
数据大小:
Total regions - 20
Total data size: 25 GB
Total rows: 97 million.
我们已经应用了我从hbase指南和互联网上理解的性能调优配置,下面是hbase-site.xml的重要配置
<property>
<name>hfile.block.cache.size</name>
<value>0.4</value>
</property>
<property>
<name>hbase.client.scanner.caching</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>30</value>
</property>
<property>
<name>hbase.regionserver.global.memstore.upperLimit</name>
<value>0.3</value>
</property>
<property>
<name>hbase.storescanner.parallel.seek.enable</name>
<value>true</value>
</property>
<property>
<name>hbase.storescanner.parallel.seek.threads</name>
<value>20</value>
</property>
<property>
<name>hbase.regionserver.wal.codec</name>
<value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value>
</property>
<property>
<name>phoenix.query.timeoutMs</name>
<value>7200000</value>
</property>
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value>
</property>
<property>
<name>hbase.thrift.connection.max-idletime</name>
<value>1800000</value>
</property>
<property>
<name>hbase.client.write.buffer</name>
<value>20971520</value>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>7200000</value>
</property>
<property>
<name>phoenix.schema.dropMetaData</name>
<value>false</value>
</property>
<property>
<name>phoenix.query.keepAliveMs</name>
<value>7200000</value>
</property>
<property>
<name>hbase.regionserver.lease.period</name>
<value>7200000</value>
</property>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>7200000</value>
</property>
我想知道还有什么可以调整以改善查询响应时间,即&gt;现在10分钟。
查询如下
select catColumn, sum(amount) from "BigTable" where timeStamp between <startTime> and <endTime> group by catColumn;
但整合是在spark上完成的,使用DataFrame函数