我们注意到,启动命令里把Hadoop配置文件(core-site.xml与yarn-site.xml)中的HDFS Master节点地址用环境变量中的参数HDFS_MASTER_SERVICE来替换,YARN Master节点地址则用HDOOP_YARN_MASTER来替换。下图是Hadoop HDFS 2节点集群的完整建模示意图:

图中的圆圈表示Pod,可以看到,Datanode并没有建模Kubernetes Service,而是建模为独立的Pod,这是因为Datanode并不直接被客户端所访问,因此无需建模Service。当Datanode运行在Pod容器里的时候,我们需要修改配置文件中的以下参数,取消DataNode节点所在主机的主机名(DNS)与对应IP地址的检查机制:
- dfs.namenode.datanode.registration.ip-hostname-check=false
如果上述参数没有修改,就会出现DataNode集群“分裂”的假象,因为Pod的主机名无法对应Pod的IP地址,因此界面会显示2个节点,这两个节点都状态都为异常状态。
下面是HDFS Master节点Service对应的Pod定义:
- apiVersion: v1
- kind: Pod
- metadata:
- name: k8s-hadoop-master
- labels:
- app: k8s-hadoop-master
- spec:
- containers:
- - name: k8s-hadoop-master
- image: kubeguide/hadoop
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 9000
- - containerPort: 50070
- env:
- - name: HADOOP_NODE_TYPE
- value: namenode
- - name: HDFS_MASTER_SERVICE
- valueFrom:
- configMapKeyRef:
- name: ku8-hadoop-conf
- key: HDFS_MASTER_SERVICE
- - name: HDOOP_YARN_MASTER
- valueFrom:
- configMapKeyRef:
- name: ku8-hadoop-conf
- key: HDOOP_YARN_MASTER
- restartPolicy: Always
下面是HDFS的Datanode的节点定义(hadoop-datanode-1):
- apiVersion: v1
- kind: Pod
- metadata:
- name: hadoop-datanode-1
- labels:
- app: hadoop-datanode-1
- spec:
- containers:
- - name: hadoop-datanode-1
- image: kubeguide/hadoop
- imagePullPolicy: IfNotPresent
- ports:
- - containerPort: 9000
- - containerPort: 50070
- env:
- - name: HADOOP_NODE_TYPE
- value: datanode
- - name: HDFS_MASTER_SERVICE
- valueFrom:
- configMapKeyRef:
- name: ku8-hadoop-conf
- key: HDFS_MASTER_SERVICE
- - name: HDOOP_YARN_MASTER
- valueFrom:
- configMapKeyRef:
- name: ku8-hadoop-conf
- key: HDOOP_YARN_MASTER
- restartPolicy: Always
(编辑:青岛站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|