博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 下 LXD 容器搭建 Hadoop 集群
阅读量:5297 次
发布时间:2019-06-14

本文共 6112 字,大约阅读时间需要 20 分钟。

配置要求

  • 主机内存 4GB 。
  • 磁盘 100 GB 以上。
  • HOST 机安装常用 Linux 发行版。

Linux Container ( LXD )

以主机 ubuntu 16.04 为例。

  • 安装 LXD 。
    $ sudo apt-get install lxd$ 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/bashroot@master# apt-get updateroot@master# apt-get upgrade -y
  • 配置环境,由于 LXD 在创建实例时,就设置好了主机名,禁用了防火墙,同时 LXD 的网络模块为每台虚拟主机做了动态主机映射。因此下面这样是 OK 的。
    $ hostnameArch$ lxc exec master -- /bin/bashroot@Master:~# ping ArchPING 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.020 ms64 bytes from rain-mark (127.0.1.1): icmp_seq=2 ttl=64 time=0.031 ms^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/bashroot@master# tar xf jdk-8u111-linux-x64.tar.gz -C /usr/localroot@master# echo "export JAVA_HOME=/usr/local/jdk1.8.0_111" >> ~/.bashrcroot@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/bashroot@master# mkdir -p /home/root/HD_dataroot@master# tar xf hadoop-2.7.3.tar.gz -C /usr/localroot@master# cd /usr/local/hadoop-2.7.3root@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/core-site.xml
    hadoop.tmp.dir
    /home/root/HD_data
    fs.defaultFS
    hdfs://master:8020
    EOFroot@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/yarn-site.xml
    yarn.resourcemanager.hostname
    master
    yarn.nodemanager.aux-services
    mapreduce_shuffle
    EOFroot@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/mapred-site.xml
    mapreduce.framework.name
    yarn
    EOFroot@master:/usr/local/hadoop-2.7.3# ./bin/hdfs namenode -formatroot@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/bashroot@master# cd /usr/local/hadoop-2.7.3root@master:/usr/local/hadoop-2.7.3# ./sbin/hadoop-daemon.sh start namenodestarting namenode, logging to /usr/local/hadoop-2.7.3/logs/hadoop-root-namenode-master.outroot@master:/usr/local/hadoop-2.7.3# ./sbin/yarn-daemon.sh start resourcemanager starting resourcemanager, logging to /usr/local/hadoop-2.7.3/logs/yarn-root-resourcemanager-master.outroot@master:/usr/local/hadoop-2.7.3# /usr/local/jdk1.8.0_111/bin/jps506 NameNode604 ResourceManager829 Jpsroot@master:/usr/local/hadoop-2.7.3# exit$ lxc exec slave0 -- /bin/bashroot@slave0:~# cd /usr/local/hadoop-2.7.3/root@slave0:/usr/local/hadoop-2.7.3# ./sbin/hadoop-daemon.sh start datanodestarting datanode, logging to /usr/local/hadoop-2.7.3/logs/hadoop-root-datanode-slave0.outroot@slave0:/usr/local/hadoop-2.7.3# ./sbin/yarn-daemon.sh start nodemanagerstarting nodemanager, logging to /usr/local/hadoop-2.7.3/logs/yarn-root-nodemanager-slave0.outroot@slave0:/usr/local/hadoop-2.7.3# /usr/local/jdk1.8.0_111/bin/jps 433 DataNode538 NodeManager670 Jpsroot@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 页面我们也能看到多少个节点在运行。

 

总 结

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


原创文章,转载请注明出处,否则必究相关责任!  

转载于:https://www.cnblogs.com/rain-blog/p/how-to-setup-hadoop-cluster-with-lxd.html

你可能感兴趣的文章
Web第六周作业:position.fixed vs sticky
查看>>
Centos7防火墙操作
查看>>
Quartz.net配置文件实例及cron表达式详解
查看>>
HDU 4513 吉哥系列故事——完美队形II
查看>>
Apache PHP 安装问题 (SUSE Linux)
查看>>
Aptana插件安装、配置
查看>>
分子量 UVA 1586
查看>>
重建oracle em(转)
查看>>
二分图匹配的匈牙利算法
查看>>
Luogu P5008 逛庭院
查看>>
WCF http net.tcp 多协议 设计模式 3
查看>>
为IIS Express添加MIME映射
查看>>
【Spring】Spring之依赖注入(DI)传递参数的方式
查看>>
思维导图——数字证书的工作流程
查看>>
在Linux中安装JDK和IDEA
查看>>
Vue事件 定义方法执行方法 获取数据 改变数据 执行方法传值 以及事件对象
查看>>
关于处理账户安全问题时的发现的几个验证码问题
查看>>
NYoj-119-士兵杀敌(3)-RMQ算法
查看>>
C# 反射(转)
查看>>
java初学一
查看>>