写一个 K8s 部署HADOOP集群 的配置文件
时间: 2024-03-17 08:40:53 浏览: 18
好的,以下是一个简单的 K8s 部署 Hadoop 集群的配置文件示例:
```yaml
apiVersion: v1
kind: Service
metadata:
name: hadoop-namenode
labels:
app: hadoop
component: namenode
spec:
selector:
app: hadoop
component: namenode
ports:
- name: web
port: 50070
targetPort: 50070
- name: ipc
port: 8020
targetPort: 8020
---
apiVersion: v1
kind: Service
metadata:
name: hadoop-datanode
labels:
app: hadoop
component: datanode
spec:
selector:
app: hadoop
component: datanode
ports:
- name: data
port: 50010
targetPort: 50010
- name: ipc
port: 50020
targetPort: 50020
- name: web
port: 50075
targetPort: 50075
---
apiVersion: v1
kind: Service
metadata:
name: hadoop-resourcemanager
labels:
app: hadoop
component: resourcemanager
spec:
selector:
app: hadoop
component: resourcemanager
ports:
- name: web
port: 8088
targetPort: 8088
---
apiVersion: v1
kind: Service
metadata:
name: hadoop-nodemanager
labels:
app: hadoop
component: nodemanager
spec:
selector:
app: hadoop
component: nodemanager
ports:
- name: web
port: 8042
targetPort: 8042
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: hadoop-namenode
spec:
replicas: 1
serviceName: hadoop-namenode
selector:
matchLabels:
app: hadoop
component: namenode
template:
metadata:
labels:
app: hadoop
component: namenode
spec:
containers:
- name: namenode
image: hadoop:latest
command: ["/entrypoint.sh"]
args: ["hadoop", "namenode"]
ports:
- containerPort: 50070
- containerPort: 8020
volumeMounts:
- name: hadoop-data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: hadoop-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: hadoop-datanode
spec:
replicas: 3
serviceName: hadoop-datanode
selector:
matchLabels:
app: hadoop
component: datanode
template:
metadata:
labels:
app: hadoop
component: datanode
spec:
containers:
- name: datanode
image: hadoop:latest
command: ["/entrypoint.sh"]
args: ["hadoop", "datanode"]
ports:
- containerPort: 50010
- containerPort: 50020
- containerPort: 50075
volumeMounts:
- name: hadoop-data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: hadoop-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: hadoop-resourcemanager
spec:
replicas: 1
serviceName: hadoop-resourcemanager
selector:
matchLabels:
app: hadoop
component: resourcemanager
template:
metadata:
labels:
app: hadoop
component: resourcemanager
spec:
containers:
- name: resourcemanager
image: hadoop:latest
command: ["/entrypoint.sh"]
args: ["hadoop", "resourcemanager"]
ports:
- containerPort: 8088
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: hadoop-nodemanager
spec:
replicas: 3
serviceName: hadoop-nodemanager
selector:
matchLabels:
app: hadoop
component: nodemanager
template:
metadata:
labels:
app: hadoop
component: nodemanager
spec:
containers:
- name: nodemanager
image: hadoop:latest
command: ["/entrypoint.sh"]
args: ["hadoop", "nodemanager"]
ports:
- containerPort: 8042
```
这个配置文件包含了 4 个 Service 和 4 个 StatefulSet,每个 StatefulSet 对应一个 Hadoop 组件,包括 NameNode、DataNode、ResourceManager 和 NodeManager。在这个配置文件中,我们使用了 StatefulSet 来部署 Hadoop 组件,这样每个组件都会有一个唯一的网络标识符和持久化的存储卷。这个配置文件还包含了一些基本的端口映射,以便我们可以通过 Service 访问 Hadoop 组件的 Web 界面。