Linux 下 LXD 容器搭建 Hadoop 集群

配置要求

  • 主机内存 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
    [email protected]# apt-get update
    [email protected]# apt-get upgrade -y
  • 配置环境,由于 LXD 在创建实例时,就设置好了主机名,禁用了防火墙,同时 LXD 的网络模块为每台虚拟主机做了动态主机映射。因此下面这样是 OK 的。

    $ hostname
    Arch
    $ lxc exec master -- /bin/bash
    [email protected]:~# 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
    [email protected]# tar xf jdk-8u111-linux-x64.tar.gz -C /usr/local
    [email protected]# echo "export JAVA_HOME=/usr/local/jdk1.8.0_111" >> ~/.bashrc
    [email protected]# 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
    [email protected]# mkdir -p /home/root/HD_data
    [email protected]# tar xf hadoop-2.7.3.tar.gz -C /usr/local
    [email protected]# cd /usr/local/hadoop-2.7.3
    
    [email protected]:/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
    
    [email protected]:/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
    
    [email protected]:/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
    
    [email protected]:/usr/local/hadoop-2.7.3# ./bin/hdfs namenode -format
    [email protected]:/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
    [email protected]# cd /usr/local/hadoop-2.7.3
    [email protected]:/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
    [email protected]:/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
    [email protected]:/usr/local/hadoop-2.7.3# /usr/local/jdk1.8.0_111/bin/jps
    506 NameNode
    604 ResourceManager
    829 Jps
    [email protected]:/usr/local/hadoop-2.7.3# exit
    
    $ lxc exec slave0 -- /bin/bash
    [email protected]:~# cd /usr/local/hadoop-2.7.3/
    [email protected]:/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
    [email protected]:/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
    [email protected]:/usr/local/hadoop-2.7.3# /usr/local/jdk1.8.0_111/bin/jps
    433 DataNode
    538 NodeManager
    670 Jps
    [email protected]:/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 的资源,请参考各自官方文档。



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

时间: 2024-11-03 05:43:03

Linux 下 LXD 容器搭建 Hadoop 集群的相关文章

Centos5.6下利用Ambari搭建Hadoop集群(Hotonworks框架)

 写在前面: 很长时间没在CSDN上写博客了,最近两个月公司计划要搞大数据,而我们的技术不够,所以这段时间主要进行Hadoop的相关技术学习及储备.废话不多说,下面进入主题,本次主要讨论在Centos5.6下通过Ambari进行Hadoop集群的安装(基于Hotonworks框架). 一.Centos安装(已装了系统的可以跳过此步) 1.    把光盘放入光驱中重新启动电脑,让光盘引导来安装CentOS 5.6系统; 上图为CentOS的安装启动界面,如果想用文本方式安装,就输入linux te

Linux下bc平台搭建安装集群版Redis

之前bc平台搭建[企鹅21717-93408]安装了单机的Redis,这次安装一个Redis集群.集群定义: 多个业务单元一同工作,且每个业务单元都是相同的.集群特点: 当集群中业务单元大于等于1/2个凉了的时候,这个集群就不能再使用了,经过计算,当集群数为3的时候,整体down的几率最低一主一备模式,给每一个业务单元创建一个备用业务单元,原来的业务单元称作master,备用的称作slave.集群和伪集群: 集群:每一个业务单元在单独的服务器上伪集群:所有的业务单元都在同一个服务器上,用端口号来

搭建hadoop集群的linux环境准备

1.修改主机名: 在 root 账号下用命令:vi /etc/sysconfig/network 或sudo vi /etc/sysconfig/network 2.设置系统默认启动级别 在 root 账号下输入 vi /etc/inittab  级别改成3 各启动级别代表含义如下: 0 关机 1 单用户系统,不需要登陆 2 多用户系统但不支持NFS,命令行模式登陆 3 完整多用户模式,命令行模式登陆 4 未定义 5 X11图形模式,图形模式登陆 6.重启 3.配置 hadoop 用户 sudo

用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(下)-搭建Hadoop集群

上篇:用Docker在一台笔记本电脑上搭建一个具有10个节点7种角色的Hadoop集群(上)-快速上手Docker 上篇介绍了快速上手Docker部分,下面接着介绍搭建Hadoop集群部分. 六.搭建Hadoop伪分布模式 我们先用前面创建的这个容器来搭建Hadoop伪分布模式做测试,测试成功后再搭建完全分布式集群. 1.SSH这个centos容器可以看做是一个非常精简的系统,很多功能没有,需要自己安装.Hadoop需要SSH,但容器没有自带,需要我们安装.①安装SSH # yum -y ins

搭建Hadoop集群 (三)

通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种Debug方式 Hadoop在Eclipse上的Debug方式 一般来说, Debug最多的应用场景是调试MR中的代码逻辑, 还有部分是调试main方法中的某些代码逻辑. 无论是Standalone, Pesudo-Distributed, 还是Fully-Distributed Mode, 都可以d

使用vmware搭建hadoop集群

摘要 本文旨在使用Vmware搭建Hadoop集群,如果你使用的是多台独立的.已安装linux操作系统的计算机搭建Hadoop集群的话,请直接从安装Hadoop 开始 阅读须知 阅读此文之前你需要掌握以下知识,以免文中部分用语令你产生疑惑 熟练使用鼠标和键盘 在windows操作系统下运行.exe文件 访问网页并下载内容 在windows操作系统下能够定位到本地资源所在文件夹 了解ubuntu是linux的一种发行版,如果你不无法理解发行版的概念,可以简单理解成ubuntu是一种linux. 了

Hadoop入门进阶步步高(五)-搭建Hadoop集群

五.搭建Hadoop集群 上面的步骤,确认了单机可以执行Hadoop的伪分布执行,真正的分布式执行无非也就是多几台slave机器而已,配置方面的有一点点区别,配置起来就非常简单了. 1.准备三台服务器 192.168.56.101 192.168.56.102 192.168.56.103 在每台机器的/etc/hosts中都将ip及hostname给映射上: 192.168.56.101  nginx1 192.168.56.102  nginx2 192.168.56.103  nginx3

vmware搭建hadoop集群完整过程笔记

搭建hadoop集群完整过程笔记 一.虚拟机和操作系统 环境:ubuntu14+hadoop2.6+jdk1.8 虚拟机:vmware12 二.安装步骤: 先在一台机器上配置好jdk和hadoop: 1.新建一个hadoop用户 用命令:adduser hadoop 2.为了让hadoop用户有sudo的权限: 用root用户打开sudors文件添加红色框里面的内容: 打开文件: 添加内容: 3.配置jdk,我把jdk的压缩包放在了hadoop的用户目录下,然后也解压在当前目录下 修改配置文件(

Centos6下安装伪分布式Hadoop集群

Centos6下安装伪分布式hadoop集群,选取的hadoop版本是apache下的hadoop2.7.1,在一台linux服务器上安装hadoop后,同时拥有namenode,datanode和secondarynamenode等节点的功能,下面简单安装下. 前置准备 主要涉及防火墙关闭.jdk安装.主机名修改.ip映射.免密登录设置等. 关闭防火墙 有临时和永久,这里使用永久关闭的方式. # 临时关闭 [[email protected] ~]# service iptables stop