Shi*_*M P 5 apache hadoop hbase join phoenix
几个月前我开始使用凤凰.以下是环境和版本详细信息.
Hadoop - Cloudera CDH 5.4.7-1.凤凰城 - 4.3 - 凤凰城,作为CDH5.4.7-1的包裹.HBase版本 - HBase 1.0.0 JDK - 1.7.0_67 1主服务器和3个区域服务器.
我们开始做POC来评估Apache Phoenix.我们在Oracle DB上有12个不同的表中的数据.我们使用Oracle golden gate将数据导入Hadoop系统.
有12个不同的Phoenix表,每个表有40-100列,有几百行.我们进行转换过程,然后加载到最终表中.这是我们正在做的基本ETL.转换过程经历了几个中间阶段,我们填充中间表.因此表之间存在"连接".
一切都很好,我们能够实现整个ETL过程.我对易用性和实施感到非常满意.
当我们开始使用数百万行的性能测试时,问题就出现了.以下是问题.
中间转换过程使区域服务器崩溃:连接两个表,每个表有2000万行.在我加入的列上创建的二级索引.这两张桌子上有9个桶.如果连接产生的行数小于〜200k,则表现良好.200k行需要10多分钟才能执行.如果产生的行数更多,则区域服务器开始崩溃.测试代码解释从salted.b_acct2 ba内连接中选择计数(available_bal)(从salted.m_item2中选择c_item_id,其中s_info_id = 12345)为ba.c_item_id = mi.c_item_id上的mi;
+ ------------------------------------------ + | 计划| + ------------------------------------------ + | 客户9-CHUNK PARALLEL 9-WAY全面扫描盐水.2_BA_CI_IDX | | 服务器整合到单行| | PARALLEL INNER-JOIN表0(SKIP MERGE)| | 客户9-CHUNK并行TALLED的9路RANGE扫描._MI_SI_IDX [0,19,266] | | 客户合并排序| | 动态服务器过滤器TO_BIGINT("C_ITEM_ID")IN(MI.C_ITEM_ID)| + ------------------------------------------ +
为最终转换连接6个表会挂起:在索引列上连接6个表会返回少于1M行的数据.这需要10-12分钟.但是如果连接结果大约超过1M,它会挂起并且结果不会返回.最初我得到了InsufficientMemoryException,我通过更改配置和增加可用内存来解决这个问题.我没有再次获得InsufficientMemoryException,但查询执行时间超过20分钟.我们期待在几秒钟内执行.
以下是参数:
jvm.bootoptions= -Xms512m –Xmx9999M.
hbase.regionserver.wal.codec : org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
hbase.rpc.timeout 600000
phoenix.query.timeoutMs 360000000
phoenix.query.maxServerCacheBytes 10737418240
phoenix.coprocessor.maxServerCacheTimeToLiveMs 900000
hbase.client.scanner.timeout.period 600000
phoenix.query.maxGlobalMemoryWaitMs 100000
phoenix.query.maxGlobalMemoryPercentage 50
hbase.regionserver.handler.count 50
Run Code Online (Sandbox Code Playgroud)
简介:核心问题是连接查询执行缓慢,并且当数据超过100万行时,最终会崩溃区域服务器.执行是否有限制?在我们进行评估过程中,请帮助我解决这些问题,我不想放开凤凰城!如果我能够在快速时间内执行上述查询,那么我会毫不犹豫地使用Phoenix.
此致,Shivamohan
默认情况下,Phoenix 使用散列连接,要求数据适合内存。如果遇到问题(对于非常大的表),您可以增加分配给 Phoenix 的内存量(配置设置)或设置查询“提示”(即SELECT /*+ USE_SORT_MERGE_JOIN*/ FROM ...)以使用没有相同要求的排序合并联接。他们计划将来自动检测理想的连接算法。此外,Phoenix 目前仅支持连接操作的一个子集。
| 归档时间: |
|
| 查看次数: |
3652 次 |
| 最近记录: |