lxd linux系统视频教程,Linux 下 LXD 容器搭建 Hadoop 集群

配置要求

主机内存 4GB 。

磁盘 100 GB 以上。

HOST 机安装常用 Linux 发行版。

Linux Container ( LXD )

以主机 Ubuntu 16.04 为例。

安装 LXD 。

$ sudo apt-get installlxd

$ newgrp lxd

$sudo lxd init

查看可用的镜像源,如果使用默认的 image ,可以跳过下面两步,直接进入后面的 launch 。

$ lxc remote list

选取上一步喜欢的 image ,复制链接,并在下面添加该镜像源。

$ lxc remote add images

现在可以获取并加载镜像了。

$ lxc launch :# images_name 是镜像源名称,就是上一步取名的 images ,是什么可以自己取。

# version 是镜像的版本。

# host_name 是欲创建的实例的主机名。

# 以用默认镜像源,搭建 Hadoop 为例,这里应该是:

$ lxc launch ubuntu-daily:16.04 master

OK ,实例已经开始在运行了。

$ lxc list+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |

+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

| master | RUNNING | 10.71.16.37 (eth0) | fd16:e204:21d5:5295:216:3eff:fec9:dd16 (eth0) | PERSISTENT | 0 |

+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

此时可以看到只有 master 节点在运行。

让我们进入容器中的 ubuntu 。

$ lxc exec master -- /bin/bash

如果成功进入,恭喜!第一步迈开了。

Hadoop 集群

更新系统。

$ lxc exec master -- /bin/bash

root@master# apt-get update

root@master# apt-get upgrade -y

配置环境,由于 LXD 在创建实例时,就设置好了主机名,禁用了防火墙,同时 LXD 的网络模块为每台虚拟主机做了动态主机映射。因此下面这样是 OK 的。

$ hostnameArch

$ lxc exec master-- /bin/bash

root@Master:~# pingArch

PING Arch (127.0.1.1) 56(84) bytes of data.64 bytes from rain-mark (127.0.1.1): icmp_seq=1 ttl=64 time=0.020ms64 bytes from rain-mark (127.0.1.1): icmp_seq=2 ttl=64 time=0.031ms^C

我们在 master 节点配置好环境,利用 LXD 容器克隆,复制出多个节点。每个节点间可以直接做基于 hostname 的网络访问。

配置 Java 环境。

$ lxc file push ~/Downloads/jdk-8u111-linux-x64.tar.gz master/root/jdk-8u111-linux-x64.tar.gz # 将 HOST 机上的文件 push 进虚拟机。

$ lxc exec master-- /bin/bash

root@master#tar xf jdk-8u111-linux-x64.tar.gz -C /usr/local

root@master#echo "export JAVA_HOME=/usr/local/jdk1.8.0_111" >> ~/.bashrc

root@master# exit

配置 Hadoop 。

$ lxc file push ~/Downloads/hadoop-2.7.3.tar.gz master/root/hadoop-2.7.3.tar.gz

$ lxc exec master-- /bin/bash

root@master#mkdir -p /home/root/HD_data

root@master#tar xf hadoop-2.7.3.tar.gz -C /usr/local

root@master# cd/usr/local/hadoop-2.7.3root@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/core-site.xml<?xml version="1.0" encoding="UTF-8"?>

hadoop.tmp.dir

/home/root/HD_data

fs.defaultFS

hdfs://master:8020

EOF

root@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/yarn-site.xml<?xml version="1.0"?>

yarn.resourcemanager.hostname

master

yarn.nodemanager.aux-services

mapreduce_shuffle

EOF

root@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/mapred-site.xml<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

mapreduce.framework.name

yarn

EOF

root@master:/usr/local/hadoop-2.7.3# ./bin/hdfs namenode -format

root@master:/usr/local/hadoop-2.7.3# exit

至此, Hadoop 基本配置文件已经配好,接下来我们 clone 出两个 slave 节点。

$ lxc copy master slave0

$ lxc start slave0

$ lxc copy master slave1

$ lxc start slave1

OK ,现在,两个 slave 节点和 master 一样,我们免去了重复配置的麻烦。

启动 Hadoop 集群。

$ lxc exec master -- /bin/bash

root@master# cd/usr/local/hadoop-2.7.3root@master:/usr/local/hadoop-2.7.3# ./sbin/hadoop-daemon.shstart namenode

starting namenode, logging to/usr/local/hadoop-2.7.3/logs/hadoop-root-namenode-master.out

root@master:/usr/local/hadoop-2.7.3# ./sbin/yarn-daemon.shstart resourcemanager

starting resourcemanager, logging to/usr/local/hadoop-2.7.3/logs/yarn-root-resourcemanager-master.out

root@master:/usr/local/hadoop-2.7.3# /usr/local/jdk1.8.0_111/bin/jps506NameNode604ResourceManager829Jps

root@master:/usr/local/hadoop-2.7.3# exit

$ lxc exec slave0-- /bin/bash

root@slave0:~# cd /usr/local/hadoop-2.7.3/root@slave0:/usr/local/hadoop-2.7.3# ./sbin/hadoop-daemon.shstart datanode

starting datanode, logging to/usr/local/hadoop-2.7.3/logs/hadoop-root-datanode-slave0.out

root@slave0:/usr/local/hadoop-2.7.3# ./sbin/yarn-daemon.shstart nodemanager

starting nodemanager, logging to/usr/local/hadoop-2.7.3/logs/yarn-root-nodemanager-slave0.out

root@slave0:/usr/local/hadoop-2.7.3# /usr/local/jdk1.8.0_111/bin/jps433DataNode538NodeManager670Jps

root@slave0:/usr/local/hadoop-2.7.3# exit

# 需要对 slave1 同样启动 datanode 以及 nodemanager 。

至此,集群已经搭建完毕!我们可以通过 HOST 的浏览器看到集群的状态。

查看各个节点状态。

$ lxc list+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |

+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

| master | RUNNING | 10.71.16.37 (eth0) | fd16:e204:21d5:5295:216:3eff:fec9:dd16 (eth0) | PERSISTENT | 0 |

+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

| slave0 | RUNNING | 10.71.16.22 (eth0) | fd16:e204:21d5:5295:216:3eff:fe8e:8e57 (eth0) | PERSISTENT | 0 |

+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

| slave1 | RUNNING | 10.71.16.31 (eth0) | fd16:e204:21d5:5295:216:3eff:fe5a:ef1 (eth0) | PERSISTENT | 0 |

+--------+---------+--------------------+-----------------------------------------------+------------+-----------+

OK , 主机浏览器输入 master 节点 IP:50070 可以看到 HDFS 状态,以及 IP:8088 可以看到 Yarn 信息。在 Web 页面我们也能看到多少个节点在运行。

145f6f34a7fffc08d917943741caa61a.png

ad9ffaddbcec8544fad082e2d116d5b3.png

554217d88478a9aa7131bae3d976700b.png

总 结

基于 LXD 的虚拟化容器,我们可以很方便的、很节约资源的在 Linux 主机下进行 3 节点甚至更多节点的 Hadoop 集群搭建练习。非常利于硬件资源不足的学生、老师进行演示。更多关于 LXD 的资源,以及 Hadoop 的资源,请参考各自官方文档。

下面关于Hadoop的文章您也可能喜欢,不妨看看:

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值