千家信息网

vmware虚拟机redhat7.2下docker容器怎么安装hadoop

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了vmware虚拟机redhat7.2下docker容器怎么安装hadoop,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一
千家信息网最后更新 2026年11月02日vmware虚拟机redhat7.2下docker容器怎么安装hadoop

这篇文章主要介绍了vmware虚拟机redhat7.2下docker容器怎么安装hadoop,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

ip配置:

# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noNAME=eno16777736UUID=dadee176-cc84-43f4-9ea9-e30a30ca3abfDEVICE=eno16777736ONBOOT=yes#20160708 addIPADDR0=192.168.128.130PREFIXO0=24GATEWAY0=192.168.128.1#DNS1=#DNS2=

DNS配置

# cat /etc/resolv.conf# Generated by NetworkManager# No nameservers found; try putting DNS servers into your# ifcfg files in /etc/sysconfig/network-scripts like so:## DNS1=xxx.xxx.xxx.xxx# DNS2=xxx.xxx.xxx.xxx# DOMAIN=lab.foo.com bar.foo.comnameserver 192.168.128.1

本地yum配置

# 挂载iso文件# mkdir -p /media/cdrom# vi /etc/fstab'''/opt/rhel-server-7.2-x86_64-dvd.iso /media/cdrom   iso9660    defaults,ro,loop  0 0'''# mount -a# df -lh'''/dev/loop0             3.8G  3.8G     0 100% /media/cdrom'''# vi /etc/yum.repos.d/rhel-media.repo [rhel-media]name=Red Hat Enterprise Linux 7.2baseurl=file:///media/cdromenabled=1gpgcheck=1gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release# 清理缓存# yum clean# 将服务器上的软件包信息在本地缓存,以提高 搜索安装软件的速度# yum makecache

主机名修改

hostnamectl --staticset-hostname rhels7-docker

一、安装docker

因国内访问docker官网速度问题,这里使用国内的加速镜像 daocloud.io

curl -sSL https://get.daocloud.io/docker | sh

安装过程将会创建一个用户组 docker

查看docker版本

docker version

启动docker,并查看状态

systemctl start docker.servicesystemctl status docker.service

显示系统信息(前提:docker服务处于启动状态)

docker info

二、拉取centos镜像

docker pull daocloud.io/library/centos:centos7

三、启动镜像

1、先查看本地镜像

docker images

如下:

说明:centos是安装完hadoop后的镜像,daocloud.io/library/centos是刚刚拉取的,下面的操作都是基于此进行的

2、启动

docker run -h master --dns=192.168.128.1 -it daocloud.io/library/centos:centos7

说明:

-h master #指定主机名

--dns=192.168.128.1 #因人而异,配置错误将影响后期软件安装

-it #以交互模式启动

具体可docker run --help查看


四、安装必要软件及配置

1、安装基础软件

yum install -y wget vim openssh-server openssh-clients net-tools

说明: netstat, ifconfig命令包含在net-tools包中

安装完后并不会启动sshd服务,容器是被docker管理的,无法使用一些系统命令,要启动sshd需要执行如下命令:

/usr/sbin/sshd -D &

注意:sshd服务是hadoop必须的,在此通过脚本实现启动容器就运行sshd

vi /root/run.sh内容#!/bin/bash/usr/sbin/sshd -D赋权chmod +x /root/run.sh

2、网络配置

docker容器通过桥接与外部通信,不想每次启动容器都要指定dns

修改默认dns

2.1修改宿主机配置文件 /etc/default/docker

DOCKER_NETWORK_OPTIONS="--dns=192.168.128.1"

2.2修改宿主机配置文件 /lib/systemd/system/docker.service

[Service]EnvironmentFile=-/etc/default/dockerExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \                $DOCKER_NETWORK_OPTIONS

详见:http://docs.master.dockerproject.org/engine/admin/systemd/

重启宿主机docker服务

systemctl daemon-reloadsystemctl restart docker.service#使用这个命令可以查看 docker 的启动命令是否生效ps -ef | grep docker

root 2415 1 0 14:41 ? 00:00:10 /usr/bin/docker daemon -H fd:// --dns=192.168.128.1
root 2419 2415 0 14:41 ? 00:00:01 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m

3、安装jdk8

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.tar.gzmkdir /usr/javatar zxf jdk-8u91-linux-x64.tar.gz -C /usr/javaecho 'export JAVA_HOME=/usr/java/jdk1.8.0_91' >> /etc/bashrcecho 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/bashrcecho 'export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/bashrcsource /etc/bashrc

4、安装hadoop

4.1 安装hadoop,并配置环境变量

wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gzmkdir /usr/local/hadooptar zxf hadoop-2.7.2.tar.gz -C /usr/local/hadoopecho 'export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2' >> /etc/bashrcecho 'export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop' >> /etc/bashrcecho 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/bashrcsource /etc/bashrc

4.2 配置hadoop

在HADOOP_HOME目录下创建如下目录

  • tmp:临时目录

  • namenode:NameNode 存放目录

  • datanode:DataNode 存放目录

切换到HADOOP_CONFIG_HOME目录

cp mapred-site.xml.template mapred-site.xml

