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:::3eff:fec9:dd16 (eth0) | PERSISTENT | |
+--------+---------+--------------------+-----------------------------------------------+------------+-----------+此时可以看到只有 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) () bytes of data.
bytes from rain-mark (127.0.1.1): icmp_seq= ttl= time=0.020 ms
bytes from rain-mark (127.0.1.1): icmp_seq= ttl= 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..tar.gz master/root/hadoop-2.7..tar.gz
$ lxc exec master -- /bin/bash
root@master# mkdir -p /home/root/HD_data
root@master# tar xf hadoop-2.7..tar.gz -C /usr/local
root@master# cd /usr/local/hadoop-2.7. root@master:/usr/local/hadoop-2.7.# 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.# 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.# 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.# ./bin/hdfs namenode -format
root@master:/usr/local/hadoop-2.7.# exit - 至此, Hadoop 基本配置文件已经配好,接下来我们 clone 出两个 slave 节点。
$ lxc copy master slave0
$ lxc start slave0
$ lxc copy master slave1
$ lxc start slave1OK ,现在,两个 slave 节点和 master 一样,我们免去了重复配置的麻烦。
- 启动 Hadoop 集群。
$ lxc exec master -- /bin/bash
root@master# cd /usr/local/hadoop-2.7.
root@master:/usr/local/hadoop-2.7.# ./sbin/hadoop-daemon.sh start namenode
starting namenode, logging to /usr/local/hadoop-2.7./logs/hadoop-root-namenode-master.out
root@master:/usr/local/hadoop-2.7.# ./sbin/yarn-daemon.sh start resourcemanager
starting resourcemanager, logging to /usr/local/hadoop-2.7./logs/yarn-root-resourcemanager-master.out
root@master:/usr/local/hadoop-2.7.# /usr/local/jdk1..0_111/bin/jps
NameNode
ResourceManager
Jps
root@master:/usr/local/hadoop-2.7.# exit $ lxc exec slave0 -- /bin/bash
root@slave0:~# cd /usr/local/hadoop-2.7./
root@slave0:/usr/local/hadoop-2.7.# ./sbin/hadoop-daemon.sh start datanode
starting datanode, logging to /usr/local/hadoop-2.7./logs/hadoop-root-datanode-slave0.out
root@slave0:/usr/local/hadoop-2.7.# ./sbin/yarn-daemon.sh start nodemanager
starting nodemanager, logging to /usr/local/hadoop-2.7./logs/yarn-root-nodemanager-slave0.out
root@slave0:/usr/local/hadoop-2.7.# /usr/local/jdk1..0_111/bin/jps
DataNode
NodeManager
Jps
root@slave0:/usr/local/hadoop-2.7.# exit # 需要对 slave1 同样启动 datanode 以及 nodemanager 。至此,集群已经搭建完毕!我们可以通过 HOST 的浏览器看到集群的状态。
- 查看各个节点状态。
$ lxc list
+--------+---------+--------------------+-----------------------------------------------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+--------+---------+--------------------+-----------------------------------------------+------------+-----------+
| master | RUNNING | 10.71.16.37 (eth0) | fd16:e204:21d5:::3eff:fec9:dd16 (eth0) | PERSISTENT | |
+--------+---------+--------------------+-----------------------------------------------+------------+-----------+
| slave0 | RUNNING | 10.71.16.22 (eth0) | fd16:e204:21d5:::3eff:fe8e:8e57 (eth0) | PERSISTENT | |
+--------+---------+--------------------+-----------------------------------------------+------------+-----------+
| slave1 | RUNNING | 10.71.16.31 (eth0) | fd16:e204:21d5:::3eff:fe5a:ef1 (eth0) | PERSISTENT | |
+--------+---------+--------------------+-----------------------------------------------+------------+-----------+OK , 主机浏览器输入 master 节点 IP:50070 可以看到 HDFS 状态,以及 IP:8088 可以看到 Yarn 信息。在 Web 页面我们也能看到多少个节点在运行。


