1. 首页 > 百货 > 其他百货

K8s 编排部署进阶篇 on Hadoop

一、概述

Hadoop是一个开源的分布式计算框架,用于处理大规模数据集的存储和处理。它使用了Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)来存储数据,并通过MapReduce编程模型进行数据处理。

Kubernetes(通常简称为K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。它提供了一种强大的方式来管理容器化应用程序的资源和生命周期。

将Hadoop部署在Kubernetes上(通常称为Hadoop on K8s或Hadoop on Kubernetes)是一种将Hadoop与Kubernetes结合使用的方式。它将Hadoop集群中的各个组件(如NameNode、DataNode、ResourceManager和NodeManager)打包为容器,并使用Kubernetes来自动管理和编排这些容器。

Hadoop on K8s具有以下一些优势:

要在Kubernetes上部署Hadoop集群,需要使用适当的工具和配置,例如Apache Hadoop Kubernetes项目(Hadoop K8s)或其他第三方工具。这些工具提供了与Kubernetes集成的方式,并简化了在Kubernetes上部署和管理Hadoop集群的过程。

总之,Hadoop on K8s提供了一种在Kubernetes上运行Hadoop集群的方式,充分利用了Kubernetes的弹性、灵活性和资源管理功能。它可以简化Hadoop集群的部署和管理,并提供更好的资源利用率和可靠性。

之前也写过一篇类似的文章,因操作的步骤比较多,这里将进行改进升级,感兴趣的小伙伴请仔细阅读下文,这里也提供通过docker-compse一键部署教程:

二、k8s 环境部署

k8s 环境部署这里不重复讲解了,重点是 Hadoop on k8s,不知道怎么部署k8s环境的可以参考我以下几篇文章:

三、开始编排部署 Hadoop

1)构建镜像 Dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/centos:7.7.1908RUN rm -f /etc/localtime && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezoneRUN export LANG=zh_CN.UTF-8# 创建用户和用户组,跟yaml编排里的user: 10000:10000RUN groupadd --system --gid=10000 hadoop && useradd --system --home-dir /home/hadoop --uid=10000 --gid=hadoop hadoop# 安装sudoRUN yum -y install sudo ; chmod 640 /etc/sudoers# 给hadoop添加sudo权限RUN echo "hadoop ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoersRUN yum -y install install net-tools telnet wget nc expect whichRUN mkdir /opt/apache/# 安装 JDKADD jdk-8u212-linux-x64.tar.gz /opt/apache/ENV JAVA_HOME /opt/apache/jdk1.8.0_212ENV PATH $JAVA_HOME/bin:$PATH# 配置 HadoopENV HADOOP_VERSION 3.3.5ADD hadoop-${HADOOP_VERSION}.tar.gz /opt/apache/ENV HADOOP_HOME /opt/apache/hadoopRUN ln -s /opt/apache/hadoop-${HADOOP_VERSION} $HADOOP_HOMEENV 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# 配置HiveENV HIVE_VERSION 3.1.3ADD apache-hive-${HIVE_VERSION}-bin.tar.gz /opt/apache/ENV HIVE_HOME=/opt/apache/hiveENV PATH=$HIVE_HOME/bin:$PATHRUN ln -s /opt/apache/apache-hive-${HIVE_VERSION}-bin ${HIVE_HOME}# 配置sparkENV SPARK_VERSION 3.3.2ADD spark-${SPARK_VERSION}-bin-hadoop3.tgz /opt/apache/ENV SPARK_HOME=/opt/apache/sparkENV PATH=$SPARK_HOME/bin:$PATHRUN ln -s /opt/apache/spark-${SPARK_VERSION}-bin-hadoop3 ${SPARK_HOME}# 配置 flinkENV FLINK_VERSION 1.17.0ADD flink-${FLINK_VERSION}-bin-scala_2.12.tgz /opt/apache/ENV FLINK_HOME=/opt/apache/flinkENV PATH=$FLINK_HOME/bin:$PATHRUN ln -s /opt/apache/flink-${FLINK_VERSION} ${FLINK_HOME}# 创建namenode、datanode存储目录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/# hiveconfigCOPY 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 whichENV ll "ls -l"RUN chown -R hadoop:hadoop /opt/apacheWORKDIR /opt/apache

bootstrap.sh脚本内容

#!/usr/bin/env shsource /etc/profilewait_for() {if [ -n "$1" -a-z -n "$2" ];thenecho Waiting for $1 to listen on $2...while ! nc -z $1 $2; do echo waiting...; sleep 1s; donefi}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 -formatfi${HADOOP_HOME}/bin/hdfs --loglevel INFO --daemon start namenodetail -f ${HADOOP_HOME}/logs/*namenode*.log}start_hdfs_datanode() {wait_for $1 $2${HADOOP_HOME}/bin/hdfs --loglevel INFO --daemon start>

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://jmbhsh.com/qitabaihuo/35717.html

联系我们

QQ号:***

微信号:***

工作日:9:30-18:30,节假日休息