首发基于OpenPAI细化部署 Hadoop 集群

本文详述如何基于OpenPAI v0.14.0在k8s 1.9.4环境下部署Hadoop 2.9.0集群。首先克隆OpenPAI代码,配置master及node节点,通过打标签方式指定节点角色。然后执行部署命令,如需关闭HDFS安全模式,可在namenode容器内操作。文中还提及resource-manager、node-manager等关键组件的运维方法。

前提

  1. https://github.com/microsoft/pai/tree/v0.14.0

  2. Hadoop 2.9.0

  3. k8s 1.9.4 (高版本未测)

 

本次讲解的主要是基于 Microsoft 开源的 OpenPAI,向大家通俗易懂的讲解 OpenPAI 是如何快速部署 Hadoop 集群的。便于大家快速部署Hadoop集群。

 

环境:

ubuntu 16.04
docker 18.06
k8s 1.9.4
Hadoop 2.9.0

1. 准备

分析

以上系统环境准备好,首先克隆 Microsoft 开源的 OpenPAI 的代码: https://github.com/microsoft/pai,切换到分支 v0.14.0。

由于我的目录在 /home/damon 下,所以直接:

cd /home/damon/pai
ll

可以看到有如下目录:

其中,src 目录下都是一些代码目录以及脚本:

看着很多,其实我们只要看 quick-start 下的几个文件:

sudo vi deployment/quick-start/quick-start-example.yaml #配置master节点信息
sudo vi deployment/quick-start/kubernetes-configuration.yaml.template  #不作大改
sudo vi deployment/quick-start/layout.yaml.template  #增加机器相关信息
sudo vi deployment/quick-start/services-configuration.yaml.template #配置docker相关信息
 

第一个配置文件主要是关于 master 节点。第二个配置主要是配置 k8s 的基本信息,因为 OpenPAI 不仅可以部署 Hadoop,还可以基于 Docker、python 来部署 k8s。第三个配置主要是增加机器的信息,我们需要修改的是配置 master 节点的信息,至于 node 节点,我们可以通过打标签的方式来。第四个配置主要是配置 docker 信息,存储 image 的各种 tag 形式。

 

根据配置模板生成配置文件

sudo python paictl.py config generate -i deployment/quick-start/quick-start-example.yaml -o ~/damon/pai-config -f
 

把生成的本地配置文件推送到远程 k8s 集群

sudo python paictl.py config push -p ~/damon/pai-config/

执行上面的命令时,会出现输入命令,意思是让你输入一个 cluster-id,这是 OpenPAI 为集群设置的一个 id。输入后回车即可把配置推送到远程了。

 

获取 cluster-id

如果生成过,执行

damon@master:~/damon/pai$ sudo python paictl.py config get-id
2020-07-16 19:56:48,066 [INFO] - deployment.confStorage.get_cluster_id : Cluster-id is: ustc

即可获取。

 

重点

以上配置都结束后,上面说过了,配置中只有 master 节点信息,需要手动给 node 节点打标签:

kubectl label node nodeName hdfsrole=master

同样的标签还有类似:

master labels:

hdfsrole=master,jobhistory=true,launcher=true,node-exporter=true,pai-master=true,yarnrole=master,zookeeper=true
 
node labels:
gpu-check=true,hdfsrole=worker,node-exporter=true,pai-worker=true,yarnrole=worker

打完标签后,即可开始部署 Hadoop 集群了。

部署 Hadoop

部署 Hadoop 的命令:

sudo python paictl.py service start [-c /path/to/kubeconfig] [ -n service-name ]

解释:-c 参数中带的是 k8s 授权的 kube-config 路径,-n 参数是服务名,如果没带 -n,则会默认启动 src 下的所有的服务。

 

Hadoop 中主要有这些服务:

zookeeper
hadoop-name-node
hadoop-data-node
hadoop-resource-manager
hadoop-node-manager
hadoop-batch-job
hadoop-jobhistory

那就手动一个个执行吧。执行一个后看看 pod 有没有启动,相关的 configmap 有没有创建,默认都是官方的。

注意项

如果发现 namenode 启用了安全模式,而不想启用的话,执行:

kubectl exec -it hadoop-name-node-e3bw9 bash
hadoop dfsadmin -safemode leave

即:进入 name-node 容器中执行关闭。

 

模块功能说明

  1. resource-manager 是调度中心,负责资源管理。

  2. node-manager 是容器启动的的执行者。通常异常情况需要重启 node-manager。

  3. zookeeper 为数据的存储中心。

  4. namenode 和 datanode 为 hadoop 服务(HDFS)的基础层。

模块运维方法说明

  1. resource-manager 重启:大量任务 waiting 和 stopping 和数据不一致等情况。

  2. node-manager 重启:更新节点的资源信息或者节点故障等。

 

<span class="suffix" style="display: none;"></span></h6>
<h4 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; font-weight: bold; color: black; font-size: 18px;"><span class="prefix" style="display: none;"></span><span class="content">个人网站</span><span class="suffix" style="display: none;"></span></h4>

[技术分享博客](http://www.damon8.cn)

 

往期回顾

微服务自动化部署CI/CD

ArrayList、LinkedList&nbsp;你真的了解吗?

微服务架构设计之解耦合

大佬整理的mysql规范,分享给大家

如果张东升是个程序员

Oauth2的授权码模式《上》

Oauth2的认证实战-HA篇

浅谈&nbsp;Java&nbsp;集合&nbsp;|&nbsp;底层源码解析

基于 Sentinel 作熔断 | 文末赠资料

基础设施服务k8s快速部署之HA篇

今天被问微服务,这几点,让面试官刮目相看

Spring cloud 之多种方式限流(实战)

Spring cloud 之熔断机制(实战)

面试被问finally 和 return,到底谁先执行?

Springcloud Oauth2 HA篇

Spring Cloud Kubernetes之实战一配置管理

Spring Cloud Kubernetes之实战二服务注册与发现

Spring Cloud Kubernetes之实战三网关Gateway

关注公众号,回复入群,获取更多惊喜!公众号(程序猿Damon)里回复 ES、Flink、Java、Kafka、MQ、ML、监控、大数据、k8s 等关键字可以查看更多关键字对应的文章。

如有收获,点个在看,谢谢

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值