在docker上安装hadoop集群

我参考了这篇博客,写的很清楚不过还有一些漏洞:https://blog.csdn.net/qq_33530388/article/details/72811705
下面是我将一些错误的地方修正了,给大家看。亲测可用!!失败的可以留言!!
首先线上个效果图:

image.png

环境介绍:我的主机是win10,自带16G,装的虚拟机centos7,给了4G内存。在centos7里面装了docker,本章不介绍docker的安装,如果想看的可以看我的其他文章

1.获取镜像。

如果是本地使用VMware搭建的话,需要准备Java环境,hadoop安装包,还要配置环境变量。虽然不难,但是经常做这些工作也难免烦躁。
使用Docker容器的话,那这一切就变得简单多了。

首先要准备一个镜像,可以使用Dockerfile构建一个合适自己的镜像,或者可以在共有仓库中找一个具有hadoop环境的镜像来使用也可以。由于我是配置的阿里云的加速器,所以在阿里云的仓库中找了一个具有hadoop环境的镜像。hadoop镜像地址

使用命令拉到本地:

docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop

下载完成之后,通过docker images 可以查看到该镜像:

这里写图片描述

2.创建容器。

有了镜像之后,我们根据该镜像创建三个容器,分别是一个Master用来作为hadoop集群的namenode,剩下两个Slave用来作为datanode。

可以使用命令:

docker run -i -t --name Master -h Master  -p 50070:50070 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash

命令中的-h为该容器设置了主机名,这里设置为Master,最好创建容器的时候就设置主机名,在容器内部设置不生效。

–name指定了容器的名字,也是为了方便区分使用。

-p 是指定对外开放的端口50070,这是方便我们在浏览器上访问hdfs。原文中也有给出如何给运行的容器开放端口映射,不过对我还是不好用

如果需要设置挂载的,可自行设置

建立好Master节点的容器之后,再分别使用两次该命令,创建两个Slave节点。稍微改变其中的参数即可:

例如创建Slave1节点:

docker run -i -t --name Slave1 -h Slave1 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash

这样集群的基本环境就准备好了。


3.配置SSH。

如果是本地搭建的话,需要配置的大概分为三步:
1.配置java环境。
2.配置无秘SSH。
3.配置hadoop环境。

但是下载的镜像已经包含了这些内容,我们只需要简单的配置一下就可以使用了。
在这个镜像中,有关java和hadoop的内容都存放在了/opt/tools目录下。

先查看下环境变量都包含了什么:

这里写图片描述

从中间可以看出包含了jdk和hadoop的bin目录,所以我们可以直接使用这两个命令。

这里写图片描述

java环境已经不需要我们来配置了。

接下来配置一下无秘的SSH。

首先将SSH运行起来。

/etc/init.d/ssh start

然后生成秘钥,保存到authorized_keys中。这个地方可以看一下这篇博客:ssh-keygen 的 详解

ssh-keygen -t rsa

执行的总体过程如下:

这里写图片描述

接下来在两个Slave节点中做相同的事情,并且将每个节点生成的秘钥互相保存在authorized_keys中。

也就是说,三个节点的都是这个样子的:

这里写图片描述

接下来查看一下各自节点的ip地址,但是如果直接使用熟悉的ifconfig时,就会发现没有这个命令。那是因为镜像本身就比较简洁,简洁到连这个命令都没有。。。这个我也是服。
可以使用ip addr查看,或者:apt-get install ifconfig net-tools,安装相关命令。

相比之下还是ip addr方便点:

这里写图片描述

然后修改/etc/hosts,将主机名和对应的ip地址添加进去,这样做为了方便调用ssh:

这里写图片描述

如果在Master节点,想要连接到Slave1节点,可以使用:ssh 192.168.0.3,也可以使用ssh Slave1。很明显能感觉到使用主机名比较方便理解使用。

如果使用ssh Slave1之后没有提示需要输入密码,就代表成功了(第一次的话会让输入yes或者no,是为了记住该地址,如果输入yes之后就可以直接连接就像下面这样):

这里写图片描述

4.配置hadoop。

到现在为止,我们已经准备好了haoop搭建的所有基本工作。也是由于该Docker镜像为我们准备好了需要才会这么简单的。

我们只需要在配置一下hadoop相关的内容。

为了方便起见,我们可以直接在Master节点进行配置,然后使用scp命令发送到各节点覆盖原来的即可。

这里不废话,直接上代码,至于其中的意思可以参考书籍资料,或者查看这个文档:hadoop安装指南,这个文档是在VMware上配置的。

hadoop-env.sh:修改有关java的环境

export JAVA_HOME=/opt/tools/jdk1.8.0_77

core-site.xml

<configuration>

  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://Master:9000</value>
  </property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/hadoop/tmp</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/hadoop/data</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/hadoop/name</value>
  </property>
</configuration>

mapred-site.xml

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>

yarn-site.xml

<configuration>
 <property>
<name>yarn.resourcemanager.address</name>
 <value>Master:8032</value>
</property>
<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>Master:8030</value> </property> <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>Master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>Master:8033</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>Master:8088</value>
</property>
 <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
 <property>
 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
 <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

slaves

Master
Slave1
Slave2

所以我这里datanode有3个,每个节点各一个,namenode只有一个,在Master上

相关目录最好需要手动创建,然后分发给其他节点上

mkdir /hadoop/data
mkdir /hadoop/name
mkdir /hadoop/tmp
scp -r hadoop root@Slave1:/
scp -r hadoop root@Slave2:/

然后将这些文件通过scp发送到各个Slave节点上覆盖原来的文件:

scp core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml Slave1:/opt/tools/hadoop/etc/hadoop/

到这里为止,所有的准备工作都做好了。


5.运行hadoop。

进行格式化操作:

hadoop namenode -format

启动集群:

使用./start-all.sh,如果启动过程中提示关于0.0.0.0地址输入yes或no,输入yes即可:

这里写图片描述

在Master上使用jps查看相关进程是否启动:

这里写图片描述

在Slave节点上使用jps查看相关进程是否启动:

这里写图片描述

使用命令查看各节点信息:hadoop dfsadmin -report

这里写图片描述

然后再运行一个统计单词的例子:

现在hsfs上创建一个文件夹:

hadoop fs -mkdir /input

查看该文件夹:

hadoop fs -ls /
这里写图片描述

上传文件到hdfs,这里直接将当前目录的README.txt进行上传:

hadoop fs -put README.txt /input/

这里写图片描述

之后运行相关例子:

在/opt/tools/hadoop/share/hadoop/mapreduce目录中执行:hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /input /output

这里写图片描述

注意下这里我之前已经做过测试了,所有outout目录已经存在了,所以换成了output1,这个目录不需要提前创建,运行的时候指定一下,会自动创建的。

查看相关结果输出:

这里写图片描述

可以使用: hadoop fs -cat /output1/part-r-00000 查看一下统计结果:

这里写图片描述

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容