From 6155321b8a30f51f871dfe692fc3a91a55870d69 Mon Sep 17 00:00:00 2001 From: Chance Zibolski Date: Fri, 2 Nov 2018 19:04:37 -0700 Subject: [PATCH] images,charts,hack: Remove hive image build, customize hive in chart Removes the metering-hive image and uses the quay.io/coreos/hive image directly, and instead customizes configuration and entrypoint scripts using configmaps/secrets and helm templates. --- Makefile | 5 - charts/presto/templates/_helpers.tpl | 72 ++------- .../presto/templates/hive-common-config.yaml | 17 --- charts/presto/templates/hive-configmap.yaml | 144 ++++++++++++++++++ .../templates/hive-metastore-config.yaml | 8 - .../templates/hive-metastore-statefulset.yaml | 33 +++- .../templates/hive-scripts-configmap.yaml | 57 +++++++ ...-common-secrets.yaml => hive-secrets.yaml} | 8 +- .../presto/templates/hive-server-config.yaml | 8 - .../templates/hive-server-statefulset.yaml | 34 ++++- charts/presto/values.yaml | 6 +- hack/deploy-custom.sh | 2 - hack/render-metering-chart-override-values.sh | 5 - images/hive/Dockerfile | 47 ------ images/hive/conf/beeline-log4j2.properties | 45 ------ images/hive/conf/hive-env.sh | 54 ------- images/hive/conf/hive-exec-log4j2.properties | 59 ------- images/hive/conf/hive-log4j2.properties | 58 ------- images/hive/conf/hive-site.xml | 36 ----- images/hive/conf/ivysettings.xml | 41 ----- .../hive/conf/llap-daemon-log4j2.properties | 93 ----------- images/hive/hive-entrypoint.sh | 7 - ...json-serde-1.3.8-jar-with-dependencies.jar | Bin 85491 -> 0 bytes images/hive/metastore.sh | 41 ----- .../metering-config/latest-versions.yaml | 7 - 25 files changed, 269 insertions(+), 618 deletions(-) delete mode 100644 charts/presto/templates/hive-common-config.yaml create mode 100644 charts/presto/templates/hive-configmap.yaml delete mode 100644 charts/presto/templates/hive-metastore-config.yaml create mode 100644 charts/presto/templates/hive-scripts-configmap.yaml rename charts/presto/templates/{hive-common-secrets.yaml => hive-secrets.yaml} (50%) delete mode 100644 charts/presto/templates/hive-server-config.yaml delete mode 100644 images/hive/Dockerfile delete mode 100644 images/hive/conf/beeline-log4j2.properties delete mode 100644 images/hive/conf/hive-env.sh delete mode 100644 images/hive/conf/hive-exec-log4j2.properties delete mode 100644 images/hive/conf/hive-log4j2.properties delete mode 100644 images/hive/conf/hive-site.xml delete mode 100644 images/hive/conf/ivysettings.xml delete mode 100644 images/hive/conf/llap-daemon-log4j2.properties delete mode 100755 images/hive/hive-entrypoint.sh delete mode 100644 images/hive/json-serde-1.3.8-jar-with-dependencies.jar delete mode 100644 images/hive/metastore.sh diff --git a/Makefile b/Makefile index a80a23e8a..f67acf5fc 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,6 @@ endif DOCKER_COMMON_NAMES := \ reporting-operator \ metering-operator \ - hive \ metering-e2e DOCKER_BUILD_NAMES = $(DOCKER_COMMON_NAMES) @@ -60,7 +59,6 @@ DOCKER_BASE_URL := quay.io/coreos METERING_OPERATOR_IMAGE := $(DOCKER_BASE_URL)/metering-helm-operator REPORTING_OPERATOR_IMAGE := $(DOCKER_BASE_URL)/metering-reporting-operator -HIVE_IMAGE := $(DOCKER_BASE_URL)/metering-hive METERING_E2E_IMAGE := $(DOCKER_BASE_URL)/metering-e2e GIT_SHA := $(shell git rev-parse HEAD) @@ -187,9 +185,6 @@ metering-e2e-docker-build: Dockerfile.e2e metering-operator-docker-build: Dockerfile.metering-operator $(MAKE) docker-build DOCKERFILE=$< IMAGE_NAME=$(METERING_OPERATOR_IMAGE) DOCKER_BUILD_CONTEXT=$(ROOT_DIR) -hive-docker-build: images/hive/Dockerfile - $(MAKE) docker-build DOCKERFILE=$< IMAGE_NAME=$(HIVE_IMAGE) - # Update dependencies vendor: Gopkg.toml dep ensure -v diff --git a/charts/presto/templates/_helpers.tpl b/charts/presto/templates/_helpers.tpl index cdb3692b6..30f6b01ef 100644 --- a/charts/presto/templates/_helpers.tpl +++ b/charts/presto/templates/_helpers.tpl @@ -51,66 +51,6 @@ connector.name=jmx {{- end }} {{- define "hive-env" }} -- name: CORE_CONF_fs_s3a_access_key - valueFrom: - secretKeyRef: - name: hive-common-secrets - key: aws-access-key-id - optional: true -- name: CORE_CONF_fs_s3a_secret_key - valueFrom: - secretKeyRef: - name: hive-common-secrets - key: aws-secret-access-key - optional: true -- name: CORE_CONF_fs_defaultFS - valueFrom: - configMapKeyRef: - name: hive-common-config - key: default-fs - optional: true -- name: HIVE_SITE_CONF_hive_metastore_uris - valueFrom: - configMapKeyRef: - name: hive-common-config - key: metastore-uris -- name: HIVE_SITE_CONF_javax_jdo_option_ConnectionURL - valueFrom: - configMapKeyRef: - name: hive-common-config - key: db-connection-url -- name: HIVE_SITE_CONF_javax_jdo_option_ConnectionDriverName - valueFrom: - configMapKeyRef: - name: hive-common-config - key: db-connection-driver -- name: HIVE_SITE_CONF_javax_jdo_option_ConnectionUserName - valueFrom: - secretKeyRef: - name: hive-common-secrets - key: db-connection-username - optional: true -- name: HIVE_SITE_CONF_javax_jdo_option_ConnectionPassword - valueFrom: - secretKeyRef: - name: hive-common-secrets - key: db-connection-password - optional: true -- name: HIVE_SITE_CONF_hive_metastore_schema_verification - valueFrom: - configMapKeyRef: - name: hive-common-config - key: enable-metastore-schema-verification -- name: HIVE_SITE_CONF_datanucleus_schema_autoCreateAll - valueFrom: - configMapKeyRef: - name: hive-common-config - key: auto-create-metastore-schema -- name: HIVE_SITE_CONF_hive_default_fileformat - valueFrom: - configMapKeyRef: - name: hive-common-config - key: default-file-format - name: MY_NODE_NAME valueFrom: fieldRef: @@ -125,4 +65,16 @@ connector.name=jmx fieldPath: metadata.namespace - name: JAVA_MAX_MEM_RATIO value: "50" +- name: AWS_ACCESS_KEY_ID + valueFrom: + secretKeyRef: + name: hive-secrets + key: aws-access-key-id + optional: true +- name: AWS_SECRET_ACCESS_KEY + valueFrom: + secretKeyRef: + name: hive-secrets + key: aws-secret-access-key + optional: true {{- end }} diff --git a/charts/presto/templates/hive-common-config.yaml b/charts/presto/templates/hive-common-config.yaml deleted file mode 100644 index 9953400c2..000000000 --- a/charts/presto/templates/hive-common-config.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: hive-common-config -{{- block "extraMetadata" . }} -{{- end }} -data: -{{- if .Values.spec.hive.config.defaultfs }} - default-fs: {{ .Values.spec.hive.config.defaultfs | quote}} -{{- end }} - db-connection-url: {{ .Values.spec.hive.config.dbConnectionURL | quote}} - db-connection-driver: {{ .Values.spec.hive.config.dbConnectionDriver | quote}} - enable-metastore-schema-verification: {{ .Values.spec.hive.config.enableMetastoreSchemaVerification | quote}} - auto-create-metastore-schema: {{ .Values.spec.hive.config.autoCreateMetastoreSchema | quote}} - default-file-format: {{ .Values.spec.hive.config.defaultFileFormat | quote}} - metastore-uris: {{ .Values.spec.hive.config.metastoreURIs | quote}} - diff --git a/charts/presto/templates/hive-configmap.yaml b/charts/presto/templates/hive-configmap.yaml new file mode 100644 index 000000000..1b34d49f5 --- /dev/null +++ b/charts/presto/templates/hive-configmap.yaml @@ -0,0 +1,144 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: hive-config +{{- block "extraMetadata" . }} +{{- end }} +data: + hive-site.xml: | + + + hive.server2.enable.doAs + false + + + hive.server2.use.SSL + false + + + hive.server2.authentication + NOSASL + + + hive.metastore.uris + {{ .Values.spec.hive.config.metastoreURIs }} + + + javax.jdo.option.ConnectionURL + {{ .Values.spec.hive.config.dbConnectionURL }} + + + javax.jdo.option.ConnectionDriverName + {{ .Values.spec.hive.config.dbConnectionDriver }} + + + javax.jdo.option.ConnectionUserName + {{ .Values.spec.hive.config.dbConnectionUsername }} + + + javax.jdo.option.ConnectionPassword + {{ .Values.spec.hive.config.dbConnectionPassword }} + + + datanucleus.schema.autoCreateAll + {{ .Values.spec.hive.config.autoCreateMetastoreSchema }} + + + hive.metastore.schema.verification + {{ .Values.spec.hive.config.enableMetastoreSchemaVerification }} + + + hive.default.fileformat + {{ .Values.spec.hive.config.defaultFileFormat }} + + + + + hive-log4j2.properties: | + status = INFO + name = HiveLog4j2 + packages = org.apache.hadoop.hive.ql.log + + # list of properties + property.hive.log.level = INFO + property.hive.root.logger = console + property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name} + property.hive.log.file = hive.log + + # list of all appenders + appenders = console + + # console appender + appender.console.type = Console + appender.console.name = console + appender.console.target = SYSTEM_ERR + appender.console.layout.type = PatternLayout + appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n + + # list of all loggers + loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX + + logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn + logger.NIOServerCnxn.level = WARN + + logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO + logger.ClientCnxnSocketNIO.level = WARN + + logger.DataNucleus.name = DataNucleus + logger.DataNucleus.level = ERROR + + logger.Datastore.name = Datastore + logger.Datastore.level = ERROR + + logger.JPOX.name = JPOX + logger.JPOX.level = ERROR + + # root logger + rootLogger.level = ${sys:hive.log.level} + rootLogger.appenderRefs = root + rootLogger.appenderRef.root.ref = ${sys:hive.root.logger} + + hive-exec-log4j2.properties: | + status = INFO + name = HiveLog4j2 + packages = org.apache.hadoop.hive.ql.log + + # list of properties + property.hive.log.level = INFO + property.hive.root.logger = console + property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name} + property.hive.log.file = hive.log + + # list of all appenders + appenders = console + + # console appender + appender.console.type = Console + appender.console.name = console + appender.console.target = SYSTEM_ERR + appender.console.layout.type = PatternLayout + appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n + + # list of all loggers + loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX + + logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn + logger.NIOServerCnxn.level = WARN + + logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO + logger.ClientCnxnSocketNIO.level = WARN + + logger.DataNucleus.name = DataNucleus + logger.DataNucleus.level = ERROR + + logger.Datastore.name = Datastore + logger.Datastore.level = ERROR + + logger.JPOX.name = JPOX + logger.JPOX.level = ERROR + + # root logger + rootLogger.level = ${sys:hive.log.level} + rootLogger.appenderRefs = root + rootLogger.appenderRef.root.ref = ${sys:hive.root.logger} + diff --git a/charts/presto/templates/hive-metastore-config.yaml b/charts/presto/templates/hive-metastore-config.yaml deleted file mode 100644 index bcce31a77..000000000 --- a/charts/presto/templates/hive-metastore-config.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: hive-metastore-config -{{- block "extraMetadata" . }} -{{- end }} -data: - log-level: {{ upper .Values.spec.hive.metastore.config.logLevel | quote}} diff --git a/charts/presto/templates/hive-metastore-statefulset.yaml b/charts/presto/templates/hive-metastore-statefulset.yaml index c5fa3ffe8..906883176 100644 --- a/charts/presto/templates/hive-metastore-statefulset.yaml +++ b/charts/presto/templates/hive-metastore-statefulset.yaml @@ -28,9 +28,8 @@ spec: {{ toYaml .Values.spec.hive.labels | indent 8 }} {{- end }} annotations: - hive-common-configmap-hash: {{ include (print $.Template.BasePath "/hive-common-config.yaml") . | sha256sum }} - hive-common-secret-hash: {{ include (print $.Template.BasePath "/hive-common-secrets.yaml") . | sha256sum }} - hive-metastore-configmap-hash: {{ include (print $.Template.BasePath "/hive-metastore-config.yaml") . | sha256sum }} + hive-configmap-hash: {{ include (print $.Template.BasePath "/hive-configmap.yaml") . | sha256sum }} + hive-scripts-hash: {{ include (print $.Template.BasePath "/hive-scripts-configmap.yaml") . | sha256sum }} {{- if .Values.spec.hive.annotations }} {{ toYaml .Values.spec.hive.annotations | indent 8 }} {{- end }} @@ -43,7 +42,8 @@ spec: {{- end }} containers: - name: metastore - args: ["--service", "metastore"] + command: ["/hive-scripts/entrypoint.sh"] + args: ["/opt/hive/bin/hive", "--service", "metastore"] image: "{{ .Values.spec.hive.image.repository }}:{{ .Values.spec.hive.image.tag }}" imagePullPolicy: {{ .Values.spec.hive.image.pullPolicy }} ports: @@ -52,10 +52,7 @@ spec: protocol: TCP env: - name: HIVE_LOGLEVEL - valueFrom: - configMapKeyRef: - name: hive-server-config - key: log-level + value: {{ upper .Values.spec.hive.metastore.config.logLevel | quote}} {{ include "hive-env" . | indent 8 }} - name: MY_MEM_REQUEST valueFrom: @@ -68,6 +65,14 @@ spec: containerName: metastore resource: limits.memory volumeMounts: + - name: hive-config + mountPath: /hive-config + - name: hive-scripts + mountPath: /hive-scripts +{{- if .Values.spec.hive.config.useHdfsConfigMap }} + - name: hdfs-config + mountPath: /hadoop-config +{{- end }} - name: hive-metastore-db-data mountPath: /var/lib/hive # openshift requires volumeMounts for VOLUMEs in a Dockerfile @@ -90,6 +95,18 @@ spec: terminationGracePeriodSeconds: {{ .Values.spec.hive.terminationGracePeriodSeconds }} serviceAccount: hive volumes: + - name: hive-config + configMap: + name: hive-config + - name: hive-scripts + configMap: + name: hive-scripts + defaultMode: 0555 +{{- if .Values.spec.hive.config.useHdfsConfigMap }} + - name: hdfs-config + configMap: + name: {{ .Values.spec.hive.config.hdfsConfigMapName }} +{{- end }} # these emptyDir volumes are necessary because Openshift requires VOLUMEs # in a Dockerfile have a corresponding volumeMount - name: hive-warehouse-empty diff --git a/charts/presto/templates/hive-scripts-configmap.yaml b/charts/presto/templates/hive-scripts-configmap.yaml new file mode 100644 index 000000000..1ffaec0b3 --- /dev/null +++ b/charts/presto/templates/hive-scripts-configmap.yaml @@ -0,0 +1,57 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: hive-scripts +{{- block "extraMetadata" . }} +{{- end }} +data: + entrypoint.sh: | + #!/bin/bash -e + + max_memory() { + local memory_limit=$1 + local ratio=${JAVA_MAX_MEM_RATIO:-50} + echo "${memory_limit} ${ratio} 1048576" | awk '{printf "%d\n" , ($1*$2)/(100*$3) + 0.5}' + } + + # Check for container memory limits/request and use it to set JVM Heap size. + # Defaults to 50% of the limit/request value. + if [ -n "$MY_MEM_LIMIT" ]; then + export HADOOP_HEAPSIZE="$( max_memory $MY_MEM_LIMIT )" + elif [ -n "$MY_MEM_REQUEST" ]; then + export HADOOP_HEAPSIZE="$( max_memory $MY_MEM_REQUEST )" + fi + + if [ -z "$HADOOP_HEAPSIZE" ]; then + echo "Unable to automatically set HADOOP_HEAPSIZE" + else + echo "Setting HADOOP_HEAPSIZE to ${HADOOP_HEAPSIZE}M" + fi + + # add UID to /etc/passwd if missing + if ! whoami &> /dev/null; then + if [ -w /etc/passwd ]; then + echo "${USER_NAME:-hadoop}:x:$(id -u):0:${USER_NAME:-hadoop} user:${HOME}:/sbin/nologin" >> /etc/passwd + fi + fi + + # symlink our configuration files to the correct location + if [ -f /hadoop-config/core-site.xml ]; then + ln -s -f /hadoop-config/core-site.xml /etc/hadoop/core-site.xml + else + echo "/hadoop-config/core-site.xml doesnt exist, skipping symlink" + fi + if [ -f /hadoop-config/hdfs-site.xml ]; then + ln -s -f /hadoop-config/hdfs-site.xml /etc/hadoop/hdfs-site.xml + else + echo "/hadoop-config/hdfs-site.xml doesnt exist, skipping symlink" + fi + ln -s -f /hive-config/hive-site.xml $HIVE_HOME/conf/hive-site.xml + ln -s -f /hive-config/hive-log4j2.properties $HIVE_HOME/conf/hive-log4j2.properties + ln -s -f /hive-config/hive-exec-log4j2.properties $HIVE_HOME/conf/hive-exec-log4j2.properties + + export HIVE_LOGLEVEL="${HIVE_LOGLEVEL:-INFO}" + export HIVE_METASTORE_HADOOP_OPTS=" -Dhive.log.level=${HIVE_LOGLEVEL} " + export HIVE_OPTS="$HIVE_OPTS --hiveconf hive.root.logger=${HIVE_LOGLEVEL},console " + + exec $@ diff --git a/charts/presto/templates/hive-common-secrets.yaml b/charts/presto/templates/hive-secrets.yaml similarity index 50% rename from charts/presto/templates/hive-common-secrets.yaml rename to charts/presto/templates/hive-secrets.yaml index 65f7d6ad3..675cf678b 100644 --- a/charts/presto/templates/hive-common-secrets.yaml +++ b/charts/presto/templates/hive-secrets.yaml @@ -1,16 +1,10 @@ apiVersion: v1 kind: Secret metadata: - name: hive-common-secrets + name: hive-secrets {{- block "extraMetadata" . }} {{- end }} data: -{{- if .Values.spec.hive.config.dbConnectionUsername }} - db-connection-username: {{ .Values.spec.hive.config.dbConnectionUsername | b64enc | quote }} -{{- end }} -{{- if .Values.spec.hive.config.dbConnectionPassword }} - db-connection-password: {{ .Values.spec.hive.config.dbConnectionPassword | b64enc | quote }} -{{- end }} {{- if .Values.spec.config.awsAccessKeyID }} aws-access-key-id: {{ .Values.spec.config.awsAccessKeyID | b64enc | quote}} {{- end}} diff --git a/charts/presto/templates/hive-server-config.yaml b/charts/presto/templates/hive-server-config.yaml deleted file mode 100644 index c58adddff..000000000 --- a/charts/presto/templates/hive-server-config.yaml +++ /dev/null @@ -1,8 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: hive-server-config -{{- block "extraMetadata" . }} -{{- end }} -data: - log-level: {{ upper .Values.spec.hive.server.config.logLevel | quote}} diff --git a/charts/presto/templates/hive-server-statefulset.yaml b/charts/presto/templates/hive-server-statefulset.yaml index e30ad0d9d..72237283c 100644 --- a/charts/presto/templates/hive-server-statefulset.yaml +++ b/charts/presto/templates/hive-server-statefulset.yaml @@ -28,9 +28,9 @@ spec: {{ toYaml .Values.spec.hive.labels | indent 8 }} {{- end }} annotations: - hive-common-configmap-hash: {{ include (print $.Template.BasePath "/hive-common-config.yaml") . | sha256sum }} - hive-common-secret-hash: {{ include (print $.Template.BasePath "/hive-common-secrets.yaml") . | sha256sum }} - hive-server-configmap-hash: {{ include (print $.Template.BasePath "/hive-server-config.yaml") . | sha256sum }} + hive-configmap-hash: {{ include (print $.Template.BasePath "/hive-configmap.yaml") . | sha256sum }} + hive-scripts-hash: {{ include (print $.Template.BasePath "/hive-scripts-configmap.yaml") . | sha256sum }} + hive-secrets-hash: {{ include (print $.Template.BasePath "/hive-secrets.yaml") . | sha256sum }} {{- if .Values.spec.hive.annotations }} {{ toYaml .Values.spec.hive.annotations | indent 8 }} {{- end }} @@ -43,7 +43,8 @@ spec: {{- end }} containers: - name: hiveserver2 - args: ["--service", "hiveserver2"] + command: ["/hive-scripts/entrypoint.sh"] + args: ["/opt/hive/bin/hive", "--service", "hiveserver2"] image: "{{ .Values.spec.hive.image.repository }}:{{ .Values.spec.hive.image.tag }}" imagePullPolicy: {{ .Values.spec.hive.image.pullPolicy }} ports: @@ -56,10 +57,7 @@ spec: terminationMessagePath: /dev/termination-log env: - name: HIVE_LOGLEVEL - valueFrom: - configMapKeyRef: - name: hive-server-config - key: log-level + value: {{ upper .Values.spec.hive.server.config.logLevel | quote}} {{ include "hive-env" . | indent 8 }} - name: MY_MEM_REQUEST valueFrom: @@ -72,6 +70,14 @@ spec: containerName: hiveserver2 resource: limits.memory volumeMounts: + - name: hive-config + mountPath: /hive-config + - name: hive-scripts + mountPath: /hive-scripts +{{- if .Values.spec.hive.config.useHdfsConfigMap }} + - name: hdfs-config + mountPath: /hadoop-config +{{- end}} # openshift requires volumeMounts for VOLUMEs in a Dockerfile - name: hive-metastore-db-data mountPath: /var/lib/hive @@ -94,6 +100,18 @@ spec: terminationGracePeriodSeconds: {{ .Values.spec.hive.terminationGracePeriodSeconds }} serviceAccount: hive volumes: + - name: hive-config + configMap: + name: hive-config + - name: hive-scripts + configMap: + name: hive-scripts + defaultMode: 0555 +{{- if .Values.spec.hive.config.useHdfsConfigMap }} + - name: hdfs-config + configMap: + name: {{ .Values.spec.hive.config.hdfsConfigMapName }} +{{- end }} # these emptyDir volumes are necessary because Openshift requires VOLUMEs # in a Dockerfile have a corresponding volumeMount - name: hive-warehouse-empty diff --git a/charts/presto/values.yaml b/charts/presto/values.yaml index 5a733cace..8ad0ce881 100644 --- a/charts/presto/values.yaml +++ b/charts/presto/values.yaml @@ -76,8 +76,8 @@ spec: hive: image: - repository: quay.io/coreos/metering-hive - tag: latest + repository: quay.io/coreos/hive + tag: metering-2.3.3 pullPolicy: Always config: @@ -91,6 +91,8 @@ spec: defaultFileFormat: "orc" defaultCompression: "zlib" metastoreURIs: "thrift://hive-metastore:9083" + useHdfsConfigMap: true + hdfsConfigMapName: hdfs-config securityContext: runAsNonRoot: true diff --git a/hack/deploy-custom.sh b/hack/deploy-custom.sh index 9e4824425..c303d9381 100755 --- a/hack/deploy-custom.sh +++ b/hack/deploy-custom.sh @@ -70,8 +70,6 @@ spec: terminationGracePeriodSeconds: ${TERMINATION_GRACE_PERIOD_SECONDS} hive: terminationGracePeriodSeconds: ${TERMINATION_GRACE_PERIOD_SECONDS} - image: - tag: ${DEPLOY_TAG} hdfs: spec: diff --git a/hack/render-metering-chart-override-values.sh b/hack/render-metering-chart-override-values.sh index ee48792b9..7f45f3f90 100755 --- a/hack/render-metering-chart-override-values.sh +++ b/hack/render-metering-chart-override-values.sh @@ -9,9 +9,4 @@ reporting-operator: spec: image: tag: $1 -presto: - spec: - hive: - image: - tag: $1 EOF diff --git a/images/hive/Dockerfile b/images/hive/Dockerfile deleted file mode 100644 index 23a6bd4c9..000000000 --- a/images/hive/Dockerfile +++ /dev/null @@ -1,47 +0,0 @@ -FROM quay.io/coreos/metering-hadoop:latest - -ENV HIVE_VERSION=2.3.3 -ENV HIVE_HOME=/opt/hive -ENV PATH=$HIVE_HOME/bin:$PATH - -RUN mkdir -p /opt -WORKDIR /opt - -USER root -# Install Hive -RUN set -x \ - && curl -fSLs https://apache.osuosl.org/hive/hive-$HIVE_VERSION/apache-hive-$HIVE_VERSION-bin.tar.gz | tar -xz && mv apache-hive-$HIVE_VERSION-bin hive - -ENV HADOOP_CLASSPATH /opt/hive/hcatalog/share/hcatalog/*:${HADOOP_CLASSPATH} -ENV HIVE_AUX_JARS_PATH /usr/hdp/current/hive-server2/auxlib - -ENV POSTGRESQL_JDBC_JAR postgresql-42.2.2.jar -# Using mysql-connector-java-8.0.11 resulted in hive schema creation failing due to incorrect syntax. -ENV MYSQL_JDBC_VERSION mysql-connector-java-5.1.46 -ENV MYSQL_JDBC_JAR $MYSQL_JDBC_VERSION.jar - -# Install PostgreSQL JDBC -RUN set -x \ - && curl -fSLs -o "$HIVE_HOME/lib/$POSTGRESQL_JDBC_JAR" "https://jdbc.postgresql.org/download/$POSTGRESQL_JDBC_JAR" - -# Install MySQL JDBC -RUN set -x \ - && curl -fSLs "https://dev.mysql.com/get/Downloads/Connector-J/$MYSQL_JDBC_VERSION.tar.gz" | tar -zx --strip-components=1 -C "$HIVE_HOME/lib" "$MYSQL_JDBC_VERSION/$MYSQL_JDBC_JAR" - -# Configure JSON SerDe and AWS Jars -RUN mkdir -p /usr/hdp/current/hive-server2/auxlib && ln -s ${HADOOP_HOME}/share/hadoop/tools/lib/*aws* /opt/hive/lib -COPY json-serde-1.3.8-jar-with-dependencies.jar /usr/hdp/current/hive-server2/auxlib - -COPY metastore.sh /opt/hive/bin/ext/metastore.sh -COPY hive-entrypoint.sh /usr/local/bin/hive-entrypoint.sh -COPY conf/* $HIVE_HOME/conf/ - -RUN \ - mkdir -p /var/lib/hive /user/hive/warehouse && \ - chown -R 1002:0 /opt /var/lib/hive /user/hive/warehouse && \ - chmod -R 770 /opt /var/lib/hive /user/hive/warehouse /etc/passwd - -VOLUME /user/hive/warehouse /var/lib/hive -ENTRYPOINT ["hive-entrypoint.sh"] - -USER 1002 diff --git a/images/hive/conf/beeline-log4j2.properties b/images/hive/conf/beeline-log4j2.properties deleted file mode 100644 index 103d72253..000000000 --- a/images/hive/conf/beeline-log4j2.properties +++ /dev/null @@ -1,45 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -status = INFO -name = BeelineLog4j2 -packages = org.apache.hadoop.hive.ql.log - -# list of properties -property.hive.log.level = WARN -property.hive.root.logger = console - -# list of all appenders -appenders = console - -# console appender -appender.console.type = Console -appender.console.name = console -appender.console.target = SYSTEM_ERR -appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n - -# list of all loggers -loggers = HiveConnection - -# HiveConnection logs useful info for dynamic service discovery -logger.HiveConnection.name = org.apache.hive.jdbc.HiveConnection -logger.HiveConnection.level = INFO - -# root logger -rootLogger.level = ${sys:hive.log.level} -rootLogger.appenderRefs = root -rootLogger.appenderRef.root.ref = ${sys:hive.root.logger} diff --git a/images/hive/conf/hive-env.sh b/images/hive/conf/hive-env.sh deleted file mode 100644 index 91a2905d0..000000000 --- a/images/hive/conf/hive-env.sh +++ /dev/null @@ -1,54 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Set Hive and Hadoop environment variables here. These variables can be used -# to control the execution of Hive. It should be used by admins to configure -# the Hive installation (so that users do not have to set environment variables -# or set command line parameters to get correct behavior). -# -# The hive service being invoked (CLI/HWI etc.) is available via the environment -# variable SERVICE - - -# Hive Client memory usage can be an issue if a large number of clients -# are running at the same time. The flags below have been useful in -# reducing memory usage: -# -# if [ "$SERVICE" = "cli" ]; then -# if [ -z "$DEBUG" ]; then -# export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit" -# else -# export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit" -# fi -# fi - -# The heap size of the jvm stared by hive shell script can be controlled via: -# -# export HADOOP_HEAPSIZE=1024 -# -# Larger heap size may be required when running queries over large number of files or partitions. -# By default hive shell scripts use a heap size of 256 (MB). Larger heap size would also be -# appropriate for hive server (hwi etc). - - -# Set HADOOP_HOME to point to a specific hadoop install directory -# HADOOP_HOME=${bin}/../../hadoop - -# Hive Configuration Directory can be controlled by: -# export HIVE_CONF_DIR= - -# Folder containing extra ibraries required for hive compilation/execution can be controlled by: -# export HIVE_AUX_JARS_PATH= diff --git a/images/hive/conf/hive-exec-log4j2.properties b/images/hive/conf/hive-exec-log4j2.properties deleted file mode 100644 index 3cf7cbc34..000000000 --- a/images/hive/conf/hive-exec-log4j2.properties +++ /dev/null @@ -1,59 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -status = INFO -name = HiveExecLog4j2 -packages = org.apache.hadoop.hive.ql.log - -# list of properties -property.hive.log.level = INFO -property.hive.root.logger = console -property.hive.query.id = hadoop -property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name} -property.hive.log.file = ${sys:hive.query.id}.log - -# list of all appenders -appenders = console - -# console appender -appender.console.type = Console -appender.console.name = console -appender.console.target = SYSTEM_ERR -appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n - -# list of all loggers -loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX - -logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn -logger.NIOServerCnxn.level = WARN - -logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO -logger.ClientCnxnSocketNIO.level = WARN - -logger.DataNucleus.name = DataNucleus -logger.DataNucleus.level = ERROR - -logger.Datastore.name = Datastore -logger.Datastore.level = ERROR - -logger.JPOX.name = JPOX -logger.JPOX.level = ERROR - -# root logger -rootLogger.level = ${sys:hive.log.level} -rootLogger.appenderRefs = root -rootLogger.appenderRef.root.ref = ${sys:hive.root.logger} diff --git a/images/hive/conf/hive-log4j2.properties b/images/hive/conf/hive-log4j2.properties deleted file mode 100644 index 1c0d1032d..000000000 --- a/images/hive/conf/hive-log4j2.properties +++ /dev/null @@ -1,58 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -status = INFO -name = HiveLog4j2 -packages = org.apache.hadoop.hive.ql.log - -# list of properties -property.hive.log.level = INFO -property.hive.root.logger = console -property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name} -property.hive.log.file = hive.log - -# list of all appenders -appenders = console - -# console appender -appender.console.type = Console -appender.console.name = console -appender.console.target = SYSTEM_ERR -appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t]: %p %c{2}: %m%n - -# list of all loggers -loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX - -logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn -logger.NIOServerCnxn.level = WARN - -logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO -logger.ClientCnxnSocketNIO.level = WARN - -logger.DataNucleus.name = DataNucleus -logger.DataNucleus.level = ERROR - -logger.Datastore.name = Datastore -logger.Datastore.level = ERROR - -logger.JPOX.name = JPOX -logger.JPOX.level = ERROR - -# root logger -rootLogger.level = ${sys:hive.log.level} -rootLogger.appenderRefs = root -rootLogger.appenderRef.root.ref = ${sys:hive.root.logger} diff --git a/images/hive/conf/hive-site.xml b/images/hive/conf/hive-site.xml deleted file mode 100644 index 2c05f38a4..000000000 --- a/images/hive/conf/hive-site.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - hive.server2.enable.doAs - false - - - hive.server2.use.SSL - false - - - hive.server2.authentication - NOSASL - - - datanucleus.schema.autoCreateAll - true - - diff --git a/images/hive/conf/ivysettings.xml b/images/hive/conf/ivysettings.xml deleted file mode 100644 index 47f29b26e..000000000 --- a/images/hive/conf/ivysettings.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/images/hive/conf/llap-daemon-log4j2.properties b/images/hive/conf/llap-daemon-log4j2.properties deleted file mode 100644 index 5051ca505..000000000 --- a/images/hive/conf/llap-daemon-log4j2.properties +++ /dev/null @@ -1,93 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -status = INFO -name = LlapDaemonLog4j2 -packages = org.apache.hadoop.hive.ql.log - -# list of properties -property.llap.daemon.log.level = INFO -property.llap.daemon.root.logger = console -property.llap.daemon.log.dir = . -property.llap.daemon.log.file = llapdaemon.log -property.llap.daemon.historylog.file = llapdaemon_history.log -property.llap.daemon.log.maxfilesize = 256MB -property.llap.daemon.log.maxbackupindex = 20 - -# list of all appenders -appenders = console, RFA, HISTORYAPPENDER - -# console appender -appender.console.type = Console -appender.console.name = console -appender.console.target = SYSTEM_ERR -appender.console.layout.type = PatternLayout -appender.console.layout.pattern = %d{yy/MM/dd HH:mm:ss} [%t%x] %p %c{2} : %m%n - -# rolling file appender -appender.RFA.type = RollingFile -appender.RFA.name = RFA -appender.RFA.fileName = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.log.file} -appender.RFA.filePattern = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.log.file}_%i -appender.RFA.layout.type = PatternLayout -appender.RFA.layout.pattern = %d{ISO8601} %-5p [%t%x]: %c{2} (%F:%M(%L)) - %m%n -appender.RFA.policies.type = Policies -appender.RFA.policies.size.type = SizeBasedTriggeringPolicy -appender.RFA.policies.size.size = ${sys:llap.daemon.log.maxfilesize} -appender.RFA.strategy.type = DefaultRolloverStrategy -appender.RFA.strategy.max = ${sys:llap.daemon.log.maxbackupindex} - -# history file appender -appender.HISTORYAPPENDER.type = RollingFile -appender.HISTORYAPPENDER.name = HISTORYAPPENDER -appender.HISTORYAPPENDER.fileName = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.historylog.file} -appender.HISTORYAPPENDER.filePattern = ${sys:llap.daemon.log.dir}/${sys:llap.daemon.historylog.file}_%i -appender.HISTORYAPPENDER.layout.type = PatternLayout -appender.HISTORYAPPENDER.layout.pattern = %m%n -appender.HISTORYAPPENDER.policies.type = Policies -appender.HISTORYAPPENDER.policies.size.type = SizeBasedTriggeringPolicy -appender.HISTORYAPPENDER.policies.size.size = ${sys:llap.daemon.log.maxfilesize} -appender.HISTORYAPPENDER.strategy.type = DefaultRolloverStrategy -appender.HISTORYAPPENDER.strategy.max = ${sys:llap.daemon.log.maxbackupindex} - -# list of all loggers -loggers = NIOServerCnxn, ClientCnxnSocketNIO, DataNucleus, Datastore, JPOX, HistoryLogger - -logger.NIOServerCnxn.name = org.apache.zookeeper.server.NIOServerCnxn -logger.NIOServerCnxn.level = WARN - -logger.ClientCnxnSocketNIO.name = org.apache.zookeeper.ClientCnxnSocketNIO -logger.ClientCnxnSocketNIO.level = WARN - -logger.DataNucleus.name = DataNucleus -logger.DataNucleus.level = ERROR - -logger.Datastore.name = Datastore -logger.Datastore.level = ERROR - -logger.JPOX.name = JPOX -logger.JPOX.level = ERROR - -logger.HistoryLogger.name = org.apache.hadoop.hive.llap.daemon.HistoryLogger -logger.HistoryLogger.level = INFO -logger.HistoryLogger.additivity = false -logger.HistoryLogger.appenderRefs = HistoryAppender -logger.HistoryLogger.appenderRef.HistoryAppender.ref = HISTORYAPPENDER - -# root logger -rootLogger.level = ${sys:llap.daemon.log.level} -rootLogger.appenderRefs = root -rootLogger.appenderRef.root.ref = ${sys:llap.daemon.root.logger} diff --git a/images/hive/hive-entrypoint.sh b/images/hive/hive-entrypoint.sh deleted file mode 100755 index 49c000005..000000000 --- a/images/hive/hive-entrypoint.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -export HIVE_LOGLEVEL="${HIVE_LOGLEVEL:-INFO}" -export HIVE_METASTORE_HADOOP_OPTS=" -Dhive.log.level=${HIVE_LOGLEVEL} " -export HIVE_OPTS="$HIVE_OPTS --hiveconf hive.root.logger=${HIVE_LOGLEVEL},console " - -exec /usr/local/bin/entrypoint.sh /opt/hive/bin/hive "$@" diff --git a/images/hive/json-serde-1.3.8-jar-with-dependencies.jar b/images/hive/json-serde-1.3.8-jar-with-dependencies.jar deleted file mode 100644 index 58b2920f4efa69c19f2e11fb8bcf89c7b28cf1f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85491 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 diff --git a/images/hive/metastore.sh b/images/hive/metastore.sh deleted file mode 100644 index cc08c9569..000000000 --- a/images/hive/metastore.sh +++ /dev/null @@ -1,41 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -THISSERVICE=metastore -export SERVICE_LIST="${SERVICE_LIST}${THISSERVICE} " - -metastore() { - echo "$(timestamp): Starting Hive Metastore Server" - CLASS=org.apache.hadoop.hive.metastore.HiveMetaStore - if $cygwin; then - HIVE_LIB=`cygpath -w "$HIVE_LIB"` - fi - JAR=${HIVE_LIB}/hive-metastore-*.jar - - # hadoop 20 or newer - skip the aux_jars option and hiveconf - - export HADOOP_CLIENT_OPTS=" -Dproc_metastore $HADOOP_CLIENT_OPTS " - export HADOOP_OPTS="$HIVE_METASTORE_HADOOP_OPTS $HADOOP_OPTS" - exec $HADOOP jar $JAR $CLASS "$@" -} - -metastore_help() { - metastore -h -} - -timestamp() -{ - date +"%Y-%m-%d %T" -} diff --git a/manifests/metering-config/latest-versions.yaml b/manifests/metering-config/latest-versions.yaml index b2433e693..1501b6d14 100644 --- a/manifests/metering-config/latest-versions.yaml +++ b/manifests/metering-config/latest-versions.yaml @@ -8,10 +8,3 @@ spec: image: repository: quay.io/coreos/metering-reporting-operator tag: latest - - presto: - spec: - hive: - image: - repository: quay.io/coreos/metering-hive - tag: latest