Docker——Hadoop完全分布式安装

参考说明:

1、基于Docker的Hadoop完全分布式安装

——使用docker拉取官方Ubuntu镜像,将单机安装好hadoop,然后做成image,再跑多个容器做集群。但有人建议不要把本地运行的容器转成镜像!

2、(1)使用docker安装分布式hadoop(阿里hadoop镜像)

——使用阿里hadoop镜像创建hadoop容器,分别创建三个节点master、slave1、slave2。容器内都是只有hadoop软件还没有配置。通过docker exec -it master bash分别进入三个节点进行配置:
  1)查看jdk:java –version
  2)配置ssh生成秘钥:a.启动ssh/etc/init.d/ssh start;b.生成秘钥ssh-keygen -t rsa
  3)分别进入每个节点,将其他节点的公钥也都复制到authorized_keys,容器中的文件复制到centos本地,在本地对其进行整合,再将其传回容器
  4)分别为每个节点配置ip地址(ip addr查看ip地址,vi /etc/hosts配置)
  5)配置hadoop:a.配置hadoop-env.sh,配置jdk;b.配置core-site.xml,配置hdfs的地址和端口号;c.配置hdfs-site.xml ,配置hdfs备份数量,配置namenode和datanode的数据路径;d.配置 mapred-site.xml,指定MapReduce运行在yarn上,配置JobTracker的地址和端口;e.配置yarn-site.xml,配置hdfs备份数量;f.
步骤a-e在master上配置完后,将core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml 发送到slave1 和slave2节点
  6)运行hadoop:a.在master节点的/etc/hadoop/slaves配置slaves;b.在master上格式化namenode;c.在master上启动集群;d.jps 查看进程;e.分别进入slave1查看进程

(2)docker安装分布式hadoop

——再整理sequenceiq/hadoop-docker创建分布式。与上面思路一样(同一人所写),只是使用的镜像不一样。

3、sequenceiq/hadoop-docker

——docker hub中的高赞单节点hadoop镜像(针对其有网友作出国内使用的几点更改:适合国内使用的修改,我直接使用国外的无恙)
运行指令如下:

 docker pull sequenceiq/hadoop-docker:2.7.0
 docker run -it sequenceiq/hadoop-docker:2.7.0 /etc/bootstrap.sh -bash 
 cd $HADOOP_PREFIX 
 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0.jar grep input output 'dfs[a-z.]+' 
 bin/hdfs dfs -cat output/* 

结果

改进:在docker使用hadoop提供的web管理系统界面,要将容器端口映射至宿主机
 sudo docker run --name myhadoop -p 50070:50070 -p 8088:8088 -p 50075:50075 -it sequenceiq/hadoop-docker /etc/bootstrap.sh -bash
报错如下:
docker端口映射或启动容器时报错
;原因:docker服务启动时定义的自定义链DOCKER由于某种原因被清掉;解决办法:重启docker服务及可重新生成自定义链DOCKERsystemctl restart docker
再次重启运行镜像后,浏览器中宿主机IP:端口
(50070-Hadoop Namenode UI端口;50075- Hadoop Datanode UI端口;8088- Yarn任务监控端口)
web管理系统界面

4、基于Docker快速搭建多节点Hadoop集群

——自设计kiwenlau/hadoop:1.0镜像,关于此镜像的说明:
参考alvinhenrick/hadoop-mutinode项目,但优化了镜像大小、构造时间、镜像层数,默认启动3个节点的Hadoop集群,支持任意节点数的Hadoop集群,基于Ubuntu。github地址: kiwenlau/hadoop-cluster-docker

镜像名称 构建时间 镜像层数 镜像大小
kiwenlau/serf-dnsmasq 509.46s 8 206.6 MB
kiwenlau/hadoop-base 400.29s 7 775.4 MB
kiwenlau/hadoop-master 5.41s 9 775.4 MB
kiwenlau/hadoop-slave 2.41s 8 775.4 MB
镜像名称 镜像功能
kiwenlau/serf-dnsmasq ①基于ubuntu:15.04 (选它是因为它最小,不是因为它最新)②安装serf: serf是一个分布式的机器节点管理工具。它可以动态地发现所有Hadoop集群节点。③安装dnsmasq: dnsmasq作为轻量级的DNS服务器。它可以为Hadoop集群提供域名解析服务。
kiwenlau/hadoop-base ①基于serf-dnsmasq镜像 ②安装JDK(OpenJDK)③安装openssh-server,配置无密码SSH ④安装vim:介样就可以愉快地在容器中敲代码了⑤安装Hadoop 2.3.0: 安装编译过的Hadoop
kiwenlau/hadoop-master ①基于hadoop-base镜像②配置hadoop的master节点③格式化namenode
kiwenlau/hadoop-slave ①基于hadoop-base镜像②配置hadoop的slave节点

运行指令如下:

 sudo docker pull kiwenlau/hadoop:1.0
 git clone https://github.com/kiwenlau/hadoop-cluster-docker   #克隆配置脚本
 sudo docker network create --driver=bridge hadoop
 #创建网桥——由于Hadoop的master节点需要与slave节点通信,需要在各个主机节点
 #配置节点IP,为了不用每次启动都因为IP改变了而重新配置,在此配置一个Hadoop
 #专用的网桥,配置之后各个容器的IP地址就能固定下来
 cd hadoop-cluster-docker
 sudo ./start-container.sh

此镜像有博主进行使用:Docker搭建Hadoop环境

你可能感兴趣的:(Docker——Hadoop完全分布式安装)