精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hadoop on K8s 編排部署進(jìn)階篇

大數(shù)據(jù) Hadoop
Kubernetes(通常簡(jiǎn)稱為K8s)是一個(gè)開(kāi)源的容器編排平臺(tái),用于自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用程序。它提供了一種強(qiáng)大的方式來(lái)管理容器化應(yīng)用程序的資源和生命周期。

一、概述

Hadoop 是一個(gè)開(kāi)源的分布式計(jì)算框架,用于處理大規(guī)模數(shù)據(jù)集的存儲(chǔ)和處理。它使用了 Hadoop 分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)來(lái)存儲(chǔ)數(shù)據(jù),并通過(guò) MapReduce 編程模型進(jìn)行數(shù)據(jù)處理。

Kubernetes(通常簡(jiǎn)稱為K8s)是一個(gè)開(kāi)源的容器編排平臺(tái),用于自動(dòng)化部署、擴(kuò)展和管理容器化應(yīng)用程序。它提供了一種強(qiáng)大的方式來(lái)管理容器化應(yīng)用程序的資源和生命周期。

將Hadoop部署在Kubernetes上(通常稱為Hadoop on K8s或Hadoop on Kubernetes)是一種將Hadoop與 Kubernetes 結(jié)合使用的方式。它將 Hadoop 集群中的各個(gè)組件(如 NameNode、DataNode、ResourceManager 和 NodeManager )打包為容器,并使用Kubernetes來(lái)自動(dòng)管理和編排這些容器。

Hadoop on K8s具有以下一些優(yōu)勢(shì):

  • 彈性擴(kuò)展:Kubernetes提供了動(dòng)態(tài)擴(kuò)展的能力,可以根據(jù)工作負(fù)載的需求自動(dòng)調(diào)整Hadoop集群的規(guī)模。
  • 靈活性:通過(guò)將Hadoop部署在Kubernetes上,可以更加靈活地管理Hadoop集群的資源分配和調(diào)度,以適應(yīng)不同的工作負(fù)載。
  • 多租戶支持:Kubernetes的多租戶支持使得可以在同一個(gè)Kubernetes集群上運(yùn)行多個(gè)獨(dú)立的Hadoop集群,從而更好地隔離不同的應(yīng)用和用戶。
  • 資源利用率:Kubernetes可以更好地管理和利用集群資源,避免資源浪費(fèi),提高資源利用率。
  • 故障恢復(fù):Kubernetes提供了故障恢復(fù)和自愈能力,可以在節(jié)點(diǎn)故障時(shí)自動(dòng)重新調(diào)度Hadoop容器,提高集群的可靠性。

要在 Kubernetes上部署 Hadoop 集群,需要使用適當(dāng)?shù)墓ぞ吆团渲茫?nbsp;Apache Hadoop Kubernetes 項(xiàng)目(Hadoop K8s)或其他第三方工具。這些工具提供了與 Kubernetes 集成的方式,并簡(jiǎn)化了在Kubernetes 上部署和管理 Hadoop 集群的過(guò)程。

總之,Hadoop on K8s 提供了一種在Kubernetes上運(yùn)行Hadoop集群的方式,充分利用了Kubernetes的彈性、靈活性和資源管理功能。它可以簡(jiǎn)化Hadoop集群的部署和管理,并提供更好的資源利用率和可靠性。

之前也寫過(guò)一篇類似的文章,因操作的步驟比較多,這里將進(jìn)行改進(jìn)升級(jí),感興趣的小伙伴請(qǐng)仔細(xì)閱讀下文,這里也提供通過(guò)docker-compse一鍵部署教程:

二、k8s 環(huán)境部署

k8s 環(huán)境部署這里不重復(fù)講解了,重點(diǎn)是 Hadoop on k8s,不知道怎么部署k8s環(huán)境的可以參考我以下幾篇文章:

三、開(kāi)始編排部署 Hadoop

1)構(gòu)建鏡像 Dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/centos:7.7.1908

RUN rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone

RUN export LANG=zh_CN.UTF-8

# 創(chuàng)建用戶和用戶組,跟yaml編排里的user: 10000:10000
RUN groupadd --system --gid=10000 hadoop && useradd --system --home-dir /home/hadoop --uid=10000 --gid=hadoop hadoop

# 安裝sudo
RUN yum -y install sudo ; chmod 640 /etc/sudoers

# 給hadoop添加sudo權(quán)限
RUN echo "hadoop ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

RUN yum -y install install net-tools telnet wget nc expect which

RUN mkdir /opt/apache/

# 安裝 JDK
ADD jdk-8u212-linux-x64.tar.gz /opt/apache/
ENV JAVA_HOME /opt/apache/jdk1.8.0_212
ENV PATH $JAVA_HOME/bin:$PATH

# 配置 Hadoop
ENV HADOOP_VERSION 3.3.5
ADD hadoop-${HADOOP_VERSION}.tar.gz /opt/apache/
ENV HADOOP_HOME /opt/apache/hadoop
RUN ln -s /opt/apache/hadoop-${HADOOP_VERSION} $HADOOP_HOME

