docker搭建hadoop集群

Hadoop简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFSMapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算 

docker搭建hadoop集群

1.拉取hadoop镜像

docker pull docker.io/sequenceiq/hadoop-docker

2.查看镜像

docker images

3.创建hadoop容器

创建master节点
docker run --name hadoop1 -d -p 50070:50070 -p 9000:9000 -p 8088:8088 -p 8040:8040 -p 8042:8042  -p 49707:49707  -p 50010:50010  -p 50075:50075  -p 50090:50090 -h master docker.io/sequenceiq/hadoop-docker

创建slave1节点

docker run --name hadoop2 -d -h slave1 docker.io/sequenceiq/hadoop-docker

创建slave2节点

docker run --name hadoop3 -d -h slave2 docker.io/sequenceiq/hadoop-docker

查看容器

docker ps -a

4.配置ssh生成秘钥,所有的节点都要配置

首先配置master节点,进入master容器

docker exec -it hadoop1 bash

启动ssh
/etc/init.d/sshd start

生成秘钥,生成的秘钥在容器/root/.ssh目录下
ssh-keygen -t rsa

进入.ssh目录

cd  /root/.ssh

ls

 将公钥导入authorized_keys文件

cat id_rsa.pub > authorized_keys

cat authorized_keys

退出master容器

exit

同样操作配置slave1节点

docker exec -it hadoop2 bash
/etc/init.d/sshd start
ssh-keygen -t rsa
cd /root/.ssh
cat id_rsa.pub > authorized_keys
exit


配置slave2节点

docker exec -it hadoop3 bash
/etc/init.d/sshd start
ssh-keygen -t rsa
cd /root/.ssh
cat id_rsa.pub > authorized_keys
exit

将容器中这3个节点的公钥也都复制到authorized_keys,也就是说每个authorized_keys 文件中存储的公钥都是3个而且是一样的。

创建文件夹

mkdir -p /home/hadoop

将容器中的公钥复制到centos本地

docker cp hadoop1:/root/.ssh/authorized_keys /home/hadoop/authorized_keys_master

docker cp hadoop2:/root/.ssh/authorized_keys /home/hadoop/slave1

docker cp hadoop3:/root/.ssh/authorized_keys /home/hadoop/slave2

将这三个公钥合并成一个文件

cd /home/hadoop

cat authorized_keys_master slave1 slave2 > authorized_keys

cat authorized_keys

将centos本地的文件复制到容器

docker cp /home/hadoop/authorized_keys hadoop1:/root/.ssh/authorized_keys
docker cp /home/hadoop/authorized_keys hadoop2:/root/.ssh/authorized_keys
docker cp /home/hadoop/authorized_keys hadoop3:/root/.ssh/authorized_keys

5.分别为每个节点配置ip地址

分别进入master、salve1、slave2容器查看ip

docker exec -it hadoop1 bash

ifconfig

 为每个容器设置地址,master、slave1、slave2都要配置

vi /etc/hosts 

在容器内ssh master 测试一下 ,测试成功

6.配置hadoop(配置文件的目录一般都在/usr/local/hadoop-2.7.0/etc/hadoop下面) 

docker exec -it hadoop1 bash

cd /usr/local/hadoop-2.7.0/etc/hadoop/

ls

vi core-site.xml ,加入配置

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

 配置yarn-site.xml,加入配置

vi yarn-site.xml

<property>
		<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
		<value>org.apache.hadoop.mapred.ShuffleHandler</value>
	</property>
	<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:8089</value>
	</property>

将这些参数发送到其它节点 

 scp /usr/local/hadoop-2.7.0/etc/hadoop/yarn-site.xml slave1:/usr/local/hadoop-2.7.0/etc/hadoop/

scp /usr/local/hadoop-2.7.0/etc/hadoop/yarn-site.xml slave2:/usr/local/hadoop-2.7.0/etc/hadoop/

7.运行hadoop

在master上格式化namenode

docker exec -it hadoop1 bash

cd /usr/local/hadoop-2.7.0/bin/
./hadoop namenode -format 

在master上启动集群

cd /usr/local/hadoop-2.7.0/sbin/
./start-all.sh
如果报错告诉端口被占用
那么就先停止,然后再启动
./stop-all.sh
./start-all.sh

jps 查看进程,查看到说明已启动

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今朝花落悲颜色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值