Docker搭建Hadoop环境

Hadoop集群环境配置起来相当繁琐,并且在学习Hadoop过程中没有一般不会去使用多台设备进行分布式集群配置。因此在一台机器上配置Hadoop分布式集群时通常采用虚拟机来模拟多台设备,但虚拟机较为占用系统资源,开多个虚拟机(模拟Hadoop集群通常使用3个,一个master,两个slave)对内存要求比较高,因此笔者就想是否能通过Docker来配置Hadoop,并且通过Jetbrains IDEA来连接Docker容器调试MapReduce程序。经过一番折腾,成功地搭建了Docker+IDEA的Hadoop环境。在此将结合网上其他一些教程和自己的经验讲配置过程记录下来。

注意:文中多次提到容器终端是hadoop-master这个容器的终端

Docker的安装与使用

建议在Ubuntu上配置以下内容,因为我自己在Windows上多次尝试配置,都出现Datanode启动不了的情况,同样的步骤在Ubuntu上就没有问题。

看了一些Docker教程,笔者认为菜鸟教程里的Docker教程不错,包含安装过程和一些基础命令,在这里就不赘述了,读者自行查看 菜鸟教程- Docker,另外建议将Docker的镜像源修改为国内镜像源,下载速度会更快。

拉取镜像

镜像,是 Docker 的核心,可以通过从远程拉取镜像即可配置好我们所需要的环境,我们这次需要的是 Hadoop 集群的镜像。我们使用kiwenlau/hadoop:1.0这个镜像。

sudo docker pull kiwenlau/hadoop:1.0

显示以下信息说明拉去镜像成功

克隆配置脚本

这一步是从github上克隆配置脚本,脚本的内容是使用kiwenlau/hadoop:1.0配置mater、slave1、slave2三个容器,其中slave数量可以修改:

git clone https://github.com/kiwenlau/hadoop-cluster-docker

切换到合适的路径在进行克隆,显示以下信息说明克隆完成

创建网桥

由于Hadoop的master节点需要与slave节点通信,需要在各个主机节点配置节点IP,为了不用每次启动都因为IP改变了而重新配置,在此配置一个Hadoop专用的网桥,配置之后各个容器的IP地址就能固定下来。

sudo docker network create --driver=bridge hadoop

出现以下信息说明网桥创建完成

执行脚本

此时可以通过前面步骤克隆下来的脚本进行容器创建了,首先看一下脚本内容



为了后续通过IDEA连接IDEA,需要修改脚本,添加一个端口映射,将容器的9000端口映射到本地的9000端口,在-p 8088:8088 \下添加一行如下图所示



执行脚本,脚本在创建完容器之后进入了容器的终端

Docker命令补充

1、切换到本地终端而不关闭容器:快捷键Ctrl+P+Q,前一个步骤进入了容器的终端,如果我们想在这个窗口执行本地命令,而不想关闭当前容器,可以使用这个快捷前切换回本地终端,如下图所示:



也可以通过新建一个终端窗口通过以下attach命令来进入容器终端,这种方式更方便一点,不需要使用命令来回切换终端

2、进入容器终端:在一个容器启动的情况下,我们想从本地终端切换到容器终端,可以使用docker的attach命令来切换:

# sudo docker attach [container-id]
sudo docker attach hadoop-master



3、以上两条是我们在后续步骤要多次用到的,在此提出,其他Docker命令请查看 菜鸟教程- Docker

更换镜像源

  • 在下一步中需要安装vim,在安装vim前需要执行sudo apt-get update更新软件源,这一步如果使用默认镜像源(国外源),更新速度会很慢,因此最好在次之前配置国内镜像源。
  • 由于更换镜像源需要复制镜像源到文件中,而容器中只有vi(非vim)编辑器,vi的粘贴很难用(我不会用),所有采用在本机创建一个镜像源文件,然后通过Docker命令移动到Docker容器中的方法来修改镜像源文件。

    首先新开一个本地终端,创建一个sources.list文件
gedit sources.list
  • 将以下内容复制进去
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  • 容器终端下备份一下sources.list文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.copy
  • 本地终端使用Docker命令将本地文件复制到Docker容器里
sudo docker cp sources.list  hadoop-master:/etc/apt
  • 最后在容器终端更新一下软件源
sudo apt-get update

安装vim

  • 由于kiwenlau/hadoop:1.0这个镜像是没有安装vim编辑器,因此我们需要先把vim装上,方便后续查看文件,执行以下安装命令即可
# 安装vim
sudo apt-get install vim

启动Hadoop

在前面一个步骤的最后进入了Hadoop容器的终端(master节点),因为是已经配置好Hadoop的容器,所以可以直接使用Hadoop,在容器根目录下有一个启动Hadoop的脚本,脚本代码如下,启动了dfs和yarn:

  • 通过以下命令执行:
./start-hadoop.sh

出现以下信息说明Hadoop启动成功

测试Word Count

根目录下还有一个测试WordCount程序的脚本,WordCount是Hadoop里“Hello World”程序,是一个用于文本字符统计的MapReduce程序,先来看一下run-wordcount.sh这个脚本的内容,脚本往hdfs里添加了数据文件,然后执行了Hadoop里的例子hadoop-mapreduce-examples-2.7.2-sources.jar:

  • 执行脚本
./run-wordcount.sh

输出结果没有报异常,且结果如下则WordCount程序执行成功

