参考说明:
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服务及可重新生成自定义链DOCKER
systemctl 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环境
网友评论