最近我参与了一个独特的 Hadoop 项目,我们在 Azure 上部署了 CDH(Cloudera Distribution for Hadoop)。该平台为大型组织的数据科学家提供“大数据即服务”。这种部署以前很少在任何地方实施过。分享在项目工作中获得的一些知识和第一手经验,本文的目的是为您提供在 Azure 上安装 CDH 所需遵循的步骤的要点。
Cloudera 在线提供了 Azure 部署的参考体系结构文档。您可以将其与本博客一起引用。
我们为集群中的所有节点使用 DS-14 类型的 CentOS 6.6 机器。我们还为集群中的每台机器使用了专用的高级存储。使用高级存储的原因是它为各种数据科学相关工作提供每秒高输入输出操作(每个磁盘每秒 5000+ IOPS)。高级存储的一个主要问题是我们无法将它们添加到备份库中。
有关 Azure 中各种机器类型的更多详细信息,请参阅 机器类型 。
有关高级存储的更多详细信息,请参阅 高级存储详细信息 。
该平台的架构如下所示:
机器供应
第一步是在 Azure 中设置 VPC(虚拟私有云),并根据互联网访问、与其他可信网络的连接、对其他 Azure 服务的访问等方面进行配置。
之后,我们使用 Azure 命令行 来提供实例。同样可以通过 Azure 管理门户完成。要配置机器,请创建一个 SSH 密钥对,我们可以使用它登录实例。
安装 Azure CLI(从 Mac Yosemite):
brew install node npm install -g azure-cli
连接帐户:
通过登录从门户下载证书:
brew install node npm install -g azure-cli
设置正确的帐户:
brew install node npm install -g azure-cli
可能有超过 1 个帐户。
brew install node npm install -g azure-cli
定义命令行变量:
第 1 步:为每台机器创建 StorageAccount(通过 Azure 门户):
brew install node npm install -g azure-cli
第二步:创建容器:
brew install node npm install -g azure-cli
第 3 步:创建 CentOS 节点:
brew install node npm install -g azure-cli
第 4 步:附加磁盘 - 多个磁盘:
brew install node npm install -g azure-cli
第 5 步:验证
在 Azure 门户中验证 VM 并执行 SSH:
brew install node npm install -g azure-cli
每个 Azure 实例都有一个操作系统磁盘 (
/dev/sda
)。该磁盘的目的是提供快速启动时间。它不应该用于任何其他目的。第二个磁盘 (
/dev/sdb
) 是一个临时磁盘,用于 Linux 交换文件。我们可以为每个存储日志文件、应用程序数据、Hadoop 数据等的 VM 附加额外的磁盘(在 DS-14 型机器上最大 32 x 1 TB 磁盘)。这些可以位于 /dev/sdc 、 /dev/sdd
/dev/sdc
位置
/dev/sdd
我们
可以使用
hdparm
检查磁盘的读取速度
。
Hdparm
是一个 Linux 实用程序,可以快速找出硬盘的读取速度。
brew install node npm install -g azure-cli
环境细节 -
网关机器或垫脚石机器(2 个额外磁盘)– 1. 512 GB 用于应用程序 2. 1 TB 用于 Hadoop 数据
工作机器(4 个额外磁盘)– 1. 512 GB 用于应用程序 2. 3 x 1 TB 用于 Hadoop
主机(2 个额外磁盘)– 1. 512 GB 用于应用程序 2. 1 TB 用于 NN 目录
Ansible 和 Cloudera Manager 安装
配置机器后,我们使用 Ansible 脚本以自动方式执行以下任务以准备机器和设置环境:
• 禁用 SELinux
• 在 Azure CentOS 上启用交换
• 将 Swappiness 设置为 1
• 禁用 IPv6
• 分区磁盘
• 格式化磁盘
• 安装磁盘
• 设置 NTP 等。
更多关于通过Ansible安装Cloudera Manager的详细信息,请参考 CM via Ansible
可以使用以下链接安装 Cloudera Manager 5:
http://archive.cloudera.com/cm5/installer/latest/
可以按照以下指南中提到的步骤安装 CDH:
在 Azure 上安装 CDH 的另一种更简单的方法是使用 Azure 模板 。
结论
Azure-cli 提供了配置 VM、安装硬盘等的好方法。Ansible 脚本帮助我们以自动化的方式快速为 Hadoop 准备机器。
Microsoft 和 Cloudera 正在努力使这种独特的部署组合取得成功。希望在不久的将来,我们可以在 Azure 上看到更多这样的 Hadoop 部署。