WebHCat与Hive的安装
目录
版本
WebHCat和HCatalog与Hive一起安装,从Hive release 0.11.0开始。
如果从二进制tarball安装Hive, WebHCat服务器命令webhcat_server.sh位于hcatalog/sbin目录中。
Hive安装在这里有文档记录。
WebHCat安装过程
注:WebHCat最初叫Templeton。为了向后兼容,该名称仍然出现在url、日志文件名、变量名等中。
- 确保所需的相关安装就位,并将所需文件放入Hadoop分布式缓存中。
- 下载并解压HCatalog发行版。
- 将TEMPLETON_HOME环境变量设置为HCatalog REST服务器安装的基路径。这通常与HCATALOG_HOME相同。这用于查找WebHCat (Templeton)配置。
- 设置JAVA_HOME、HADOOP_PREFIX和HIVE_HOME环境变量。
- 检查配置并根据需要更新或创建webht -site.xml。确保特定于站点的组件安装位置是准确的,特别是Hadoop配置路径。使用文件系统路径的配置变量尝试具有合理的缺省值,但是指定完整的路径总是安全的。
- 验证HCatalog已安装,且hcat可执行文件位于路径中。
- 使用命令ant jar从顶层HCatalog目录构建HCatalog。
- 使用命令“hcatalog/sbin/webhcat_server.sh Start”启动REST服务器(适用于Hive 0.11.0版本及以后的版本),或者使用命令“sbin/webhcat_server.sh Start”(适用于hcatalog与Hive合并之前的安装)启动REST服务器。
- 检查本地安装是否正常。假设服务器运行在端口50111上,下面的命令将给出与所示类似的输出。
% curl -i http://localhost:50111/templeton/v1/status
HTTP/1.1 200 OK
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(7.6.0.v20120127)
{"status":"ok","version":"v1"}
%
服务器命令
- 启动服务:
sbin/webhcat_server.sh Start (HCatalog 0.5.0及更早—在Hive发行版0.11.0之前)
hcatalog/sbin/webhcat_server.sh启动(Hive版本0.11.0及更高版本)
- 停止服务:
sbin/webhcat_server.sh Stop (HCatalog 0.5.0及更早版本——在Hive发行版0.11.0之前)
hcatalog/sbin/webhcat_server.sh停止(Hive版本0.11.0及更高版本)
- 端到端构建、运行、测试:
ant e2e
要求
- Ant,版本1.8或更高
- Hadoop,版本1.0.3或更高
- 如果使用ZooKeeper存储类,则需要ZooKeeper。(一定要检查并更新与zookeeper相关的WebHCat配置。)
- HCatalog,版本0.5.0或更高。hcat可执行文件必须位于路径中,并且在WebHCat配置中正确配置。
- 必须向运行服务器的用户授予权限。(见下文)。
- 如果运行安全集群,则必须创建Kerberos密钥和主体。(见下文)。
- Hadoop分布式缓存。要使用Hive、Pig或Hadoop流资源,请参阅下面的说明,以便将所需的文件放置到Hadoop分布式缓存中。
Hadoop 分布式缓存
服务器需要在Hadoop分布式缓存上访问一些文件。例如,为了避免集群中到处安装Pig和Hive,无论何时调用这些资源,服务器都会从Hadoop分布式缓存中收集一个版本的Pig或Hive。将以下组件放入HDFS后,请根据每个组件的需要更新站点配置。
- Hive:下载Hive tar.gz文件并将其放在HDFS中。例如,对于Hive版本0.11.0:
hadoop fs -put /tmp/hive-0.11.0.tar.gz /apps/templeton/hive-0.11.0.tar.gz
- Pig:下载Pig tar.gz文件并将其放入HDFS中。例如,对于Pig版本0.11.1:
hadoop fs -put /tmp/pig-0.11.1.tar.gz /apps/templeton/pig-0.11.1.tar.gz
- Hadoop流:将Hadoop -stream -*.jar放到HDFS中。使用以下命令:
hadoop fs -put <hadoop streaming jar> \
<templeton.streaming.jar>/hadoop-streaming-*.jar
- < templeton.streaming。jar>是webht -default.xml中定义的属性值,可以在webht -site.xml文件中重写,<hadoop streaming jar>是您的hadoop版本中的hadoop streaming jar:
hadoop-1.*/contrib/streaming/hadoop-streaming-*.jar
in the Hadoop 1.x tarhadoop-2.*/share/hadoop/tools/lib/hadoop-streaming-*.jar
in the Hadoop 2.x tar 例如:
hadoop fs -put hadoop-2.1.0/share/hadoop/tools/lib/hadoop-streaming-2.1.0.jar \
/apps/templeton/hadoop-streaming.jar
- 覆盖jar:将所需的覆盖jar(如果有的话)放到HDFS中。注意:1.0.3之前的Hadoop版本需要一个补丁(Hadoop -7987)才能正确运行WebHCat。这个补丁与WebHCat一起发布(位于templeton/src/hadoop_temp_fix/ ui .jar),应该放在HDFS中,如当前默认配置所示。
hadoop fs -put ugi.jar /apps/templeton/ugi.jar
可以使用以下WebHCat配置变量指定这些文件在缓存中的位置,以及存档中的安装位置。(有关更改WebHCat配置参数的更多信息,请参阅配置文档。)一些默认值随版本号的不同而变化;下面显示的默认值是Hive版本0.11.0中包含的WebHCat版本。前一个版本的默认值显示在HCatalog 0.5.0文档中。
名称 | 默认值 | 描述 |
templeton.streaming.jar | hdfs:///apps/templeton/hadoop-streaming.jar |
|
templeton.pig.path | pig-0.11.1.tar.gz/pig-0.11.1/bin/pig |
|
templeton.pig.archive | hdfs:///apps/templeton/pig-0.11.1.tar.gz |
|
templeton.override.jars | hdfs:///apps/templeton/ugi.jar | 为所有Map Reduce作业添加到HADOOP_CLASSPATH的jar。这些jar必须存在于HDFS上。对于Hadoop版本1.0.1或更新版本,不需要这样做。 |
templeton.hive.path | hive-0.11.0.tar.gz/hive-0.11.0/bin/hive | 指向Hive可执行文件的路径 |
templeton.hive.archive | hdfs:///apps/templeton/hive-0.11.0.tar.gz | 指向Hive存档的路径。 |
权限
必须允许运行WebHCat可执行文件的用户为其他用户运行作业。也就是说,WebHCat服务器将模拟Hadoop集群上的用户。
创建(或分配)一个运行WebHCat服务器的Unix用户。调用这个用户。要选择Kerberos集群上的用户,请参阅下面的安全集群部分。
修改Hadoop core-site.xml文件并设置以下属性:
变量名 | 值 |
hadoop.proxyuser.USER.groups | 将模拟用户的Unix组的逗号分隔列表。 |
hadoop.proxyuser.USER.hosts | 将运行HCatalog和JobTracker服务器的主机的逗号分隔列表。 |
集群安全性
要在安全集群上运行WebHCat,请遵循上面的权限说明,但要为WebHCat服务器创建一个名为USER/host@realm的Kerberos主体。
另外,还要设置WebHCat 的配置变量 templeton.kerberos.principal
和 templeton.kerberos.keytab
.
代理用户支持
WebHCat中的代理用户支持允许WebHCat的调用者指示WebHCat作为特定用户在Hadoop集群上运行命令。
典型的例子是Joe使用Hue通过WebHCat提交MapReduce作业。对于下面的描述,假设Joe有Unix名称“Joe”,Hue是“Hue”,WebHCat是“hcat”。如果Hue在调用WebHCat时指定'doAs=joe',那么WebHCat将MR job提交为'joe',以便Hadoop集群能够对'joe'执行有安全性的检查。如果没有指定doAs值,MR作业将作为用户“hue”提交。
要设置代理用户支持,请在配置文件中进行以下编辑。
在hive-site。xml,设置:
变量名 | 值 |
hive.security.metastore.authorization.manager |
org.apache.hadoop.hive.ql.security.authorization.StorageBasedAuthorizationProvider |
hive.security.metastore.authenticator.manager |
org.apache.hadoop.hive.ql.security.HadoopDefaultMetastoreAuthenticator |
hive.metastore.pre.event.listeners |
org.apache.hadoop.hive.ql.security.authorization.AuthorizationPreEventListener |
hive.metastore.execute.setugi |
true |
webhcat-site.xml,中设置:
变量名 | 值 |
webhcat.proxyuser.hue.groups | 一个逗号分隔的Unix组列表,其用户可以由“hue”模拟。 |
webhcat.proxyuser.hue.hosts | 允许按“hue”提交请求的主机的逗号分隔列表。在规范示例中,这是运行Hue的服务器。 |
同时,也要在core-site.xml中配置
变量名 | 值 |
hadoop.proxyuser.hcat.group | 一个逗号分隔的Unix组列表,其用户可以由'hcat'模拟。 |
hadoop.proxyuser.hcat.hosts |
Navigation Links
Previous: Using WebHCat
Next: Configuration
Hive installation: Installing Hive
HCatalog installation: Installation from Tarball
General: WebHCat Manual – HCatalog Manual – Hive Wiki Home – Hive Project Site
参考:
https://cwiki.apache.org/confluence/display/Hive/WebHCat+InstallWebHCat