ENV HADOOP_COMMON_HOME=${HADOOP_HOME} \
    HADOOP_HDFS_HOME=${HADOOP_HOME} \
    HADOOP_MAPRED_HOME=${HADOOP_HOME} \
    HADOOP_YARN_HOME=${HADOOP_HOME} \
    HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop \
    PATH=${PATH}:${HADOOP_HOME}/bin

# 配置Hive
ENV HIVE_VERSION 3.1.3
ADD apache-hive-${HIVE_VERSION}-bin.tar.gz /opt/apache/
ENV HIVE_HOME=/opt/apache/hive
ENV PATH=$HIVE_HOME/bin:$PATH
RUN ln -s /opt/apache/apache-hive-${HIVE_VERSION}-bin ${HIVE_HOME}

# 配置spark
ENV SPARK_VERSION 3.3.2
ADD spark-${SPARK_VERSION}-bin-hadoop3.tgz /opt/apache/
ENV SPARK_HOME=/opt/apache/spark
ENV PATH=$SPARK_HOME/bin:$PATH
RUN ln -s /opt/apache/spark-${SPARK_VERSION}-bin-hadoop3 ${SPARK_HOME}

# 配置 flink
ENV FLINK_VERSION 1.17.0
ADD flink-${FLINK_VERSION}-bin-scala_2.12.tgz /opt/apache/
ENV FLINK_HOME=/opt/apache/flink
ENV PATH=$FLINK_HOME/bin:$PATH
RUN ln -s /opt/apache/flink-${FLINK_VERSION} ${FLINK_HOME}

# 創(chuàng)建namenode、datanode存儲(chǔ)目錄
RUN mkdir -p /opt/apache/hadoop/data/{hdfs,yarn} /opt/apache/hadoop/data/hdfs/namenode /opt/apache/hadoop/data/hdfs/datanode/data{1..3} /opt/apache/hadoop/data/yarn/{local-dirs,log-dirs,apps}

COPY bootstrap.sh /opt/apache/

