hbase 跳过区域服务器直接从 hfile 读取行
hbase skip region server to read rows directly from hfile
- 我正在尝试将超过 100 亿条记录转储到 hbase 中,这将
平均每天增长 1000 万,然后尝试完整 table
扫描记录。我知道对 hdfs 进行全面扫描会
比hbase快。
- Hbase 用于对不同的数据进行排序
在高清文件系统上。该应用程序正在使用 spark 构建。
- 数据被批量加载到hbase。由于各种 2G 限制,区域大小从 3G 的初始测试减少到 1.2G(仍然需要更详细的调查)。
- 扫描缓存为 1000,缓存块关闭
- hbase 总大小为 6TB 运行ge,在 5 个区域服务器(节点)上产生数千个区域。 (建议低百)。
- spark 作业基本上运行每一行,然后根据 运行ge 中的列计算某些内容。
- 使用内部使用 TableInputFormat 的 spark-on-hbase,作业 运行 大约需要 7.5 小时。
- 为了绕过区域服务器,创建了一个快照并改为使用 TableSnapshotInputFormat。该工作在 abt 5.5 小时内完成。
问题
从 hbase 读取到 spark 时,区域似乎决定了
spark-partition 和 2G 限制。 因此问题
缓存 这是否意味着区域大小需要较小?
绕过区域服务器的TableSnapshotInputFormat
直接从快照中读取,还按区域创建它
所以还是会落入上面的region size问题。这是
可以直接从 hfiles 中读取键值,在这种情况下
拆分大小由 hdfs 块大小决定。有没有
可以读取一行的扫描仪或其他实用程序的实现
直接来自 hfile(具体来自快照引用的 hfile)?
是否有任何其他指示说明可能有助于提高性能的配置?例如 hdfs 块大小等?主要用例大部分是完整 table 扫描。
事实证明,这实际上非常快。性能分析表明,问题在于 ip 地址的对象表示之一,即 InetAddress 花费了大量时间来解析 ip 地址。我们决定使用原始字节来提取我们需要的任何东西。这本身使工作在大约 2.5 小时内完成。
将问题建模为 Map Reduce 问题和具有上述相同更改的 MR2 上的 运行 表明它可以在大约 1 小时 20 分钟内完成。
迭代性质和更小的内存占用帮助 MR2 实现更多的并行性,因此速度更快。
- 我正在尝试将超过 100 亿条记录转储到 hbase 中,这将 平均每天增长 1000 万,然后尝试完整 table 扫描记录。我知道对 hdfs 进行全面扫描会 比hbase快。
- Hbase 用于对不同的数据进行排序 在高清文件系统上。该应用程序正在使用 spark 构建。
- 数据被批量加载到hbase。由于各种 2G 限制,区域大小从 3G 的初始测试减少到 1.2G(仍然需要更详细的调查)。
- 扫描缓存为 1000,缓存块关闭
- hbase 总大小为 6TB 运行ge,在 5 个区域服务器(节点)上产生数千个区域。 (建议低百)。
- spark 作业基本上运行每一行,然后根据 运行ge 中的列计算某些内容。
- 使用内部使用 TableInputFormat 的 spark-on-hbase,作业 运行 大约需要 7.5 小时。
- 为了绕过区域服务器,创建了一个快照并改为使用 TableSnapshotInputFormat。该工作在 abt 5.5 小时内完成。
问题
从 hbase 读取到 spark 时,区域似乎决定了 spark-partition 和 2G 限制。 因此问题 缓存 这是否意味着区域大小需要较小?
绕过区域服务器的TableSnapshotInputFormat 直接从快照中读取,还按区域创建它 所以还是会落入上面的region size问题。这是 可以直接从 hfiles 中读取键值,在这种情况下 拆分大小由 hdfs 块大小决定。有没有 可以读取一行的扫描仪或其他实用程序的实现 直接来自 hfile(具体来自快照引用的 hfile)?
是否有任何其他指示说明可能有助于提高性能的配置?例如 hdfs 块大小等?主要用例大部分是完整 table 扫描。
事实证明,这实际上非常快。性能分析表明,问题在于 ip 地址的对象表示之一,即 InetAddress 花费了大量时间来解析 ip 地址。我们决定使用原始字节来提取我们需要的任何东西。这本身使工作在大约 2.5 小时内完成。 将问题建模为 Map Reduce 问题和具有上述相同更改的 MR2 上的 运行 表明它可以在大约 1 小时 20 分钟内完成。 迭代性质和更小的内存占用帮助 MR2 实现更多的并行性,因此速度更快。