docker安装hadoop集群
docker安装hadoop集群?图啥呢?不图啥,就是图好玩.本篇博客主要是来教大家如何搭建一个docker的hadoop集群.不要问
为什么我要做这么无聊的事情,答案你也许知道,因为没有女票.......
好了,不多说这些没有必要的东西了,首先,我们来安装docker.
一.docker的安装
sudo yum install -y docker-io
sudo wget https://get.docker.com/builds/Linux/x86_64/docker-latest -O /usr/bin/docker
我们来启动我们的docker:
sudo service docker start
开机也自启动docker
sudo chkconfig docker on
二.拉取一个镜像
如果我们要6.5的centos 版本,额,不要问我问什么用6.5的,因为宿主机是内核6.5的...
sudo docker pull insaneworks/centos
然后我们就可以去吃个饭喝壶茶了......反正你就就慢慢等吧.....
.......
ok,饭吃完了,我们来产生一个容器吧.
sudo docker run -it insaneworks/centos /bin/bash
ctrl+p ctrl+q可以帮助我们从容器返回宿主机.
sudo docker ps 可以查看运行的容器.
ok,我们不想要这个容器了,怎么办呢?
sudo docker stop b152861ef001
同时再把容器删除
sudo docker rm b152861ef001
三.制作一个hadoop镜像
这是这里最繁琐的过程,不过,我们可以分解来做.少年郎,我夹你杠哦,你会了这个,就再也不用担心hadoop
不会装了.走起!
sudo docker run -it -h master --name master insaneworks/centos /bin/bash
进入到容器里,我们第一步就是把gcc给我装了.
yum install -y gcc
装vim
yum install -y vim
装lrzsz
yum install -y lrzsz
装ssh:
yum -y install openssh-server
yum -y install openssh-clients
注意,这里我们要改一下ssh的一些配置:vim /etc/ssh/sshd_config
放开PermitEmptyPasswords no
更改UsePAM no
放开PermitRootLogin yes
启动sshd
service sshd start
然后我们要用到ssh密码设置
ssh-keygen -t rsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
这样完了后呢,我们ssh连自己试试
ssh master
不错,非常好使.
接下来我们把java给装了.
通过rz将java rpm包给传上去,好了,又该去喝一壶了........
rpm -ivh jdk-7u75-linux-x64.rpm
修改环境变量
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/java/jdk1.7.0_75
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
下面我们该装hadoop了,激动吧,呵呵,先把tar给装了先.
yum install -y tar
一样,我们用rz把hadoop的tar包传到容器内.事先埋个伏笔,之后会有一件很坑爹的事情,反正到时候你就知道了.
嗯......等的真是好漫长..........
咚咚哒哒呼噜娃.......咚咚哒哒呼噜娃.......
好了,解压:
tar zxvf hadoop-2.6.0.tar.gz
完美!
配置环境变量
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
然后又一件事情要做,这件事情看上去好像不用做,但老子试过n次,不做就是hadoop起不来.
vim hadoop-env.sh 和 yarn-env.sh 在开头添加如下环境变量(一定要添加切勿少了)
export JAVA_HOME=/usr/java/jdk1.7.0_75
哦,这个文件都在hadoop解压目录的etc中.
下面我们来写配置文件.
修改hadoop core-site.xml文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/songfy/hadoop-2.6.0/tmp</value>
</property>
</configuration>
修改hdfs-site.xml文件
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/songfy/hadoop-2.6.0/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/songfy/hadoop-2.6.0/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
修改mapred-site.xml文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
修改yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
</configuration>
在slaves文件中添加
slave1
slave2
slave3
似乎一切都好像搞定了,少年,别急,吓死你!
ldd /home/hadoop/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
然后你会看到:
/home/hadoop/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /home/hadoop/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0)
linux-vdso.so.1 => (0x00007fff24dbc000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ff8c6371000)
libc.so.6 => /lib64/libc.so.6 (0x00007ff8c5fdc000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff8c679b000)
人生是这样的无情,人生是这样的冷酷,之前有个小朋友问过我这个问题......我没有理,现在,然我亲手灭了这个问题!
不过大家可能明白了为什么我一上来就装个gcc了吧.
yum install -y wget
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/usr/local/glibc-2.14
make
make install
ln -sf /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
此时,ldd /home/hadoop/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
就没有任何问题了
linux-vdso.so.1 => (0x00007fff72b7c000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb996ce9000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb99695c000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb997113000
这样,我们的镜像就可以commit了
docker commit master songfy/hadoop
我们可以用docker images来查看镜像.
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
songfy/hadoop latest 311318c0a407 42 seconds ago 1.781 GB
insaneworks/centos latest 9d29fe7b2e52 9 days ago 121.1 MB
下面我们来启动hadoop集群
三.启动hadoop集群
docker rm master
sudo docker run -it -p 50070:50070 -p 19888:19888 -p 8088:8088 -h master --name master songfy/hadoop /bin/bash
sudo docker run -it -h slave1 --name slave1 songfy/hadoop /bin/bash
sudo docker run -it -h slave2 --name slave2 songfy/hadoop /bin/bash
sudo docker run -it -h slave3 --name slave3 songfy/hadoop /bin/bash
attach到每个节点上执行
source /etc/profile
service sshd start
接下来我们还要给每台机器配host
docker inspect --format='{{.NetworkSettings.IPAddress}}' master
这条语句可以查看ip
172.17.0.4 master
172.17.0.5 slave1
172.17.0.6 slave2
172.17.0.7 slave3
用scp将hosts文件分发到各个node中.
好了,我们终于要启动hadoop了.
hadoop namenode -format
/home/hadoop/hadoop-2.6.0/sbin/start-dfs.sh
/home/hadoop/hadoop-2.6.0/sbin/start-yarn.sh
用jps查看,发现都起来了.
下面我们简单来对hdfs操作一下.
hadoop fs -mkdir /input
hadoop fs -ls /
drwxr-xr-x - root supergroup 0 2015-08-09 09:09 /input
下面我们来运行一下大名鼎鼎的wordcount程序来看看.
hadoop fs -put /home/hadoop/hadoop-2.6.0/etc/hadoop/* /input/
hadoop jar /home/hadoop/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount /input/ /output/wordcount/
不要以为一下就成功了.我们发现事实上,程序并没有跑出来,查了下日志,看到:
2015-08-09 09:23:23,481 WARN org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.LeafQueue: Node : slave1:41978 does not have sufficient resource for request : {Priority: 0, Capability: <memory:2048, vCores:1>, # Containers: 1, Location: *, Relax Locality: true} node total capability : <memory:1024, vCores:8>
嗯,意思是内存不够,我们就分2G过去.
我们发现大名鼎鼎的hadoop运行的简直奇慢无比........所以说,当你机器多,你会跑的很快,如果是docker,就歇了吧.
当然,本人也试过多宿主机部署hadoop,不过因为没有那么多实体机,因此是在多个vmvare虚拟机上部署的docker hadoop集群.
这就是虚拟机上的云端hadoop........事实上,除了统计次数的时候,把其中一台宿主虚拟机跑跪以外,几乎没什么软用.......
好了,结果出来了,我们来看看:
policy 3
port 5
ports 2
ports. 2
potential 2
preferred 3
prefix. 1
present, 1
principal 4
principal. 1
printed 1
priorities. 1
priority 1
privileged 2
privileges 1
privileges. 1
properties 6
property 11
protocol 6
protocol, 2
不错....好玩吧.......下次我们再选一个有趣的主题吧,嗯,那就hive或者storm吧......当然本人并不可靠,
或许换成lda或者word2vec这种算法主题的,或者cuda异构计算也不一定,博主是个神经病,谁知道呐.
docker安装hadoop集群的更多相关文章
- Docker 安装Hadoop集群
资源准备:jdk1.8及hadoop2.7.3 链接:https://pan.baidu.com/s/1x8t1t2iY46jKkvNUBHZlGQ 提取码:g1gm 复制这段内容后打开百度网盘手机A ...
- Docker部署Hadoop集群
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...
- 使用Docker搭建Hadoop集群(伪分布式与完全分布式)
之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...
- 使用docker构建hadoop集群
docker的使用越来越普遍了,大家不知道docker的还需要进一步学习一下.这次咱们使用docker去进行hadoop集群的构建. 使用docker构建的好处真的很多,一台电脑上可以学习安装很多想做 ...
- 安装Hadoop集群的最快的软件
Quick Hadoop是一款安装Hadoop集群的桌面软件,只需要点两下鼠标,一分钟之内安装Hadoop到集群上,超快! 还在每台主机的Shell里一行一行地敲安装Hadoop的命令?别苦逼了! 用 ...
- CentOS7 搭建Ambari-Server,安装Hadoop集群(一)
2017-07-05:修正几处拼写错误,之前没发现,抱歉! 第一次在cnblogs上发表文章,效果肯定不会好,希望各位多包涵. 编写这个文档的背景是月中的时候,部门老大希望我们能够抽时间学习一下Had ...
- 通过ambari安装hadoop集群,ZT
通过ambari安装hadoop集群,ZT http://www.cnblogs.com/cenyuhai/p/3295635.html http://www.cnblogs.com/cenyuhai ...
- Linux上安装Hadoop集群(CentOS7+hadoop-2.8.0)--------hadoop环境的搭建
Linux上安装Hadoop集群(CentOS7+hadoop-2.8.0)------https://blog.csdn.net/pucao_cug/article/details/71698903 ...
- 安装hadoop集群--hdfs
安装hadoop集群--hdfs 大数据软件 链接:https://pan.baidu.com/s/1-3PYLHMgvvONawJq55hstQ 提取码:izqf 准备一台干净的虚拟机-centos ...
随机推荐
- POST和GET的详细解释以及区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...
- Python之路-基本数据类型
一.数据类型 1.数字 包含整型和浮点型,还有复数2.字符 长度,索引,切片也适用于列表的操作 移除空白 strip() 默认字符串前后的空格,制表符,换行符 strip(";") ...
- es suggest did you mean资料
term suggester 功能介绍 term suggester 根据提供的文档提供搜索关键词的建议,也就是关键词自动纠错.该链接介绍如何使用 term suggester 语法.term sug ...
- JavaScript 数组操作方法
这些数组的操作方法会改变原来的数组.在使用 Vue 或者 Angular 等框架的时候会非常实用,使用这些方法修改数组会触发视图的更新. Array.prototype.push 该方法可以在数组末尾 ...
- JavaWeb总结(六)—Session
一.Session的介绍 在Web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器 ...
- [转载]转载一篇好文章作为Java与面向对象之随感(3)
关于对象与引用之间的一些基本概念. 初学Java时,在很长一段时间里,总觉得基本概念很模糊.后来才知道,在许多Java书中,把对象和对象的引用混为一谈.可是,如果我分不清对象与对象引用, 那实在没法很 ...
- [原创] IAR7.10安装注册教程
代码开发简单化的趋势势不可挡,TI 公司推出的 IAR7.10 以上版本,集成代码库,方便初学者进行学习移植.本教程详细列出IAR7.10安装以及注册步骤,不足之处望多多交流. 好了进入正题. 第一, ...
- Jquery Validation 验证控件的使用说明
转载自:http://blog.csdn.net/huang100qi/article/details/52453970,做了一些简化及修改 下载地址:https://jqueryvalidation ...
- 利用 Forcing InnoDB Recovery 特性解决 MySQL 重启失败的问题
小明同学在本机上安装了 MySQL 5.7.17 配合项目进行开发,并且已经有了一部分重要数据.某天小明在开发的时候,需要出去一趟就直接把电脑关掉了,没有让 MySQL 正常关闭,重启 MySQL 的 ...
- Unity 相机的聚焦功能
摘要:本文原创,转载请注明出处 需求: 在游戏的任务编辑场景进行编辑的时候,摄像机需要在多个需要编辑的物体之间来回切换,如果只是用摄像机的移动旋转,对于相对位置较近的物体还好说,当相对位置过远的时候, ...