查看Web管理页面

  • Name Node:[Your IP Address]:50070/

    • 进入页面可以看到各节点的情况,注意如果Summary下的节点信息异常(容量为0、Live Nodes为0等)可能是配置过程出现了问题。
    • 在导航栏的Utilities中有两个选项Browse the file systemLogs,前者是查看hdfs文件系统的,后者是查看Hadoop运行日志的,出现任何异常时可以在日志中查看,看能否找出异常原因。

  • Resource Manager: [Your IP Address]:8088/

  • 容器的IP可以在启动容器时的输出信息里找到,或者在开启的本地端口映射的情况下使用本地浏览器,IP使用localhost

Docker配置Hadoop环境的过程到此就结束了,下一篇IDEA调试Docker上的Hadoop会介绍如何在IDEA连接Docker配置的Hadoop容器,并且调试的文章,以便于Hadoop的深入学习。

参考”从 0 开始使用 Docker 快速搭建 Hadoop 集群环境“:https://www.jianshu.com/p/b75f8bc9346d

转载https://blog.csdn.net/qq_24342739/article/details/89420496

Docker搭建Hadoop环境的更多相关文章

  1. 使用docker搭建hadoop环境,并配置伪分布式模式

    docker 1.下载docker镜像 docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop:latest 注:此镜像为阿里云个人上传镜 ...

  2. Docker 构建Hadoop环境

    参考如下文章: Docker安装Hadoop Docker在本地搭建Hadoop分布式集群 Docker快速搭建Hadoop测试环境 从0开始用docker搭建 hadoop分布式环境 Docker- ...

  3. 使用docker搭建hadoop分布式集群

    使用docker搭建部署hadoop分布式集群 在网上找了非常长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,仅仅能自己写一个了. 一:环境准备: 1:首先要有一个Cento ...

  4. 使用Docker搭建Hadoop集群(伪分布式与完全分布式)

    之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...

  5. 基于Docker搭建Hadoop+Hive

    为配合生产hadoop使用,在本地搭建测试环境,使用docker环境实现(主要是省事~),拉取阿里云已有hadoop镜像基础上,安装hive组件,参考下面两个专栏文章: 克里斯:基于 Docker 构 ...

  6. mac下通过docker搭建LEMP环境

    在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...

  7. 【一】、搭建Hadoop环境----本地、伪分布式

    ##  前期准备 1.搭建Hadoop环境需要Java的开发环境,所以需要先在LInux上安装java 2.将    jdk1.7.tar.gz 和hadoop 通过工具上传到Linux服务器上 3. ...

  8. Ubuntu上搭建Hadoop环境(单机模式+伪分布模式) (转载)

    Hadoop在处理海量数据分析方面具有独天优势.今天花了在自己的Linux上搭建了伪分布模式,期间经历很多曲折,现在将经验总结如下. 首先,了解Hadoop的三种安装模式: 1. 单机模式. 单机模式 ...

  9. 【Devops】【docker】【CI/CD】1.docker搭建Gitlab环境

    CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-c ...

随机推荐

  1. 2019牛客暑期多校训练营(第一场)I Points Division(dp+线段树优化)

    给你n个点,第i个点在的位置为(xi,yi),有两个属性值(ai,bi).现在让你把这n个点划分为A和B两个部分,使得最后不存在i∈A和j∈B,使得xi>=xj且yi<=yj.然后对于所有 ...

  2. 2019HDU多校 Round10

    Solved:3 Rank:214 08 Coin 题意:n组硬币 每组有两个 分别有自己的价值 每组的第一个被拿了之后才能拿第二个 问拿1,2....2n个硬币的最大价值 题解:之前贪心带反悔的做法 ...

  3. sort排序使用以及lower_bound( )和upper_bound( )

    sort()原型: sort(first_pointer,first_pointer+n,cmp) 排序区间是[first_pointer,first_pointer+n)      左闭右开 参数1 ...

  4. 三、Python基本数据类型

    一.基本算术运算(获取的结果是值) 1 a1=10 2 a2=20#初始赋值 3 a3=a1+a2 #结果30 4 a4=a2-a1 #结果10 5 a5=a1*a2 #结果200 6 a6=a2/a ...

  5. 梨子带你刷burp练兵场(burp Academy) - 服务器篇 - Sql注入 - SQL injection UNION attack, determining the number of columns returned by the query

    目录 SQL injection UNION attack, determining the number of columns returned by the query SQL injection ...

  6. C - 可变参函数与可变参宏

    一.可变宏 1.# 可以接收一个参数,并把这个参数按照原来的字符串源码原样传给宏内部: 1 #define RR(x) printf(#x"\n"); 2 int main(){ ...

  7. python之字符串split和rsplit的方法

    1.描述 split()方法通过指定分隔符对字符串进行切片,如果参数num有指定值,则分隔num+1个子字符串,默认分隔符为所有空字符,包括空格.换行(\n).制表符(\t)等 rstrip()方法通 ...

  8. Pangolin 安装测试 Installation & Examination (Ubuntu 20.04)

    Pangolin 安装测试 Installation & Examination (Ubuntu 20.04) 如题所述,这是一个比较轻松的 Pangolin 安装配置方法,同样是基于 WSL ...

  9. Lightoj 1038 - Race to 1 Again【期望+dp】

    题目:戳这里 题意:一个数字n不断迭代地除以自身的因子得到1.求这个过程中操作除法次数的期望. 解题思路: 求概率基本都是从一个最基础的状态开始延伸推出公式,得出答案.因为每个数都有个共同的最终状态1 ...

  10. 计算机网络 part3 HTTP&HTTPS

    一.HTTP references: HTTP [HTTP协议]---HTTP协议详解 1.概述.特点 HTTP(超文本传输协议)是一种规定了浏览器和万维网服务器通信规则的协议.客户端和服务端的指定接 ...