我对HIVE以及AWS-EMR也很陌生。根据我的要求,我需要在群集外部创建Hive Metastore(从AWS EMR到AWS RDS)。 我按照
中的说明进行操作我在hive-site.xml中进行了更改,并能够将hive metaStore设置为Amazon RDS mysql服务器。为了实现更改,目前我正在重新启动整个集群,因此配置单元开始将Metastore存储到AWS-RDS。这样就可以了。
但我想避免重启群集,有什么办法可以重启服务吗?
答案 0 :(得分:12)
仅限那些将来自Google的人
重新启动任何EMR服务
要在EMR中重新启动服务,请执行以下操作:
运行以下命令查找服务名称:
initctl list
例如,YARN资源管理器服务名为“hadoop-yarn-resourcemanager”。
运行以下命令停止服务:
sudo stop hadoop-yarn-resourcemanager
等待几秒钟,然后运行以下命令启动服务:
sudo start hadoop-yarn-resourcemanager
注意:需要停止/启动;不要使用restart命令。
运行以下命令验证进程是否正在运行:
sudo status hadoop-yarn-resourcemanager
使用ps检查进程,然后检查日志文件中是否存在日志目录/ var / log /中的任何错误。
来源:https://aws.amazon.com/premiumsupport/knowledge-center/restart-service-emr/
答案 1 :(得分:3)
sudo stop hive-metastore
sudo start hive-metastore
答案 2 :(得分:1)
在EMR 5.x上我发现这个有效:
hive --service metastore --stop
hive --service metastore --start
答案 3 :(得分:1)
对我来说,这种方法有效:
1和2的命令
ps aux | grep MetaStore
sudo -u hive kill <pid from above>
如果您不熟悉ps
,则可以使用以下命令,该命令将显示PID
的标头以及hive Metastore命令的仅一行:
ps aux | egrep "MetaStore|PID" | grep -v grep
Hive Server自行重新启动。通过ps
再次验证,猪会变了。
ps aux | grep MetaStore
答案 4 :(得分:0)
您不必重新启动整个群集。启动集群时,您可以使用RDS的详细信息指定hive-site.xml文件。如果您没有按照此选项并在启动群集后手动进行更改,则无需重新启动整个群集。只需重启 hive-Metoreore 服务即可。 Hive Metastore仅在主节点中运行
您可以使用多种方式启动群集。
1)AWS控制台 2)使用API(Java,Python等) 3)使用AWS cli
您可以将hive-site.xml保留在S3中,并在启动群集时将此活动作为引导步骤执行。 AWS api提供的功能是从S3指定自定义hive-site.xml,而不是默认创建的。
如果您仅使用主机中的配置单元,则无需在所有计算机上进行更改。
下面给出了使用aws cli启动EMR时指定hive-site.xml的示例
aws emr create-cluster --name "Test cluster" --ami-version 3.3 --applications Name=Hue Name=Hive Name=Pig \
--use-default-roles --ec2-attributes KeyName=myKey \
--instance-type m3.xlarge --instance-count 3 \
--bootstrap-actions Name="Install Hive Site Configuration",Path="s3://elasticmapreduce/libs/hive/hive-script",\
Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site","--hive-site=s3://mybucket/hive-site.xml","--hive-versions","latest"]