阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux 下 LXD 容器搭建 Hadoop 集群

237次阅读
没有评论

共计 6227 个字符,预计需要花费 16 分钟才能阅读完成。

配置要求

  • 主机内存 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 <URL>
  • 现在可以获取并加载镜像了。
    $ lxc launch <images_name>:<version> <host_name>
    # 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 的。
    $ hostname
    Arch
    $ lxc exec master
    — /bin/bash
    root@Master:
    ~# ping Arch
    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.020 ms
    64 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/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.3
    
    root@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/core-site.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/root/HD_data</value>
        </property>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://master:8020</value>
        </property>
    </configuration>
    EOF
    
    root@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/yarn-site.xml
    <?xml version="1.0"?>
    
    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>master</value>
        </property>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    EOF
    
    root@master:/usr/local/hadoop-2.7.3# cat << EOF > etc/mapred-site.xml
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    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.3
    root@master:/usr/local/hadoop-2.7.3# ./sbin/hadoop-daemon.sh start 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.sh start 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/jps
    506 NameNode
    604 ResourceManager
    829 Jps
    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.sh start 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.sh start 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/jps 
    433 DataNode
    538 NodeManager
    670 Jps
    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 页面我们也能看到多少个节点在运行。

Linux 下 LXD 容器搭建 Hadoop 集群

Linux 下 LXD 容器搭建 Hadoop 集群

Linux 下 LXD 容器搭建 Hadoop 集群

总 结

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

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

Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程  http://www.linuxidc.com/Linux/2015-02/113487.htm

CentOS 6.3 下 Hadoop 伪分布式平台搭建  http://www.linuxidc.com/Linux/2016-11/136789.htm

Ubuntu 14.04 LTS 下安装 Hadoop 1.2.1(伪分布模式)http://www.linuxidc.com/Linux/2016-09/135406.htm

Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm

实战 CentOS 系统部署 Hadoop 集群服务 http://www.linuxidc.com/Linux/2016-11/137246.htm

Hadoop 2.6.0 HA 高可用集群配置详解  http://www.linuxidc.com/Linux/2016-08/134180.htm

Spark 1.5、Hadoop 2.7 集群环境搭建  http://www.linuxidc.com/Linux/2016-09/135067.htm

在 Ubuntu X64 上编译安装 Hadoop http://www.linuxidc.com/Linux/2016-12/138568.htm

CentOS 6.7 安装 Hadoop 2.7.3  http://www.linuxidc.com/Linux/2017-01/139089.htm

CentOS7+Hadoop2.5.2+Spark1.5.2 环境搭建  http://www.linuxidc.com/Linux/2017-01/139364.htm

更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143973.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6227字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中