一、概述
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>