在Amazon Elastic MapReduce群集上运行WebHCat是否可行或明智?
我是这项技术的新手,我很想知道是否可以使用WebHCat作为REST接口来运行Hive查询。有问题的集群正在运行Hive。
答案 0 :(得分:1)
我无法让它正常工作,但默认情况下,WebHCat实际安装在亚马逊的EMR实例上。
要使其运行,您必须执行以下操作,
chmod u+x /home/hadoop/hive/hcatalog/bin/hcat
chmod u+x /home/hadoop/hive/hcatalog/sbin/webhcat_server.sh
export TEMPLETON_HOME=/home/hadoop/.versions/hive-0.11.0/hcatalog/
export HCAT_PREFIX=/home/hadoop/.versions/hive-0.11.0/hcatalog/
/home/hadoop/hive/hcatalog/webhcat_server.sh start
然后,您可以使用curl确认它在端口50111上运行,
curl -i http://localhost:50111/templeton/v1/status
要在其他计算机上点击50111,您必须在EC2 EMR安全组中打开该端口。
然后,在hcatalog中运行查询时,必须配置要“代理”的用户。我实际上没有保存此配置,但它是outlined in the WebHCat documentation。我希望他们有一些具体的例子,但基本上我最终将本地'hadoop'用户配置为运行查询的用户,而不是最安全的事情我确定,但我只是想让它运行起来并运行
尝试查询然后给了我这个错误,
{“error”:“服务器IPC版本9无法与客户端版本通信 4" }
解决方法是关闭最新的EMR映像(3.0.4与Hadoop 2.2.0)并切换到Hadoop 1.0映像(2.4.2与Hadoop 1.0.3)。
然后我遇到了另一个问题,它无法正确找到Hive jar,在配置更多的挣扎之后,我决定我已经倾倒了足够的时间来尝试让它工作并决定直接与Hive通信(使用RBHive用于JVM的Ruby和JDBC。)
要回答我自己的问题,可以在EMR上运行WebHCat,但它根本没有记录(谷歌搜索引导我无处不在,这就是为什么我首先创建这个问题,它是你搜索时的第一个命中“ WebHCat EMR“)和WebHCat文档还有很多不足之处。让它工作似乎是一种痛苦,尽管我希望通过编写初始步骤,有人会出现并完成剩下的工作并发布一个完整的答案。
答案 1 :(得分:0)
我没有测试它,但它应该是可行的。
EMR允许自定义引导操作,即脚本在节点启动的地方运行。您可以使用引导操作来安装其他软件并更改群集上的应用程序配置 请在http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-plan-bootstrap.html了解详情。
我会创建一个shell脚本来安装WebHCat并首先在常规EC2实例上测试你的脚本(在EMR的上下文之外 - 作为测试以确保你的脚本没问题)
您可以使用EC2的user-data properties来测试您的脚本,通常是:
#!/bin/bash
curl http://path_to_your_install_script.sh | sh
然后 - 一旦您知道脚本正在运行 - 将其提供给S3存储桶上的群集,并follow these instructions to include your script作为群集的自定义引导操作。
- 的Seb