1.hadoop集群搭建
新建hadoop文件夹
mkdir hadoop
docker拉取镜像
docker pull kubeguide/hadoop:latest
新建hadoop命名空间
kubectl create namespace hadoop
编辑hadoop.yaml vim hadoop.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: kube-hadoop-conf
namespace: hadoop
data:
HDFS_MASTER_SERVICE: hadoop-hdfs-master
HDOOP_YARN_MASTER: hadoop-yarn-master
---
apiVersion: v1
kind: Service
metadata:
name: hadoop-hdfs-master
namespace: hadoop
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
namespace: hadoop
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
namespace: hadoop
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
namespace: hadoop
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
namespace: hadoop
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
namespace: hadoop
spec:
clusterIP: None
selector:
name: yarn-node
ports:
- port: 8040
---
apiVersion: v1
kind: ReplicationController
metadata:
name: yarn-node
namespace: hadoop
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
运行hadoop.yaml
kubectl create -f hadoop.yaml
查看是否运行及外部接口
kubectl get pod -n hadoop
kubectl get svc -n hadoop
2.访问HDFS网页
3.访问Hadoop网页
4.遇到的问题
在我将hadoop.yaml文件运行起来后,但是在集群外无法访问HDFS和Hadoop,搞了几个小时没头绪,后面我将内核从3.3升到了5.4,具体可看Centos7更改默认启动内核。接着我发现有一个节点的虚拟机上一直显示out of memory
,并且正在杀死进程,我猜想是不是因为虚拟机内存不够,致使容器服务没有跑起来,于是我增加了虚拟机的内存。重启以后HDFS和Hadoop的界面就出来了