我正在Kubernetes上做一个项目,我使用Spark SQL来创建表,我想向Hive Metastore添加分区和模式。然而,我没有找到任何合适的文档来在Kubernetes上安装Hive Metastore。是否有可能知道我已经安装了PostgreSQL数据库?如果是的话,你能帮我提供任何官方文件吗?先谢谢你了。
sczxawaw1#
MR3上的Hive允许用户在Kubernetes上的Pod中运行Metastore。指令可能看起来很复杂,但一旦Pod配置正确,就很容易在Kubernetes上启动Metastore。您也可以在Docker Hub找到预构建的Docker镜像。还提供了 Helm 图。https://mr3docs.datamonad.com/docs/k8s/guide/run-metastore/https://mr3docs.datamonad.com/docs/k8s/helm/run-metastore/本文档假设使用MySQL,但我们也用PostgreSQL测试过它。
ecr0jaav2#
对于install Hive Metastore on Kubernetes,您需要运行Metastore服务的Docker镜像和Kubernetes部署配置。Metastore服务连接到用于存储元数据的关系数据库。以下是步骤:
*在Kubernetes上设置Hive Metastore:
metastore-standalone
Init Containers
busybox:1.28
hadoop-aws
aws-java-sdk-bundle
apache/hive:3.1.3
Main Container
Environment Variables
SERVICE_NAME
metastore
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Command
/jars
/opt/hadoop/share/hadoop/common
schematool
spark.hadoop.fs.s3a.access.key
spark.hadoop.fs.s3a.secret.key
spark.hadoop.fs.s3a.endpoint
spark.sql.catalogImplementation
hive
spark.hadoop.hive.metastore.uris
containers
busybox
此外,请记住将YAML配置和Spark-submit命令中的AWS Access Key和Secret Key占位符替换为您的实际AWS凭据。下面是一个简单的例子:
apiVersion: v1 kind: Pod spec: initContainers: - name: download-dependencies image: busybox:1.28 command: - /bin/sh - -c - | wget -P /jars https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.1.0/hadoop-aws-3.1.0.jar https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.271/aws-java-sdk-bundle-1.11.271.jar volumeMounts: - name: jar-volume mountPath: /jars containers: - name: hive-metastore image: apache/hive:3.1.3 ports: - containerPort: 9083 command: ["/bin/bash", "-c", "mv /jars/* /opt/hadoop/share/hadoop/common && /opt/hive/bin/schematool -dbType derby -initSchema && exec /opt/hive/bin/hive --skiphadoopversion --skiphbasecp --service metastore --hiveconf fs.s3a.endpoint=your-s3-endpoint"] volumeMounts: - name: jar-volume mountPath: /jars volumes: - name: jar-volume emptyDir: {}
我希望这对你有帮助!如果你有任何问题请告诉我。
2条答案
按热度按时间sczxawaw1#
MR3上的Hive允许用户在Kubernetes上的Pod中运行Metastore。指令可能看起来很复杂,但一旦Pod配置正确,就很容易在Kubernetes上启动Metastore。您也可以在Docker Hub找到预构建的Docker镜像。还提供了 Helm 图。
https://mr3docs.datamonad.com/docs/k8s/guide/run-metastore/
https://mr3docs.datamonad.com/docs/k8s/helm/run-metastore/
本文档假设使用MySQL,但我们也用PostgreSQL测试过它。
ecr0jaav2#
对于install Hive Metastore on Kubernetes,您需要运行Metastore服务的Docker镜像和Kubernetes部署配置。Metastore服务连接到用于存储元数据的关系数据库。以下是步骤:
*在Kubernetes上设置Hive Metastore:
metastore-standalone
创建Kubernetes Pod。该Pod应包括:Init Containers
,用于下载应用程序所需的依赖项。此容器使用busybox:1.28
映像并运行shell命令从Maven存储库下载hadoop-aws
和aws-java-sdk-bundle
JAR文件。apache/hive:3.1.3
映像的Main Container
。此容器被配置为运行Hive Metastore服务。Metastore服务管理Hive表和分区的元数据。Environment Variables
用于Hive Metastore服务。SERVICE_NAME
设置为metastore
。还设置了AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
,将用于访问AWS S3。Command
,首先将下载的JAR文件从/jars
目录移动到/opt/hadoop/share/hadoop/common
目录。然后,它使用Derby作为数据库初始化Metastore模式。最后,它运行Hive Metastore服务。*使用远程数据库:此设置中的Hive Metastore服务使用本地/嵌入式Metastore数据库(Derby),这对于测试或开发目的是很好的。但是,对于生产使用,建议使用远程元存储数据库。Metastore服务支持多种类型的数据库,包括MySQL、Postgres、Oracle和MS SQL Server。您需要调整
schematool
命令并提供其他配置以使用远程数据库。*配置Spark将远程Hive Metastore和S3用作仓库:
hadoop-aws
包,允许Spark与S3交互。spark.hadoop.fs.s3a.access.key
和spark.hadoop.fs.s3a.secret.key
提供了与AWS S3交互所需的访问密钥。spark.hadoop.fs.s3a.endpoint
配置将端点设置为访问S3服务。spark.sql.catalogImplementation
配置设置为hive
,这意味着应用程序将使用Hive的目录实现。spark.hadoop.hive.metastore.uris
配置设置用于连接到Hive元存储区的URI。*解决常见问题:
containers
部分使用自定义命令覆盖默认命令。此命令初始化Derby数据库的模式,然后启动HiveMetastore服务。busybox
映像,从Maven存储库下载必要的AWS JAR文件,并将其存储在共享卷中。然后,将这些JAR添加到主Hive Metastore容器的类路径中。请记住,这些说明是相当一般的,您可能需要调整它们以适应您的特定需求和环境。此外,请记住将YAML配置和Spark-submit命令中的AWS Access Key和Secret Key占位符替换为您的实际AWS凭据。
下面是一个简单的例子:
我希望这对你有帮助!如果你有任何问题请告诉我。