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

Docker安装Hadoop集群

212次阅读
没有评论

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

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 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm 

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm 

Ubuntu 使用 VNC 运行基于 Docker 的桌面系统  http://www.linuxidc.com/Linux/2015-08/121170.htm

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm 

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm 

在 Ubuntu Trusty 14.04 (LTS) (64-bit) 安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm 

Docker 的详细介绍 :请点这里
Docker 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-08/121439.htm

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