K8S部署Hadoop集群
K8S部署Hadoop集群1、拉取镜像到docker hub上拉取Hadoop镜像[root@k8s-master hadoop]# docker pull kubeguide/hadoop:latest[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V4SnZ1pt-1594707422066)(_media/image-20200616174310375.png)
·
K8S部署Hadoop集群
1、拉取镜像
到docker hub上拉取Hadoop镜像
[root@k8s-master hadoop]# docker pull kubeguide/hadoop:latest
#### 2、复制镜像到其他节点
```sh
# 打包镜像到本地
[root@k8s-master hadoop]# docker save e0af06208032 > hadoop.tar
# 发送到子节点
[root@k8s-master hadoop]# scp hadoop.tar k8s-node01:/root/hadoop
[root@k8s-master hadoop]# scp hadoop.tar k8s-node02:/root/hadoop
# 子节点构建镜像
[root@k8s-node01 hadoop]# docker load --input hadoop.tar
[root@k8s-node02 hadoop]# docker load --input hadoop.tar
3、编写hadoop.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-hadoop-conf
data:
HDFS_MASTER_SERVICE: hadoop-hdfs-master
HDOOP_YARN_MASTER: hadoop-yarn-master
---
apiVersion: v1
kind: Service
metadata:
name: hadoop-hdfs-master
spec:
type: NodePort
selector:
name: hdfs-master
ports:
- name: rpc
port: 9000
targetPort: 9000
- name: http
port: 50070
targetPort: 50070
nodePort: 32007
---
apiVersion: v1
kind: ReplicationController
metadata:
name: hdfs-master
labels:
name: hdfs-master
spec:
replicas: 1
selector:
name: hdfs-master
template:
metadata:
labels:
name: hdfs-master
spec:
containers:
- name: hdfs-master
image: kubeguide/hadoop:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9000
- containerPort: 50070
env:
- name: HADOOP_NODE_TYPE
value: namenode
- name: HDFS_MASTER_SERVICE
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDFS_MASTER_SERVICE
- name: HDOOP_YARN_MASTER
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDOOP_YARN_MASTER
restartPolicy: Always
---
apiVersion: v1
kind: ReplicationController
metadata:
name: hadoop-datanode
labels:
app: hadoop-datanode
spec:
replicas: 3
selector:
name: hadoop-datanode
template:
metadata:
labels:
name: hadoop-datanode
spec:
containers:
- name: hadoop-datanode
image: kubeguide/hadoop:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9000
- containerPort: 50070
env:
- name: HADOOP_NODE_TYPE
value: datanode
- name: HDFS_MASTER_SERVICE
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDFS_MASTER_SERVICE
- name: HDOOP_YARN_MASTER
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDOOP_YARN_MASTER
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: hadoop-yarn-master
spec:
type: NodePort
selector:
name: yarn-master
ports:
- name: "8030"
port: 8030
- name: "8031"
port: 8031
- name: "8032"
port: 8032
- name: http
port: 8088
targetPort: 8088
nodePort: 32088
---
apiVersion: v1
kind: ReplicationController
metadata:
name: yarn-master
labels:
name: yarn-master
spec:
replicas: 1
selector:
name: yarn-master
template:
metadata:
labels:
name: yarn-master
spec:
containers:
- name: yarn-master
image: kubeguide/hadoop:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9000
- containerPort: 50070
env:
- name: HADOOP_NODE_TYPE
value: resourceman
- name: HDFS_MASTER_SERVICE
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDFS_MASTER_SERVICE
- name: HDOOP_YARN_MASTER
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDOOP_YARN_MASTER
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: yarn-node
spec:
clusterIP: None
selector:
name: yarn-node
ports:
- port: 8040
---
apiVersion: v1
kind: ReplicationController
metadata:
name: yarn-node
labels:
name: yarn-node
spec:
replicas: 3
selector:
name: yarn-node
template:
metadata:
labels:
name: yarn-node
spec:
containers:
- name: yarn-node
image: kubeguide/hadoop:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8040
- containerPort: 8041
- containerPort: 8042
env:
- name: HADOOP_NODE_TYPE
value: yarnnode
- name: HDFS_MASTER_SERVICE
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDFS_MASTER_SERVICE
- name: HDOOP_YARN_MASTER
valueFrom:
configMapKeyRef:
name: kube-hadoop-conf
key: HDOOP_YARN_MASTER
restartPolicy: Always
这个yaml文件包含一个ConfigMap,5个Service,8个pod,这里需要注意的是ConfigMap中HDFS_MASTER_SERVICE和HDOOP_YARN_MASTER不要使用IP,使用HDFS service的名称,否则datanode将会连接不上namenode
4、执行创建命令
[root@k8s-master hadoop]# kubectl create -f hadoop.yaml
5、创建完成后就可以通过浏览器看到熟悉的HDFS管理界面了
【http://ip:32007】
【http://ip:32088】
备注(该方式未解决持久化存储问题)
更多推荐
已为社区贡献2条内容
所有评论(0)