• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > 详解使用docker搭建hadoop分布式集群

详解使用docker搭建hadoop分布式集群

作者:xu470438000 字体:[增加 减小] 来源:互联网

本文主要包含docker搭建hadoop集群,docker,搭建hadoop,docker,hadoop集群等服务器相关知识,xu470438000 希望可以进行参考

使用Docker搭建部署Hadoop分布式集群

在网上找了很长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,只能自己写一个了。

一:环境准备:

1:首先要有一个Centos7操作系统,可以在虚拟机中安装。

2:在centos7中安装docker,docker的版本为1.8.2

安装步骤如下:

<1>安装制定版本的docker 

yum install -y docker-1.8.2-10.el7.centos 

<2>安装的时候可能会报错,需要删除这个依赖

这里写图片描述

rpm -e lvm2-7:2.02.105-14.el7.x86_64

启动docker

service docker start

验证安装结果:

这里写图片描述 

<3>启动之后执行docker info会看到下面有两行警告信息

这里写图片描述

需要关闭防火墙并重启系统

systemctl stop firewalld
systemctl disable firewalld
#注意:执行完上面的命令之后需要重启系统
reboot -h(重启系统)

<4>运行容器可能会报错

这里写图片描述

需要关闭selinux

解决方法:

1:setenforce 0(立刻生效,不需要重启操作系统)

2:修改/etc/selinux/config文件中的SELINUX=disabled ,然后重启系统生效

建议两个步骤都执行,这样可以确保系统重启之后selinux也是关闭状态

3:需要先构建一个hadoop的基础镜像,使用dockerfile文件方式进行构建。

先构建一个具备ssh功能的镜像,方便后期使用。(但是这样对于容器的安全性会有影响)

注意:这个镜像中的root用户的密码是root

Mkdir centos-ssh-root 
Cd centos-ssh-root 
Vi Dockerfile
# 选择一个已有的os镜像作为基础 
FROM centos 

# 镜像的作者 
MAINTAINER crxy 

# 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no 
RUN yum install -y openssh-server sudo 
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config 
#安装openssh-clients
RUN yum install -y openssh-clients

# 添加测试用户root,密码root,并且将此用户添加到sudoers里 
RUN echo "root:root" | chpasswd 
RUN echo "root  ALL=(ALL)    ALL" >> /etc/sudoers 
# 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录 
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key 
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key 

# 启动sshd服务并且暴露22端口 
RUN mkdir /var/run/sshd 
EXPOSE 22 
CMD ["/usr/sbin/sshd", "-D"]

构建命令:

docker build -t=”crxy/centos-ssh-root” .

查询刚才构建成功的镜像

这里写图片描述 

4:基于这个镜像再构建一个带有jdk的镜像
注意:jdk使用的是1.7版本的

Mkdir centos-ssh-root-jdk 
Cd centos-ssh-root-jdk 
Cp ../jdk-7u75-Linux-x64.tar.gz . 
Vi Dockerfile
FROM crxy/centos-ssh-root
ADD jdk-7u75-linux-x64.tar.gz /usr/local/
RUN mv /usr/local/jdk1.7.0_75 /usr/local/jdk1.7
ENV JAVA_HOME /usr/local/jdk1.7
ENV PATH $JAVA_HOME/bin:$PATH

构建命令:

docker build -t=”crxy/centos-ssh-root-jdk” .

查询构建成功的镜像

这里写图片描述 

5:基于这个jdk镜像再构建一个带有hadoop的镜像

注意:hadoop使用的是2.4.1版本的。

Mkdir centos-ssh-root-jdk-hadoop 
Cd centos-ssh-root-jdk-hadoop 
Cp ../hadoop-2.4.1.tar.gz . 
Vi Dockerfile
FROM crxy/centos-ssh-root-jdk
ADD hadoop-2.4.1.tar.gz /usr/local
RUN mv /usr/local/hadoop-2.4.1 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH

构建命令:

docker build -t=”crxy/centos-ssh-root-jdk-hadoop” .

查询构建成功的镜像

这里写图片描述

二:搭建hadoop分布式集群

1:集群规划

准备搭建一个具有三个节点的集群,一主两从

主节点:hadoop0 ip:192.168.2.10

从节点1:hadoop1 ip:192.168.2.11

从节点2:hadoop2 ip:192.168.2.12

