加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Hadoop运行在Kubernetes平台实践

发布时间:2018-12-17 22:50:28 所属栏目:教程 来源:店家小二
导读:Hadoop与Kubernetes就仿佛江湖里的两大绝世好手,一个是成名已久的父老,至今如故名声远扬,一个则是初出茅庐的青涩少年,骨骼诧异,不走通俗路,一脱手便惊诧了整个武林。Hadoop与Kubernetes之间有很深的渊源,由于都出自IT权门Google,只不外,后者是亲
副问题[/!--empirenews.page--]

Hadoop与Kubernetes就仿佛江湖里的两大绝世好手,一个是成名已久的父老,至今如故名声远扬,一个则是初出茅庐的青涩少年,骨骼诧异,不走通俗路,一脱手便惊诧了整个武林。Hadoop与Kubernetes之间有很深的渊源,由于都出自IT权门——Google,只不外,后者是亲儿子,正由于有大佬背书,以是Kubernetes一出山,江湖各路门派便都簇拥而至,附和称王。

不知道是由于Hadoop是干儿子的缘故照旧由于“廉颇老矣”,总之,Hadoop伴侣圈的子弟们如Spark、Storm等早都有了在Kubernetes上陈设运行的各类资料和案例,但Hadoop却一向游离于Kubernetes系统之外,本文我们给出Hadoop在Kubernetes上的实践案例,以补充这种缺憾。

Hadoop容器化的资料不少,但Hadoop陈设在Kubernetes上的资料险些没有,这首要是以下几个缘故起因导致的:

  • 第一, Hadoop集群重度依靠DNS机制,一些组件还行使了反向域名理会,以确定集群中的节点身份,这对Hadoop在Kubernetes上的建模和运行带来极大挑衅,必要深入相识Hadoop集群事变道理而且能干Kubernetes,才气很好办理这一困难。
  • 第二, Hadoop新的Map-Reduce计较框架Yarn的模子呈现的较量晚,它的集群机制要比HDFS伟大,资料也相对较少,增进了Hadoop整体建模与迁徙Kubernetes平台的难度。
  • 第三, Hadoop与Kubernetes别离属于两个差异的规模,一个是传统的大数据规模,,一个是新兴的容器与微处事架构规模,这两个规模之间交集原来很小,加之Hadoop最近几年已经失去核心(这点从百度搜刮要害词就能发明),以是,没有几多人存眷和研究Hadoop在Kubernetes的陈设题目,也是情理之中的工作。

Hadoop 2.0着实是由两套完备的集群所构成,一个是根基的HDFS文件集群,一个是YARN资源调治集群,如下图所示:

Hadoop 运行在 Kubernetes平台实践

因此在Kubernetes建模之前,我们必要别离对这两种集群的事变机制和运行道理做出深入的说明,下图是HDFS集群的架构图:

Hadoop 运行在 Kubernetes平台实践

我们看到,HDFS集群是由NameNode(Master节点)和Datanode(数据节点)等两类节点所构成,个中,客户端措施(Client)以及DataNode节点会会见NameNode,因此,NameNode节点必要建模为Kubernetes Service以提供处事,以下是对应的Service界说文件:

  1. apiVersion: v1 
  2. kind: Service 
  3. metadata: 
  4. name: k8s-hadoop-master 
  5. spec: 
  6. type: NodePort 
  7. selector: 
  8. app: k8s-hadoop-master 
  9. ports: 
  10. - name: rpc 
  11.   port: 9000 
  12.   targetPort: 9000 
  13. - name: http 
  14.   port: 50070 
  15.   targetPort: 50070 
  16.   nodePort: 32007 

个中,NameNode节点袒露2个处事端口:

  • 9000端口用于内部IPC通讯,首要用于获取文件的元数据
  • 50070端口用于HTTP处事,为Hadoop 的Web打点行使

为了镌汰Hadoop镜像的数目,我们构建了一个镜像,而且通过容器的情形变量HADOOP_NODE_TYPE来区分差异的节点范例,从而启动差异的Hadoop组件,下面是镜像里的启动剧本startnode.sh的内容:

  1. #!/usr/bin/env bash 
  2. sed -i "s/@HDFS_MASTER_SERVICE@/$HDFS_MASTER_SERVICE/g" $HADOOP_HOME/etc/hadoop/core-site.xml 
  3. sed -i "s/@HDOOP_YARN_MASTER@/$HDOOP_YARN_MASTER/g" $HADOOP_HOME/etc/hadoop/yarn-site.xml 
  4. yarn-master 
  5. HADOOP_NODE="${HADOOP_NODE_TYPE}" 
  6. if [ $HADOOP_NODE = "datanode" ]; then 
  7.     echo "Start DataNode ..." 
  8.     hdfs datanode  -regular 
  9.  
  10. else 
  11. if [  $HADOOP_NODE = "namenode" ]; then 
  12.     echo "Start NameNode ..." 
  13.     hdfs namenode 
  14. else 
  15.     if [ $HADOOP_NODE = "resourceman" ]; then 
  16.         echo "Start Yarn Resource Manager ..." 
  17.         yarn resourcemanager 
  18.     else 
  19.  
  20.          if [ $HADOOP_NODE = "yarnnode" ]; then 
  21.              echo "Start Yarn Resource Node  ..." 
  22.              yarn nodemanager    
  23.          else               
  24.             echo "not recoginized nodetype " 
  25.          fi 
  26.     fi 
  27. fi   
  28.  
  29. fi 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读