2019独角兽企业重金招聘Python工程师标准>>>

系统准备:

系统安装及配置    【略】详见:http://www.osyunwei.com/archives/7702.html

ip配置:

# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=dadee176-cc84-43f4-9ea9-e30a30ca3abf
DEVICE=eno16777736
ONBOOT=yes
#20160708 add
IPADDR0=192.168.128.130
PREFIXO0=24
GATEWAY0=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.2
baseurl=file:///media/cdrom
enabled=1
gpgcheck=1
gpgkey=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.service
systemctl 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/docker
ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS \$DOCKER_NETWORK_OPTIONS

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

重启宿主机docker服务

systemctl daemon-reload
systemctl 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.gz
mkdir /usr/java
tar zxf jdk-8u91-linux-x64.tar.gz -C /usr/java
echo 'export JAVA_HOME=/usr/java/jdk1.8.0_91' >> /etc/bashrc
echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/bashrc
echo 'export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar' >> /etc/bashrc
source /etc/bashrc

4、安装hadoop

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

wget http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
mkdir /usr/local/hadoop
tar zxf hadoop-2.7.2.tar.gz -C /usr/local/hadoop
echo 'export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.2' >> /etc/bashrc
echo 'export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop' >> /etc/bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> /etc/bashrc
source /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

<configuration><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop/hadoop-2.7.2/tmp</value><description>A base for other temporary dirctories.</description></property><property><name>fs.default.name</name><value>hdfs://master:9000</value><final>true</final><description>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.</description></property>
</configuration>

配置hdfs-site.xml

<configuration><property><name>dfs.replication</name><value>2</value><final>true</final><description>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.</description></property><property><name>dfs.namenode.name.dir</name><value>/usr/local/hadoop/hadoop-2.7.2/namenode</value><final>true</final></property><property><name>dfs.datenode.data.dir</name><value>/usr/local/hadoop/hadoop-2.7.2/datanode</value><final>true</final></property>
</configuration>

配置mapred-site.xml

<configuration><property><name>maperd.job.tracker</name><value>master:9001</value><description>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</description></property>
</configuration>

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 <container_id>

说明: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/bash
echo '172.17.0.4    master' >> /etc/hosts
/usr/sbing/sshd -D

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

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

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

docker run -d -p 10012:22 --name slave1 centos:hadoop /root/run.sh
docker run -d -p 10022:22 --name slave2 centos:hadoop /root/run.sh
docker 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查看进程

# jps
163 NameNode
675 NodeManager
1316 Jps
581 ResourceManager
279 DataNode
429 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集群


参考并修正:https://www.gaoyuexiang.cn/archives/389
下一步:理清docker网络

转载于:https://my.oschina.net/u/614290/blog/708943

vmware虚拟机redhat7.2下docker容器安装hadoop相关推荐

  1. Centos 下Docker容器安装vim

    背景 使用docker来安装虚拟机可以提升安装效率和开发效率. 本次在安装了jenkins之后,突然忘记密码了. 需要修改config.xml文件来重新登录 进去之后发现死活不能使用vim 用yum安 ...

  2. Linux下的docker容器安装教程

    Linux下的docker容器安装教程 一.初始环境配置 1.yum仓库配置 2.检查yum仓库 3.关闭防火墙和selinux 二.开启内核的流量转发 三.安装docker 1.配置docker相关 ...

  3. VMware虚拟机里centos7下安装mysql5.6并授权远程连接Navicat

    正文内容 这节来安装Mysql5.6,并远程授权连接本地windows的Navicat,可以根据以下步骤安装.此文章为自己收藏,必要时拿出来直接用的,有需要的友友可以查看查看的.文章图片有借助于网络的 ...

  4. Mac系统下docker容器无法使用--net host共享宿主机端口的解决方案

    文章目录 背景 解决过程一 分析 Mac系统下docker容器无法使用--net host共享宿主机端口的原因 docker的网络配置 host模式 overlay模式 macvlan模式 bridg ...

  5. Linux、Windows、Mac下Docker的安装与使用

    Linux.Windows.Mac下Docker的安装与使用 一.Linux下的安装 二.Windows与Mac下的安装 三.Docker的使用 一.Linux下的安装 这里以Centos 7为例,首 ...

  6. Docker容器技术与应用(项目2 Docker容器安装和使用)

    项目2 Docker容器安装和使用 下面重点介绍Docker的安装,镜像Image.镜像仓库Registry和容器Container的使用和管理. 图2.1 Docker镜像.容器和仓库之间的主要操作 ...

  7. 『中级篇』docker容器安装wordpress(37)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『中级篇』docker容器安装wordpress(37) 第一节的时候我就部署过wordpress,可能很多老铁一头雾水不知道 ...

  8. Nginx策略搭配Tomcat集群实操手册(二进制安装和Docker容器安装)

    临头一砖--代理服务器Nginx Nginx策略搭配Tomcat集群实操手册(二进制安装和Docker容器安装) Keepalived搭配Nginx的高可用策略验证和实操 Keepalived搭配Ng ...

  9. Docker容器安装Vim

    默认情况下Docker容器是没有安装vim文本编辑软件的,一般的修改可以用echo来实现.如:echo "alias ll='ls -l'" >> ~/.bashrc, ...

最新文章

  1. 背包思想计算方案的总数(货币系统)
  2. Visual Studio 2012 C# ActiveX控件开发总结
  3. 数据vs.算法,究竟谁更重要
  4. 腾讯邮件服务器发送慢,通过腾讯邮件服务器发送HTML邮件
  5. DNS解析域名的过程
  6. 入门实践,Python数据分析
  7. 如何在支付宝成为增加个人服务器,支付宝支付,服务器如何生成支付订单
  8. 怎么自动选中select中所有option
  9. VC++中实现报警声音
  10. 中国互联网寒冬的根本原因是什么?
  11. win8计算机图标快捷键,Win8电脑关机快捷键图标设置方法
  12. for-earch迭代时的错误————java.util.ConcurrentModificationException
  13. dcmtk读取DICOM并进行体绘制渲染
  14. python存储16bit和32bit图像
  15. 创维电视android,当贝市场创维酷开专用版
  16. thinkpad笔记本 刷bios失败,被救回方法
  17. Blender 导出obj到 OpenGL
  18. “无实物尝百味”通过控制微电流刺激产生味觉—3.复位配网和电量报警实现篇
  19. 动态规划——数字三角形C语言
  20. 中国企业不给加拿大授权,加拿大运营商就不能用5G专利?纯属扯谈

热门文章

  1. 分分钟get「隔空传手」技能,网友:我想试试别的东西…
  2. 沈向洋,被微软“耽搁”的独角兽催化大师
  3. 祖传人像玩家,如何把AI秀出新高度
  4. Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
  5. 50、mysql基于mysql-proxy读写分离实战
  6. The Beam Model:Stream Tables翻译(上)
  7. 物联网技术周报第 145 期: ESP8266 和 IFTTT 自制 WiFi 智能秤
  8. OpenStack部署
  9. 如何让自己的开源库支持cocoapods?
  10. scala模式匹配match操作