配置 core-site.xml

      hadoop.tmp.dir    /usr/local/hadoop/hadoop-2.7.2/tmp    A base for other temporary dirctories.        fs.default.name    hdfs://master:9000    true    The name of the default file system.    A URI whose scheme and authority determine the FileSystem implemntation.    The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implemnetation class.    The uri's authority is used to determine the host, port, etc. for a filesystem.  

配置hdfs-site.xml

      dfs.replication    2    true    Default block replication.    The actual number of replications can be specified when the file is created.    The default is used if replication is not specified in create time.            dfs.namenode.name.dir    /usr/local/hadoop/hadoop-2.7.2/namenode    true        dfs.datenode.data.dir    /usr/local/hadoop/hadoop-2.7.2/datanode    true  

配置mapred-site.xml

      maperd.job.tracker    master:9001    The host and port that the MapReduce job tracker runs at.    IF "local", then jobs are run in-process as a single map and reduce task  

4.3 配置ssh免密码登录

ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''    ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ''

然后修改master容器/etc/ssh/sshd_config文件

UsePAM yes 改为 UsePAM no
UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no

[root@b5926410fe60 /]# sed -i "s/#UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config[root@b5926410fe60 /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config修改完后,重新启动sshd[root@b5926410fe60 /]# /usr/sbin/sshd -D

4.4 修改容器root密码

passwd root

5、保存该docker容器container

docker commit -m "hadoop installed" 690a57e02578 centos:hadoop

删除多余容器

docker rm 

说明:690a57e02578 为container_id,因人而异,可通过docker ps查看

保存完成后,可通过docker images查看本地镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
centos hadoop b01079411e19 45 seconds ago 1.434 GB
daocloud.io/library/centos centos7 ea08fb8c4ba5 7 days ago 196.8 MB


五、启动hadoop

说明:关键因素1、sshd服务,2、/etc/hosts配置到master节点的映射

修改容器的/root/run.sh,容器ip默认从172.17.0.2开始分配,3个节点,最后一个启动master节点,故能确定masterip为172.17.0.4

#!/bin/bashecho '172.17.0.4    master' >> /etc/hosts/usr/sbing/sshd -D

另:在宿主机上也可根据container_id用docker inspect :查看容器详细信息(输出为Json)如:ip、mac、hostname等

docker inspect -f '{{ .NetworkSettings.IPAddress }}' 690a57e02578docker inspect -f '{{ .NetworkSettings.MacAddress }}' 690a57e02578docker inspect -f '{{ .Config.Hostname }}' 690a57e02578

1、基于新镜像(centos:hadoop)运行启动3个容器

docker run -d -p 10012:22 --name slave1 centos:hadoop /root/run.shdocker run -d -p 10022:22 --name slave2 centos:hadoop /root/run.shdocker run -d -p 10002:22 --name master -h master -P --link slave1:slave1 --link slave2:slave2 centos:hadoop /root/run.sh

说明:-p参数指定容器22端口分别映射到宿主机端口,本地可通过ssh访问宿主机10002/10012/10022端口连接到3个容器中

2、启动hadoop

2.1 连入master容器

docker exec -it 175c3129e021 /bin/bash

2.2 格式化namenode

hdfs namenode -format

显示如下信息,表示格式化成功

16/07/09 08:12:36 INFO common.Storage: Storage directory /usr/local/hadoop/hadoop-2.7.2/namenode has been successfully formatted.
16/07/09 08:12:36 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
16/07/09 08:12:36 INFO util.ExitUtil: Exiting with status 0

2.3 启动hadoop

因已配置好环境变量,进入容器后,可直接运行

start-all.sh

使用jps查看进程

# jps163 NameNode675 NodeManager1316 Jps581 ResourceManager279 DataNode429 SecondaryNameNode

六、宿主机配置iptables实现端口转发

转发方向:容器端口50070 <---> 宿主机50070

在宿主机执行

iptables -t nat -A PREROUTING -d 192.168.128.130 -p tcp --dport 50070 -j DNAT --to-destination 172.17.0.4:50070

说明:192.168.128.130 为宿主机,172.17.0.4为master容器

至此,本地即可访问虚拟机(或说宿主机)上容器中的hadoop集群

感谢你能够认真阅读完这篇文章,希望小编分享的"vmware虚拟机redhat7.2下docker容器怎么安装hadoop"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

容器 配置 宿主 宿主机 镜像 目录 服务 命令 端口 软件 信息 文件 篇文章 节点 可通 运行 因人而异 主机 变量 密码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国互联网科技工作委员会毛军 互联网科技活动banner 科技平台互联网 苏州互联网科技贷款公司 互联网科技小额贷款 顺网科技2021年互联网排名 山东吉时兔互联网科技有限公司 卫星互联网科技股票 深圳市运趣互联网科技有限公司 北京三清互联网科技 成都互联网科技公司100强 互联网科技教育视频 受益于互联网科技的高速发展 米聚互联网科技南京有限公司排面 互联网科技实习生岗位 互联网领先科技宣传片 中国新注册互联网科技 广州智享互联网科技 云南互联网科技学费 中国互联网公司的科技投入 百单网互联网科技有限公司怎么样 互联网科技网 互联网科技视频 海南科技产业互联网平台 移动互联网科技股 汽车互联网创新科技园 广州梦谷互联网科技有限公司领导 广州三三互联网科技有限公司 玉溪新华互联网科技怎么选 上海互联网科技园景观
0