基于OpenPAI细化部署 Hadoop 集群

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 基于微软开源的OpenPAI项目来进行Hadoop集群的部署,目前是低版本集群部署

前提

  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 目录下都是一些代码目录以及脚本:




我们再看看与 src 同一级的 deployment 目录:

看着很多,其实我们只要看 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 重启:更新节点的资源信息或者节点故障等。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
192 6
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
83 2
|
1月前
|
分布式计算 资源调度 Hadoop
【赵渝强老师】部署Hadoop的本地模式
本文介绍了Hadoop的目录结构及本地模式部署方法,包括解压安装、设置环境变量、配置Hadoop参数等步骤,并通过一个简单的WordCount程序示例,演示了如何在本地模式下运行MapReduce任务。
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
85 4
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
39 3
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
62 3
|
2月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
72 1
|
2月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
48 1
|
2月前
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
54 1
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
54 1

相关实验场景

更多