但是由于docker容器重新启动之后ip会发生变化,所以需要我们给docker设置固定ip。使用pipework给docker容器设置固定ip

2:启动三个容器,分别作为hadoop0 hadoop1 hadoop2

在宿主机上执行下面命令,给容器设置主机名和容器的名称,并且在hadoop0中对外开放端口50070 和8088

docker run --name hadoop0 --hostname hadoop0 -d -P -p 50070:50070 -p 8088:8088 crxy/centos-ssh-root-jdk-hadoop

docker run --name hadoop1 --hostname hadoop1 -d -P crxy/centos-ssh-root-jdk-hadoop

docker run --name hadoop2 --hostname hadoop2 -d -P crxy/centos-ssh-root-jdk-hadoop

使用docker ps 查看刚才启动的是三个容器

这里写图片描述

3:给这三台容器设置固定IP

1:下载pipework 下载地址:https://github.com/jpetazzo/pipework.git

2:把下载的zip包上传到宿主机服务器上,解压,改名字

unzip pipework-master.zip
mv pipework-master pipework
cp -rp pipework/pipework /usr/local/bin/ 

3:安装bridge-utils

yum -y install bridge-utils

4:创建网络

brctl addbr br0
ip link set dev br0 up
ip addr add 192.168.2.1/24 dev br0

5:给容器设置固定ip

pipework br0 hadoop0 192.168.2.10/24
pipework br0 hadoop1 192.168.2.11/24
pipework br0 hadoop2 192.168.2.12/24

验证一下,分别ping三个ip,能ping通就说明没问题

这里写图片描述

4:配置hadoop集群

先连接到hadoop0上, 使用命令

docker exec -it hadoop0 /bin/bash

下面的步骤就是hadoop集群的配置过程

1:设置主机名与ip的映射,修改三台容器:vi /etc/hosts

添加下面配置

192.168.2.10  hadoop0
192.168.2.11  hadoop1
192.168.2.12  hadoop2

2:设置ssh免密码登录

在hadoop0上执行下面操作

cd ~
mkdir .ssh
cd .ssh
ssh-keygen -t rsa(一直按回车即可)
ssh-copy-id -i localhost
ssh-copy-id -i hadoop0
ssh-copy-id -i hadoop1
ssh-copy-id -i hadoop2
在hadoop1上执行下面操作
cd ~
cd .ssh
ssh-keygen -t rsa(一直按回车即可)
ssh-copy-id -i localhost
ssh-copy-id -i hadoop1
在hadoop2上执行下面操作
cd ~
cd .ssh
ssh-keygen -t rsa(一直按回车即可)
ssh-copy-id -i localhost
ssh-copy-id -i hadoop2

3:在hadoop0上修改hadoop的配置文件

进入到/usr/local/hadoop/etc/hadoop目录

修改目录下的配置文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml

(1)hadoop-env.sh

export JAVA_HOME=/usr/local/jdk1.7

(2)core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop0:9000</value>
    </property>
    <property>
        <name>hadoop.tm
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ubuntu docker搭建Hadoop集群环境的方法
  • 详解从 0 开始使用 Docker 快速搭建 Hadoop 集群环境
  • 详解使用docker搭建hadoop分布式集群

相关文章

  • Docker基础学习之数据管理
  • 如何对关键应用实施虚拟化
  • Docker学习之基于Dockerfile搭建JAVA Tomcat运行环境的方法
  • docker 如何搭建私有仓库(ubuntu 14.04,Docker版本1.6.4)详细介绍
  • Linode Xen 下 grsecurity >= 4.3 崩溃问题
  • Docker定制容器镜像的2种方法(推荐)
  • Docker 运行时的用户与组管理的方法
  • docker 的java编译环境构建详细介绍
  • 虚拟机实现静态IP登录和无线上网
  • 记一次Docker生产环境搭建的方法

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Docker学习笔记之Docker端口映射
    • ubuntu用 vmware 安装win10系统的教程(分享)
    • Docker学习笔记之k8s部署方法
    • Docker如何固定IP设置的方法
    • docker入门之容器介绍
    • 详解基于Harbor搭建Docker私有镜像仓库
    • ubuntu vps安装docker报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock.问题解决
    • Docker Machine是什么?
    • 详细介绍kvm虚拟机静态和动态迁移(图文介绍)
    • Vmware安装OpenWrt15.05虚拟机教程

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有