如何在Docke上部署Hadoop集群 | How to set up a Hadoop cluster in Docker | 翻译

如何在Docke上部署Hadoop集群

原文:How to set up a Hadoop cluster in Docker
— May 14,2019
作者:Yen V 软件工程师
翻译:@奥创没有电 (kvimsg@live.com)

Apache Hadoop是一个流量的大数据框架,在软件领域中大量使用。作为一个分布式系统,Hadoop在从一个节点到数千个节点的集群上运行。

如果你想测试Hadoop或者当前没有机会连接到一个大的Hadoop集群网络,你可以使用Docker部署一个Hadoop集群在你自己的电脑上。Docker是一个流行的独立软件容器平台能让你构建和传播你的应用,容器里仅包含了应用所需的环境、库和依赖。容器是便携式的,因此您可以通过运行一些简单的 Docker 命令在另一台计算机上设置完全相同的系统。借助 Docker,无需依赖当前的操作系统配置,即可轻松在任何地方构建、共享和运行应用程序。

举例,如果你有一台运行Windows的笔记本但需要部署一个只能在Linux上运行的应用,多亏了Docker,你不需要安装一个新的操作系统或安装一个虚拟机,你可以用一个Docker容器来连接所有的你所需要的库,然后在你完成你的工作后删除它。

在这个教程中,我们会使用Docker安装一个有3个节点的Hadoop集群,然后运行一个经典的Hdaoop单词技术程序来测试这个系统。

1. 安装Docker

如果你还没安装好Docker,你可以遵循Docker官方指南很容易的安装它。

检查你的Docker Engine, Machine and Compose版本,使用下面的命令

$ docker --version
$ docker-compose --version
$ docker-machine –version

如果这是你第一次运行Docker,启动你第一个Docker化的web服务器来测试下,确保事情都能正确的运转。

docker run -d -p 80:80 --name myserver nginx

由于这是第一次运行此命令,并且镜像本地没有,Docker 将从Docker Hub下载。完成所有操作后,请访问 http://localhost 查看新服务器的主页。

2. 使用Docker部署Hadoop集群

为了在Docker容器中安装Hadoop,需要一个Hadoop Docker镜像,到Big Data Europe repository获得镜像。如果你系统上有Git,运行下面的命令;如果没有,就下载zip压缩包到你的电脑上,

$ git clone git@github.com:big-data-europe/docker-hadoop.git

一但我们有了docker-hadoop文件夹,我们要去编辑docker-compose.yml文件以启用一些监听接口,以及更改Docker-compose拉取镜像的位置,因为我们本地已经有了镜像文件(Docker 将尝试在第一次运行时下载文件并生成镜像,但在随后的时间,我们很乐意使用磁盘上现有的映像,而不是再次从头开始重建所有内容)。打开·docker-compose.yml·文件,并将内容替换为以下内容(您也可以从this Github Gist下载或复制和粘贴):

部署Hadoop集群,用这个命令

$ docker-compose up -d

Docker-Compose 是一种功能强大的工具,用于同时启动多个容器。-d 参数用于告诉 Docker-compose 在后台运行命令,并返回命令提示符,以便您可以执行其他操作。只需上述一个命令,即可设置一个 Hadoop 群集,该群集包含 3 个从属(数据节点)、一个 HDFS 命名节点(或用于管理数据节点的主节点)、一个 YARN 资源管理器、一个历史记录服务器和一个节点管理器。

HDFS结构图

如果所需镜像本地没有Docker-Compose会尝试从Docker-Hub库拉取所需镜像,构建镜像然后启动容器。这些我完成之后,你可以用下面的命令去查看当前运行的容器。

$ docker ps

在这里插入图片描述
打开http://localhost:9870查看namenode系统的当前状态。
在这里插入图片描述

3. 测试Hadoop集群

现在咱们可以通过跑一个经典的单词计数程序来测试Hadoop集群。

执行以下命令,进入正在运行的namenode节点:

$ docker exec -it namenode bash

首先,咱们创建一些简单的输入文本文件,以将这些文件馈入 WordCount 程序:

$ mkdir input
$ echo "Hello World" >input/f1.txt
$ echo "Hello Docker" >input/f2.txt

现在在HDFS上创建输入目录

$ hadoop fs -mkdir -p input

用下面的命令,把输入文件放到HDFS上所有的datanode

$ hdfs dfs -put ./input/* input

这个链接下载单词计数程序实例(这里我把它下载到我docker-hadoop父目录的文件夹里)

现在我们需要去拷贝这个单词计数程序,从我们的本地机器到我们的Docker namdenode 节点。

用下面的命令找出你 namenode 容器的ID:

$ docker container ls

在这里插入图片描述
复制你namenode容器ID(它在第一列),然后用下面的命令开始拷贝jar文件到你的Docker Hadoop 集群:

$ docker cp ../hadoop-mapreduce-examples-2.7.1-sources.jar cb0c13085cd3:hadoop-mapreduce-examples-2.7.1-sources.jar

现在你已经可以在namenode内运行单词计数程序了:

root@namenode:/# hadoop jar hadoop-mapreduce-examples-2.7.1-sources.jar org.apache.hadoop.examples.WordCount input output

打印出单词技术程序的结果:

root@namenode:/# hdfs dfs -cat output/part-r-00000

World 1
Docker 1
Hello 2

恭喜,你刚刚成功地在Docker上部署了一个Hadoop集群!

安全地退出集群并删除容器,用下面的命令:

$ docker-compose down

???:如果大家有部分文件?下载⏬过慢?或出现其他问题?,可以在?评论区留言?。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值