COPY config/hadoop-config/* ${HADOOP_HOME}/etc/hadoop/

# hive  config
COPY hive-config/* ${HIVE_HOME}/conf/

COPY mysql-connector-java-5.1.49/mysql-connector-java-5.1.49-bin.jar ${HIVE_HOME}/lib/

RUN sudo mkdir -p /home/hadoop/ && sudo chown -R hadoop:hadoop /home/hadoop/

#RUN yum -y install which
ENV ll "ls -l"

RUN chown -R hadoop:hadoop /opt/apache
WORKDIR /opt/apache

bootstrap.sh 腳本內(nèi)容

#!/usr/bin/env sh
source /etc/profile

wait_for() {

        if [ -n "$1" -a  -z -n "$2" ];then
           echo Waiting for $1 to listen on $2...
           while ! nc -z $1 $2; do echo waiting...; sleep 1s; done
        fi

}

start_hdfs_namenode() {
        namenode_dir=`grep -A1 'dfs.namenode.name.dir' ${HADOOP_HOME}/etc/hadoop/hdfs-site.xml |tail -1|sed 's/<value>//'|sed 's/<\/value>//'`
        if [ ! -d ${namenode_dir}/current ];then
           ${HADOOP_HOME}/bin/hdfs namenode -format
        fi

        ${HADOOP_HOME}/bin/hdfs --loglevel INFO --daemon start namenode

        tail -f ${HADOOP_HOME}/logs/*namenode*.log
}

start_hdfs_datanode() {

        wait_for $1 $2

        ${HADOOP_HOME}/bin/hdfs --loglevel INFO --daemon start datanode

        tail -f ${HADOOP_HOME}/logs/*datanode*.log
}

start_yarn_resourcemanager() {

        ${HADOOP_HOME}/bin/yarn --loglevel INFO --daemon start resourcemanager

        tail -f ${HADOOP_HOME}/logs/*resourcemanager*.log
}

start_yarn_nodemanager() {

        wait_for $1 $2

        ${HADOOP_HOME}/bin/yarn --loglevel INFO --daemon start nodemanager

        tail -f ${HADOOP_HOME}/logs/*nodemanager*.log
}

start_yarn_proxyserver() {

        wait_for $1 $2

        ${HADOOP_HOME}/bin/yarn --loglevel INFO --daemon start proxyserver

        tail -f ${HADOOP_HOME}/logs/*proxyserver*.log
}

start_mr_historyserver() {

        wait_for $1 $2

        ${HADOOP_HOME}/bin/mapred --loglevel INFO  --daemon  start historyserver

        tail -f ${HADOOP_HOME}/logs/*historyserver*.log
}

start_hive_metastore() {

        if [ ! -f ${HIVE_HOME}/formated ];then
                schematool -initSchema -dbType mysql --verbose >  ${HIVE_HOME}/formated
        fi

        $HIVE_HOME/bin/hive --service metastore

}

start_hive_hiveserver2() {

        $HIVE_HOME/bin/hive --service hiveserver2
}


case $1 in
        hadoop-hdfs-nn)
                start_hdfs_namenode $2 $3
                ;;
        hadoop-hdfs-dn)
                start_hdfs_datanode $2 $3
                ;;
        hadoop-yarn-rm)
                start_yarn_resourcemanager $2 $3
                ;;
        hadoop-yarn-nm)
                start_yarn_nodemanager $2 $3
                ;;
        hadoop-yarn-proxyserver)
                start_yarn_proxyserver $2 $3
                ;;
        hadoop-mr-historyserver)
                start_mr_historyserver $2 $3
                ;;
        hive-metastore)
                start_hive_metastore $2 $3
                ;;
        hive-hiveserver2)
                start_hive_hiveserver2 $2 $3
                ;;
        *)
                echo "請(qǐng)輸入正確的服務(wù)啟動(dòng)命令~"
        ;;
esac

構(gòu)建鏡像:

docker build -t registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/hadoop_hive:v1 . --no-cache

# 為了方便小伙伴下載即可使用,我這里將鏡像文件推送到阿里云的鏡像倉(cāng)庫(kù)
docker push registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/hadoop_hive:v1

### 參數(shù)解釋
# -t:指定鏡像名稱
# . :當(dāng)前目錄Dockerfile
# -f:指定Dockerfile路徑
#  --no-cache:不緩存

【溫馨提示】如果不更換版本包,就無(wú)需再構(gòu)建鏡像,我已經(jīng)構(gòu)建好傳到阿里云鏡像倉(cāng)庫(kù)了。如果需要修改Hadoop版本,可以基于我的鏡像進(jìn)行修改。

2)values.yaml 文件配置

image:
  repository: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/hadoop_hive
  tag: v1
  pullPolicy: IfNotPresent

# The version of the hadoop libraries being used in the image.
hadoopVersion: 3.3.5
logLevel: INFO

# Select antiAffinity as either hard or soft, default is soft
antiAffinity: "soft"

hdfs:
  nameNode:
    replicas: 1
    pdbMinAvailable: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "2048Mi"
        cpu: "1000m"

  dataNode:
    # Will be used as dfs.datanode.hostname
    # You still need to set up services + ingress for every DN
    # Datanodes will expect to
    externalHostname: example.com
    externalDataPortRangeStart: 9866
    externalHTTPPortRangeStart: 9864

    replicas: 1

    pdbMinAvailable: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "2048Mi"
        cpu: "1000m"

  webhdfs:
    enabled: true

  jounralNode:
    replicas: 3
    pdbMinAvailable: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "2048Mi"
        cpu: "1000m"

  mrHistoryserver:
    pdbMinAvailable: 1
    replicas: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "1024Mi"
        cpu: "1000m"

yarn:
  resourceManager:
    pdbMinAvailable: 1
    replicas: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "1024Mi"
        cpu: "1000m"

  nodeManager:
    pdbMinAvailable: 1

    # The number of YARN NodeManager instances.
    replicas: 1

    # Create statefulsets in parallel (K8S 1.7+)
    parallelCreate: false

    # CPU and memory resources allocated to each node manager pod.
    # This should be tuned to fit your workload.
    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "2048Mi"
        cpu: "1000m"
  proxyServer:
    pdbMinAvailable: 1
    replicas: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "1024Mi"
        cpu: "1000m"

hive:
  metastore:
    replicas: 1
    pdbMinAvailable: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "2048Mi"
        cpu: "1000m"

  hiveserver2:
    replicas: 1
    pdbMinAvailable: 1

    resources:
      requests:
        memory: "1024Mi"
        cpu: "1000m"
      limits:
        memory: "1024Mi"
        cpu: "1000m"

persistence:
  nameNode:
    enabled: true
    enabledStorageClass: false
    storageClass: "hadoop-nn-local-storage"
    accessMode: ReadWriteOnce
    size: 1Gi
    local:
    #- name: hadoop-nn-0
    #  host: "local-168-182-110"
    #  path: "/opt/bigdata/servers/hadoop/nn/data/data1"
    volumes:
    - name: nn1
      mountPath: /opt/apache/hadoop/data/hdfs/namenode
      hostPath: /opt/bigdata/servers/hadoop/nn/data/data1

  dataNode:
    enabled: true
    enabledStorageClass: false
    storageClass: "hadoop-dn-local-storage"
    accessMode: ReadWriteOnce
    size: 1Gi
    #local:
    #- name: hadoop-dn-0
    #  host: "local-168-182-110"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data1"
    #- name: hadoop-dn-1
    #  host: "local-168-182-110"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data2"
    #- name: hadoop-dn-2
    #  host: "local-168-182-110"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data3"
    #- name: hadoop-dn-3
    #  host: "local-168-182-111"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data1"
    #- name: hadoop-dn-4
    #  host: "local-168-182-111"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data2"
    #- name: hadoop-dn-5
    #  host: "local-168-182-111"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data3"
    #- name: hadoop-dn-6
    #  host: "local-168-182-112"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data1"
    #- name: hadoop-dn-7
    #  host: "local-168-182-112"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data2"
    #- name: hadoop-dn-8
    #  host: "local-168-182-112"
    #  path: "/opt/bigdata/servers/hadoop/dn/data/data3"
    volumes:
    - name: dfs1
      mountPath: /opt/apache/hdfs/datanode1
      hostPath: /opt/bigdata/servers/hadoop/dn/data/data1
    - name: dfs2
      mountPath: /opt/apache/hdfs/datanode2
      hostPath: /opt/bigdata/servers/hadoop/dn/data/data2
    - name: dfs3
      mountPath: /opt/apache/hdfs/datanode3
      hostPath: /opt/bigdata/servers/hadoop/dn/data/data3

service:
  nameNode:
    type: NodePort
    ports:
      dfs: 9000
      webhdfs: 9870
    nodePorts:
      dfs: 30900
      webhdfs: 30870
  dataNode:
    type: NodePort
    ports:
      webhdfs: 9864
    nodePorts:
      webhdfs: 30864
  mrHistoryserver:
    type: NodePort
    ports:
      web: 19888
    nodePorts:
      web: 30888
  resourceManager:
    type: NodePort
    ports:
      web: 8088
    nodePorts:
      web: 30088
  nodeManager:
    type: NodePort
    ports:
      web: 8042
    nodePorts:
      web: 30042
  proxyServer:
    type: NodePort
    ports:
      web: 9111
    nodePorts:
      web: 30911
  hive:
    metastore:
      type: NodePort
      port: 9083
      nodePort: 31183
    hiveserver2:
      type: NodePort
      port: 10000
      nodePort: 30000

securityContext:
  runAsUser: 10000
  privileged: true

【溫馨提示】這里的 namenode 和 datanode 存儲(chǔ)目錄使用 hostPath 掛載方式,通過(guò) enabledStorageClass 來(lái)控制是選擇宿主機(jī)還是PVC掛載,為 false 是 hostPath 掛載方式,反之亦然。

在每個(gè)k8s節(jié)點(diǎn)上創(chuàng)建掛載目錄:

# 如果使用pv,pvc掛載方式,就不需要在宿主機(jī)上創(chuàng)建目錄了,非高可用可不用創(chuàng)建jn
mkdir -p /opt/bigdata/servers/hadoop/{nn,jn,dn}/data/data{1..3}
chmod 777 -R /opt/bigdata/servers/hadoop/

3)hadoop configmap yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "hadoop.fullname" . }}
  labels:
    app.kubernetes.io/name: {{ include "hadoop.name" . }}
    helm.sh/chart: {{ include "hadoop.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
data:
  core-site.xml: |
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
      <property>
          <name>fs.defaultFS</name>
          <value>hdfs://{{ include "hadoop.fullname" . }}-hdfs-nn:9000/</value>
          <description>NameNode URI</description>
      </property>
      <property>
          <name>hadoop.proxyuser.root.hosts</name>
          <value>*</value>
      </property>
      <property>
          <name>hadoop.proxyuser.root.groups</name>
          <value>*</value>
      </property>
      <property>
          <name>hadoop.proxyuser.hadoop.hosts</name>
          <value>*</value>
      </property>
      <property>
          <name>hadoop.proxyuser.hadoop.groups</name>
          <value>*</value>
      </property>
    </configuration>

  hdfs-site.xml: |
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>

{{- if .Values.hdfs.webhdfs.enabled -}}
      <property>
          <name>dfs.webhdfs.enabled</name>
          <value>true</value>
      </property>
{{- end -}}

      <property>
        <name>dfs.datanode.use.datanode.hostname</name>
        <value>false</value>
      </property>

      <property>
        <name>dfs.client.use.datanode.hostname</name>
        <value>false</value>
      </property>

      <!--
      <property>
        <name>dfs.datanode.hostname</name>
        <value>{{ .Values.hdfs.dataNode.externalHostname }}</value>
      </property>
      -->

      <property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
      </property>

      <property>
        <name>dfs.datanode.http.address</name>
        <value>0.0.0.0:9864</value>
      </property>

      <property>
        <name>dfs.datanode.address</name>
        <value>0.0.0.0:9866</value>
      </property>

      <property>
        <name>dfs.replication</name>
          <value>3</value>
      </property>

      <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/apache/hadoop/data/hdfs/datanode/data1,/opt/apache/hadoop/data/hdfs/datanode/data2,/opt/apache/hadoop/data/hdfs/datanode/data3</value>
        <description>DataNode directory</description>
      </property>

      <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/apache/hadoop/data/hdfs/namenode</value>
        <description>NameNode directory for namespace and transaction logs storage.</description>
      </property>

      <property>
        <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
        <value>false</value>
      </property>

      <!-- Bind to all interfaces -->
      <property>
        <name>dfs.namenode.rpc-bind-host</name>
        <value>0.0.0.0</value>
      </property>
      <property>
        <name>dfs.namenode.servicerpc-bind-host</name>
        <value>0.0.0.0</value>
      </property>
      <!-- /Bind to all interfaces -->

    </configuration>

  mapred-site.xml: |
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.address</name>
        <value>{{ include "hadoop.fullname" . }}-mr-historyserver-0:10020</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>{{ include "hadoop.fullname" . }}-mr-historyserver-0:{{ .Values.service.mrHistoryserver.ports.web }}</value>
      </property>
    </configuration>

  yarn-site.xml: |
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

    <configuration>
      <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>{{ include "hadoop.fullname" . }}-yarn-rm-headless</value>
      </property>

      <!-- Bind to all interfaces -->
      <property>
        <name>yarn.resourcemanager.bind-host</name>
        <value>0.0.0.0</value>
      </property>
      <property>
        <name>yarn.nodemanager.bind-host</name>
        <value>0.0.0.0</value>
      </property>
      <property>
        <name>yarn.timeline-service.bind-host</name>
        <value>0.0.0.0</value>
      </property>
      <!-- /Bind to all interfaces -->

      <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
      </property>

      <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
      </property>

      <property>
        <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
      </property>

      <property>
        <description>List of directories to store localized files in.</description>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/opt/apache/hadoop/data/yarn/local-dirs</value>
      </property>

      <property>
        <description>Where to store container logs.</description>
        <name>yarn.nodemanager.log-dirs</name>
        <value>/opt/apache/hadoop/data/yarn/log-dirs</value>
      </property>

      <property>
        <description>Where to aggregate logs to.</description>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/opt/apache/hadoop/data/yarn/apps</value>
      </property>

      <property>
        <name>yarn.web-proxy.address</name>
        <value>{{ include "hadoop.fullname" . }}-yarn-proxyserver-0:{{ .Values.service.proxyServer.ports.web }}</value>
      </property>

      <property>
        <name>yarn.application.classpath</name>
        <value>
          /opt/apache/hadoop/etc/hadoop,
          /opt/apache/hadoop/share/hadoop/common/*,
          /opt/apache/hadoop/share/hadoop/common/lib/*,
          /opt/apache/hadoop/share/hadoop/hdfs/*,
          /opt/apache/hadoop/share/hadoop/hdfs/lib/*,
          /opt/apache/hadoop/share/hadoop/mapreduce/*,
          /opt/apache/hadoop/share/hadoop/mapreduce/lib/*,
          /opt/apache/hadoop/share/hadoop/yarn/*,
          /opt/apache/hadoop/share/hadoop/yarn/lib/*
        </value>
      </property>
    </configuration>
  dfs-hosts.includes: |
    {{ include "hadoop.fullname" . }}-hdfs-dn-0.{{ include "hadoop.fullname" . }}-hdfs-dn.{{ .Release.Namespace }}.svc.cluster.local
    {{ include "hadoop.fullname" . }}-hdfs-dn-1.{{ include "hadoop.fullname" . }}-hdfs-dn.{{ .Release.Namespace }}.svc.cluster.local
    {{ include "hadoop.fullname" . }}-hdfs-dn-2.{{ include "hadoop.fullname" . }}-hdfs-dn.{{ .Release.Namespace }}.svc.cluster.local
  dfs-hosts.excludes: |
  yarn-hosts.includes: |
    {{ include "hadoop.fullname" . }}-yarn-nm-0.{{ include "hadoop.fullname" . }}-yarn-nm.{{ .Release.Namespace }}.svc.cluster.local
    {{ include "hadoop.fullname" . }}-yarn-nm-1.{{ include "hadoop.fullname" . }}-yarn-nm.{{ .Release.Namespace }}.svc.cluster.local
    {{ include "hadoop.fullname" . }}-yarn-nm-2.{{ include "hadoop.fullname" . }}-yarn-nm.{{ .Release.Namespace }}.svc.cluster.local
  yarn-hosts.excludes: |

4)hive configmap yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ include "hadoop.fullname" . }}-hive
  labels:
    app.kubernetes.io/name: {{ include "hadoop.name" . }}
    helm.sh/chart: {{ include "hadoop.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}-hive
data:
  hive-site.xml: |
    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <!-- 配置hdfs存儲(chǔ)目錄 -->
        <property>
                <name>hive.metastore.warehouse.dir</name>
                <value>/user/hive_remote/warehouse</value>
        </property>

        <property>
                <name>hive.metastore.local</name>
                <value>false</value>
        </property>

        <!-- 所連接的 MySQL 數(shù)據(jù)庫(kù)的地址,hive_local是數(shù)據(jù)庫(kù),程序會(huì)自動(dòng)創(chuàng)建,自定義就行 -->
        <property>
                <name>javax.jdo.option.ConnectionURL</name>
                <value>jdbc:mysql://192.168.182.110:13306/hive_metastore?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=Asia/Shanghai</value>
        </property>

        <!-- MySQL 驅(qū)動(dòng) -->
        <property>
                <name>javax.jdo.option.ConnectionDriverName</name>
                <!--<value>com.mysql.cj.jdbc.Driver</value>-->
                <value>com.mysql.jdbc.Driver</value>
        </property>

        <!-- mysql連接用戶 -->
        <property>
                <name>javax.jdo.option.ConnectionUserName</name>
                <value>root</value>
        </property>

        <!-- mysql連接密碼 -->
        <property>
                <name>javax.jdo.option.ConnectionPassword</name>
                <value>123456</value>
        </property>

        <!--元數(shù)據(jù)是否校驗(yàn)-->
        <property>
                <name>hive.metastore.schema.verification</name>
                <value>false</value>
        </property>

        <property>
                <name>system:user.name</name>
                <value>root</value>
                <description>user name</description>
        </property>

        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://{{ include "hadoop.fullname" . }}-hive-metastore-0.{{ include "hadoop.fullname" . }}-hive-metastore:{{ .Values.service.hive.metastore.port }}</value>
        </property>

        <!-- host -->
        <property>
                <name>hive.server2.thrift.bind.host</name>
                <value>0.0.0.0</value>
                <description>Bind host on which to run the HiveServer2 Thrift service.</description>
        </property>

        <!-- hs2端口 默認(rèn)是10000-->
        <property>
                <name>hive.server2.thrift.port</name>
                <value>{{ .Values.service.hive.hiveserver2.port }}</value>
        </property>

        <property>
                <name>hive.server2.active.passive.ha.enable</name>
                <value>true</value>
        </property>

    </configuration>

【溫馨提示】這里只是列舉出重要的配置和腳本。文末會(huì)提供git 下載地址,下載整個(gè)部署包。

5)開(kāi)始安裝

cd hadoop-on-kubernetes
# 安裝
helm install hadoop ./ -n hadoop --create-namespace

# 更新
helm upgrade hadoop ./ -n hadoop

# 卸載
helm uninstall hadoop -n hadoop

6)測(cè)試驗(yàn)證

hdfs web:http://ip:30870

yarn web:http://ip:

通過(guò) hive 創(chuàng)建庫(kù)表和添加數(shù)據(jù)驗(yàn)證集群可用性

kubectl exec -it hadoop-hadoop-hive-hiveserver2-0 -n hadoop -- bash

beeline -u jdbc:hive2://hadoop-hadoop-hive-hiveserver2:10000  -n hadoop

# 建表
CREATE TABLE mytable (
  id INT,
  name STRING,
  age INT,
  address STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

# 添加數(shù)據(jù)
INSERT INTO mytable VALUES (1, 'Alice', 25, 'F'), (2, 'Bob', 30, 'M'), (3, 'Charlie', 35, 'M');

hadoop-on-kubernetes下載地址:https://gitee.com/hadoop-bigdata/hadoop-on-kubernetes,后面會(huì)單獨(dú)拿一篇文章來(lái)講解部署時(shí)需要修改的地方和注意事項(xiàng)。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2023-07-11 07:12:21

Hadoop部署mysql

2023-08-29 10:27:32

2022-11-06 21:31:11

云原生Sentinel集群模式

2023-03-01 07:42:12

HBase編排部署數(shù)據(jù)

2023-09-06 08:12:04

k8s云原生

2024-05-20 15:39:00

Karmada混合云多云

2022-04-29 10:40:38

技術(shù)服務(wù)端K8s

2022-09-27 12:00:58

HadoopK8S開(kāi)源

2017-09-19 15:01:06

PHP漏洞滲透測(cè)試

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2023-03-26 09:08:36

2021-11-08 07:48:48

K8SKubernetes 集群

2022-01-02 08:42:50

架構(gòu)部署容器

2021-11-04 07:49:58

K8SStatefulSetMySQL

2023-02-27 07:40:00

2023-11-06 07:16:22

WasmK8s模塊

2022-08-29 08:21:00

k8sDocker

2023-09-11 15:35:25

2021-11-29 08:48:00

K8S KubernetesAirflow

2022-01-22 21:38:19

K8SRedisRedis clus
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产真实久久| 免费国产成人看片在线| 99精品人妻少妇一区二区 | 国产91美女视频| 北岛玲一区二区三区| 亚洲一区二区三区在线免费| 欧美激情一区三区| 欧美在线观看网址综合| 国产午夜福利在线播放| 国产a级免费视频| 久久精品播放| 欧美影院一区二区三区| 欧美日韩亚洲免费| 久久中文字幕免费| 日韩欧美在线精品| 岛国精品视频在线播放| 国产欧美日韩在线播放| 国产第一页在线播放| 视频一区中文字幕精品| 伊人夜夜躁av伊人久久| 91在线在线观看| 青娱乐av在线| baoyu135国产精品免费| 亚洲国产中文字幕在线视频综合| 97人人模人人爽视频一区二区| 色婷婷在线观看视频| 日韩欧美在线精品| 日韩午夜精品视频| 日韩精品免费一区| 亚洲精品97久久中文字幕无码| 自拍视频亚洲| 精品奇米国产一区二区三区| 美女黄色免费看| 天堂av手机版| 天堂成人免费av电影一区| 国产亚洲精品久久久久久777| 男人天堂成人在线| 91ph在线| 国产精品99久久久久久似苏梦涵 | 日本高清www| 成人免费看黄| 中文字幕精品一区二区三区精品| 国产精品免费观看在线| 美国一级片在线观看| 一区二区三区免费在线看| 欧美三级日韩三级| 日本人妻伦在线中文字幕| 亚洲乱亚洲乱妇| 国产成人午夜精品影院观看视频 | 亚洲 激情 在线| 免费av毛片在线看| 国产成人av一区| 欧美一级免费视频| 国产成人一区二区三区影院在线| 欧美不卡在线| 亚洲精品一区二区三区不| 91香蕉视频污版| 在线中文免费视频| 久久久午夜精品| 91九色视频在线| 狠狠躁夜夜躁人人爽天天高潮| 国产精品丝袜在线播放| 欧美在线观看禁18| 污片在线免费看| 国产天堂在线播放视频| 国产欧美日韩三级| 五月天色一区| 日本韩国在线观看| 久久99在线观看| 欧美影院久久久| 国产又大又黄又粗| 日韩在线卡一卡二| 欧美激情视频免费观看| 国产主播av在线| xvideos.蜜桃一区二区| 欧美精品一区二区久久婷婷| 欧美日韩亚洲自拍| 国语自产精品视频在线看抢先版结局 | 国产精品成久久久久| 亚洲成人av资源网| 久久国产这里只有精品| 亚洲综合资源| 色狠狠av一区二区三区| 久操网在线观看| 午夜免费视频在线国产| 亚洲欧美日韩综合aⅴ视频| 欧美日韩亚洲一区二区三区四区| 黄色的视频在线免费观看| 国产成人亚洲精品狼色在线| 国产亚洲精品久久飘花| 黄色电影免费在线看| 亚洲视频狠狠干| 免费成人在线视频网站| 美女视频一区| 精品国产亚洲在线| 能直接看的av| 精品一区欧美| 日韩第一页在线| 好吊操视频这里只有精品| 亚洲日日夜夜| 亚洲电影天堂av | 欧美男gay| 欧美成在线观看| 五月天激情丁香| 久久国产精品亚洲人一区二区三区 | 蜜臀av免费在线观看| 91麻豆国产自产在线观看| 国产精品露出视频| www黄色网址| 国产一区二区视频在线播放| 91精品国产综合久久香蕉| 波多野结衣高清视频| 久久在线精品| 99se婷婷在线视频观看| www精品国产| 国产人成亚洲第一网站在线播放| 野外做受又硬又粗又大视频√| 人交獸av完整版在线观看| 一区二区久久久久久| 欧美人与动牲交xxxxbbbb| 英国三级经典在线观看| 一本到一区二区三区| 人妻无码视频一区二区三区| 这里视频有精品| 日韩视频亚洲视频| 国产美女久久久久久| 亚洲精品一二三区区别| 久久久www成人免费精品| 欧美视频www| 青青草91视频| 91久久精品美女| 国产私拍精品| 亚洲天堂网中文字| 久久久久久香蕉| 亚洲a成人v| 精品日韩成人av| 欧美老熟妇一区二区三区| 日韩电影在线观看网站| 久久伊人一区二区| 91这里只有精品| 日本韩国视频一区二区| 亚洲中文字幕无码av| 白白在线精品| 欧美成人黄色小视频| 亚洲综合精品国产一区二区三区| 国产在线乱码一区二区三区| 日韩免费av一区二区三区| 欧美边添边摸边做边爱免费| 日本高清成人免费播放| 四虎永久免费影院| 久久精品网址| 亚洲bt欧美bt日本bt| 亚洲 国产 欧美 日韩| 中文字幕不卡一区| 久久婷婷国产91天堂综合精品| 亚洲香蕉视频| 欧美精品制服第一页| 国产又色又爽又黄又免费| 成人毛片老司机大片| 欧美日韩一区综合| 新片速递亚洲合集欧美合集| 日韩欧美一区二区三区在线| 青青草福利视频| 国产视频一区在线观看一区免费| 国产在线观看精品| 美女隐私在线观看| 日韩一区二区免费在线电影| 日日骚一区二区三区| 日韩中文字幕不卡| 亚洲国产精品www| 国产丝袜在线观看视频| 337p日本欧洲亚洲大胆色噜噜| 免费在线观看黄网站| 久久先锋资源网| 穿情趣内衣被c到高潮视频| 国模大尺度视频一区二区| 亚洲国产三级网| 91嫩草丨国产丨精品| 国产成人免费视频网站高清观看视频| 97干在线视频| 精品久久久久中文字幕小说| 韩国19禁主播vip福利视频| 国产精品久久久久久久免费看| 亚洲欧美日本在线| 日韩一级理论片| 99久久婷婷| 国产伦精品一区二区三区视频黑人| 色资源二区在线视频| 精品精品国产高清a毛片牛牛| 激情五月色婷婷| 国产嫩草影院久久久久| 97超碰免费在线观看| 天天做天天爱天天综合网| 成人av中文| 日本一道高清亚洲日美韩| 精品无人国产偷自产在线| 在线观看国产一区二区三区| 一区二区三区影院| www.av天天| 国产婷婷精品| 制服诱惑一区| 日韩毛片免费视频一级特黄| 国产+人+亚洲| 日本免费不卡视频| 欧美亚一区二区| 国产精品成人aaaa在线| 中国色在线观看另类| 美女黄色一级视频| 国产手机视频一区二区| 久久99国产精品一区| 红桃成人av在线播放| 国产精品 欧美在线| 欧美视频免费一区二区三区| 欧美香蕉大胸在线视频观看| 国产又爽又黄无码无遮挡在线观看| 麻豆精品一区二区综合av| 亚洲色图自拍| 国产高清精品二区| 日本最新高清不卡中文字幕| 青青草在线免费观看| 色久优优欧美色久优优| 久久久精品视频免费| 亚洲日本丝袜连裤袜办公室| 制服 丝袜 综合 日韩 欧美| 不卡的av网站| 日日碰狠狠躁久久躁婷婷| 一区久久精品| 欧美精品一区三区在线观看| 一区中文字幕| 3d动漫精品啪啪一区二区三区免费| 蜜桃精品在线| 久久综合久久八八| 蜜桃视频污在线观看| 日韩欧美色综合网站| 国产精品欧美亚洲| 欧美精品日日鲁夜夜添| 免费在线一区二区三区| 最新国产成人在线观看| 无码人妻精品一区二区三| 国内一区二区在线| 男人添女人下部高潮视频在观看| 亚洲人成网www| 国产一区再线| 牛牛精品成人免费视频| 国产精品久久久久久亚洲影视 | 夜夜爽久久精品91| 99国产一区| 亚洲国产婷婷香蕉久久久久久99| 蜜桃精品噜噜噜成人av| 欧美裸体网站| 国产精品一区二区三区av麻| 欧美一级爱爱| 亚洲精品a区| 91原创国产| 国产91精品入| 精品视频免费观看| 99tv成人影院| 91精品啪aⅴ在线观看国产| **日韩最新| 亚洲综合精品伊人久久| 国语精品视频| 国产伦精品一区二区三区免费视频| 林ゆな中文字幕一区二区| 国产精品自拍偷拍| yellow在线观看网址| 精品国产一区二区三区久久狼黑人| 日本美女在线中文版| 欧美成人激情图片网| 国产激情视频在线看| 日本精品久久久| 欧美日韩色网| 91国语精品自产拍在线观看性色| 五月香视频在线观看| 久久久91精品国产一区不卡| 青青草视频在线免费直播| 97人人爽人人喊人人模波多 | 国产精品美女免费| japansex久久高清精品| 国产一区二区不卡视频在线观看 | 国产大尺度在线观看| 日韩深夜影院| 亚洲人成网站在线观看播放| 中文字幕乱码亚洲无线精品一区| 黄色片网址在线观看| 日韩—二三区免费观看av| 99视频在线观看视频| 久久av资源网| 欧美一区二区免费在线观看| 国产精品123| www.超碰97| 亚洲天堂成人在线观看| 日韩欧美激情视频| 欧美日韩一区成人| 手机看片一区二区三区| 中文字幕国产精品| 在线观看免费黄色| 久久久久国产精品www| 亚洲七七久久综合桃花剧情介绍| 精品国产一区二区三区久久狼黑人| 国产乱妇乱子在线播视频播放网站| 国产成人高清激情视频在线观看| 精品视频成人| 日本一区二区三区视频免费看| 欧美色图首页| www.av蜜桃| 久久av中文字幕片| 国产精品1000部啪视频| 亚洲一区二区三区视频在线播放 | 日韩一区二区三区视频在线 | 久久久精品2019中文字幕之3| 男女羞羞免费视频| 精品视频1区2区| 青青草娱乐在线| 午夜精品一区二区三区在线视 | 欧美美女日韩| 国产高清在线一区二区| 亚洲一区二区三区在线免费| 亚洲激情啪啪| 老司机精品视频网站| 亚洲婷婷在线观看| 亚洲日本乱码在线观看| 一区二区小视频| 日韩一区二区三区在线| 日韩伦理在线观看| 国产精品91久久| 亚洲人成伊人成综合图片| 日韩国产一级片| 成人国产视频在线观看| 久草视频免费在线| 91精品一区二区三区在线观看| 国产又粗又猛又爽又黄视频 | 污视频网站免费在线观看| 国产精品亚洲激情| 精品国产网站| 成年人网站大全| 久久久久久免费毛片精品| wwwwww国产| 日韩激情av在线免费观看| 大桥未久在线播放| 国产精品一区二区av| 国内揄拍国内精品久久| 中文字幕乱码在线人视频| 亚洲女子a中天字幕| 国产免费无遮挡| 精品国产91九色蝌蚪| 污污片在线免费视频| 国产精品日本一区二区 | 欧美片一区二区三区| 女人高潮被爽到呻吟在线观看| 成人久久18免费网站漫画| 午夜日韩电影| 在线看黄色的网站| 污片在线观看一区二区| 亚洲天堂网在线视频| 中文字幕久久久av一区| 国产成人午夜性a一级毛片| 高清av免费一区中文字幕| 伊人久久大香线蕉av超碰演员| 娇妻高潮浓精白浆xxⅹ| 一区二区三区中文字幕精品精品 | 不卡一二三区首页| 久久久久久久极品| 亚洲欧美国产另类| 中文字幕在线三区| 成人在线观看91| 妖精视频成人观看www| 亚洲人成人无码网www国产 | 精品av一区二区| 成人黄色一级大片| 久久一区二区视频| 亚洲精品国产精品国自产网站按摩| 亚洲第一区中文99精品| 精品众筹模特私拍视频| 久久久com| 亚洲第一精品影视| 美女100%无挡| 亚洲高清免费视频| 99精品免费观看| 久久久在线免费观看| 久久最新网址| 国产xxxxhd| 91国偷自产一区二区三区成为亚洲经典| 在线免费观看黄色| 官网99热精品| 日本不卡一区二区| 久久久久亚洲AV| 精品区一区二区| 欧洲一级精品| 久久久久久av无码免费网站下载| 91麻豆精品秘密| 国产三级伦理片| 日本午夜在线亚洲.国产| 亚洲人成免费网站| 色噜噜日韩精品欧美一区二区| 欧美顶级少妇做爰| 少妇在线看www| 毛片在线视频观看| 中文字幕 久热精品 视频在线 | 亚洲欧美成人在线| 伊人久久影院|