PIG 中是不是有 HBaseStorage 的替代方案
Posted
技术标签:
【中文标题】PIG 中是不是有 HBaseStorage 的替代方案【英文标题】:Is there an Alternative for HBaseStorage in PIGPIG 中是否有 HBaseStorage 的替代方案 【发布时间】:2013-11-21 11:20:34 【问题描述】:我在 pig 脚本中使用带有 -caching 选项的 HBaseStorage,如下所示
HBaseStorage('countDetails:ansCount countDetails:divCount countDetails:unansCount countDetails:engCount countDetails:ineffCount countDetails:totalCount', '-caching 1000');
我可以看到这反映在我的 job.xml 中 但我可以看到它没有时差我正在处理 1000 万条记录并将大约 160mb 的数据存储到 HBase。 当我将结果存储在 hdfs 中时,它需要 3 分钟来处理相同的作业需要 30 分钟才能存储到 HBase。
我什至尝试过设置
SET hbase.client.scanner.caching 1000;
请告诉我如何减少时间。 HBaseStorage 有什么替代方案吗? http://apmblog.compuware.com/2013/02/19/speeding-up-a-pighbase-mapreduce-job-by-a-factor-of-15/
上面的博客说我必须在引导脚本中设置 hbase.client.scanner.caching 我不知道该怎么做 如果我在 Hbase-conf 中设置它就足够了吗? 请帮我解决这个问题
【问题讨论】:
如果您不使用 EMR,请尝试将hbase.client.scanner.caching
属性添加到 hbase-site.xml
。然后重新启动集群(Hadoop 和 HBase),否则请查看亚马逊关于引导操作的文档:docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/…
我试过了,但是没有用。我正在将 CDH4.4 与 cloudera manager 4.7 一起使用,我在 hbase 主服务器中设置了该道具并重新启动它。
【参考方案1】:
hbase.client.scanner.caching
指向在扫描仪上调用 next 时如果不是从(本地,客户端)内存中获取的行数。
较高的缓存值将启用更快的扫描程序,但会占用更多内存,并且当缓存为空时,某些 next 调用可能需要越来越长的时间。不要设置此值,以使调用之间的时间大于扫描器超时时间;
即hbase.regionserver.lease.period
此属性默认为 1 分钟。客户必须
在此期间内报告,否则他们将被视为死亡。
【讨论】:
【参考方案2】:根据我的经验,HBase 在 Pig 上的表现不是很好。如果您不需要随机查找,则仅使用 HDFS,否则 HBase MR 作业将是更好的选择。此外,在 Hadoop MR 作业中,您可以连接到 Hbase(这个选项给了我最好的性能)。
【讨论】:
以上是关于PIG 中是不是有 HBaseStorage 的替代方案的主要内容,如果未能解决你的问题,请参考以下文章
运行 Apache Pig 脚本时如何查找 jar 依赖项?
pig 将Hbase中表导出为CSV出现错误 高分!!! 求解!!!