总 结
基于 LXD 的虚拟化容器,我们可以很方便的、很节约资源的在 Linux 主机下进行 3 节点甚至更多节点的 Hadoop 集群搭建练习。非常利于硬件资源不足的学生、老师进行演示。更多关于 LXD 的资源,以及 Hadoop 的资源,请参考各自官方文档。
原创文章,转载请注明出处,否则必究相关责任!
Linux 下 LXD 容器搭建 Hadoop 集群的更多相关文章
- linux下利用httpd搭建tomcat集群,实现负载均衡
公司使用运营管理平台是单点tomcat,使用量大,或者导出较大的运营数据时,会造成平台不可用,现在需要搭建tomcat集群,调研后,决定使用apache的httpd来搭建tomcat集群.以下是搭建步 ...
- Linux下搭建Hadoop集群
本文地址: 1.前言 本文描述的是如何使用3台Hadoop节点搭建一个集群.本文中,使用的是三个Ubuntu虚拟机,并没有使用三台物理机.在使用物理机搭建Hadoop集群的时候,也可以参考本文.首先这 ...
- Linux 搭建Hadoop集群 成功
内容基于(自己的真是操作步骤编写) Linux 搭建Hadoop集群---Jdk配置 Linux 搭建Hadoop集群 ---SSH免密登陆 一:下载安装 Hadoop 1.1:下载指定的Hadoop ...
- 使用Windows Azure的VM安装和配置CDH搭建Hadoop集群
本文主要内容是使用Windows Azure的VIRTUAL MACHINES和NETWORKS服务安装CDH (Cloudera Distribution Including Apache Hado ...
- 搭建Hadoop集群 (三)
通过 搭建Hadoop集群 (二), 我们已经可以顺利运行自带的wordcount程序. 下面学习如何创建自己的Java应用, 放到Hadoop集群上运行, 并且可以通过debug来调试. 有多少种D ...
- 在搭建Hadoop集群环境时遇到的一些问题
最近在学习搭建hadoop集群环境,在搭建的过程中遇到很多问题,在这里做一些记录.1. SSH相关的问题 问题一: ssh: connect to host localhost port 22: Co ...
- 使用Docker搭建Hadoop集群(伪分布式与完全分布式)
之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...
- virtualbox 虚拟3台虚拟机搭建hadoop集群
用了这么久的hadoop,只会使用streaming接口跑任务,各种调优还不熟练,自定义inputformat , outputformat, partitioner 还不会写,于是干脆从头开始,自己 ...
- 搭建Hadoop集群 (一)
上面讲了如何搭建Hadoop的Standalone和Pseudo-Distributed Mode(搭建单节点Hadoop应用环境), 现在我们来搭建一个Fully-Distributed Mode的 ...
随机推荐
- VUE-008-通过路由 router.push 传递 query 参数(路由 path 识别,请求链接显示参数传递)
在前端页面表单列表修改时,经常需要在页面切换的时候,传递需要修改的表单内容,通常可通过路由进行表单参数的传递. 首先,配置页面跳转路由.在 router/index.js 中配置相应的页面跳转路由,如 ...
- 前端混淆--JavaScript Obfuscator
引言: 前端代码是直接暴漏在浏览器中的,很多web攻击都是通过直接debug业务逻辑找到漏洞进行攻击,另外还有些喜欢“不劳而获”的分子暴力盗取他人网页简单修改后用来获利,总体上来说就是前端的逻辑太容易 ...
- 20175201课下作业 MyCP
要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进 ...
- Oracle 11g R2性能优化 10046 event
作为SQL Trace的扩展功能,Oracle 10046 event(10046事件)是一个重要的调试事件,也可以说是系统性能分析时最重要的一个事件,它包含比SQL Trace更多的信息.但可惜的是 ...
- Sql题面试题
哪位大神会此题,请给出答案,十分感谢! 哪位大神会此题,请给出答案,十分感谢!
- Cocos Creator (webgl模式下怎么让canvas背景透明)
项目中构建出web-mobile包后,打开main.js 在main.js中加入如下两行即可让canvas变透明 cc.director.setClearColor(new cc.Color(0,0, ...
- Emmet:HTML/CSS代码快速编写神器教程
Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语法来生成代码,大大提高了HTML/CSS代码编写的速度,比如下面的演示: ...
- windows 中的类似于sudo的命令(在cmd中以另一个用户的身份运行命令)
linux中我们习惯用sudo命令来临时用另一个用户的身份执行命令. windows中,通常我们需要用管理员权限执行命令的时候通常是 右键->run as administrator. 用着键盘 ...
- CentOS 搭建git服务
git服务器的搭建是非常简单的. 1. 安装git yum install git 2. 创建用户git groupadd git adduser git -g git passwd git 3. 创 ...
- 网络库压力测试:mongols VS evpp
evpp是360出品的一个网络库,基于libevent,进行了许多改造,对c++11友好.据称比libevent性能要好. 到底有多好呢?360开发人员有自己的测试,信不信由你. evpp源码下有个h ...
