未加星标

Centos下docker搭建Hadoop集群

字体大小 | |
[大数据技术 所属分类 大数据技术 | 发布者 店小二05 | 时间 2018 | 作者 红领巾 ] 0人收藏点击收藏

随着业务发展需要,数据量的逐步提升,需要用到hadoop来处理一些数据,所以搭建一个Hadoop集群,搭建Hadoop集群需要多台主机,但是由于资源有限,所以刚好可以利用近些年比较火的docker来搭建,用docker搭建也有一个好处,就是一次构建多节点重复利用。在上服务器之前,现在自己的电脑里用虚拟机模拟一下,顺便可以做个记录,把可能遇到的坑先趟过去(谁叫我笔记本16G内存呢)。

第一步、安装Centos,部署docker

先从Centos官网载一个最小版的Centos7镜像,用VMWare安装,由于是最小版镜像所以装完之后有很多组件需要手动yum安装,(什么?为什么不装完全版的?我要是有几台刀片我也装啊!)

完成之后的第一步当然是换yum源:

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

安装完之后记得 yum makecache一下。由于是Minimal版,连最基本的网络工具都没有,所以全都开始手动安装:

yum install -y wget
yum install -y gcc

安装基本工具之后就是安装docker,docker安装很简单直接yum install -y docker,docker基本配置和使用就不再赘述了,docker的镜像本身下载很慢的,所以这里我用的是daocloud的加速器,那下载速度杠杠的!但是不知道daocloud最近怎么了,curl生成的加速器是有问题的,配置了之后docker启动不了,看了日志发现是他们修改的etc/docker/daemon.json有问题,里面多了一个逗号,把逗号去了就行。 接下来就是启动docker

systemctl start docker

没毛病,直接启动成功,接卸来下载镜像

docker pull daocloud.io/centos:6

为什么不用centos7而是用6,这个问题就比较搞笑了,刚开始用的就是7的镜像但是有个很严重的BUG就是systemd无法使用,也就是说容器内的服务是无法用systemctl管理的,网上也有解决方法,但是都不好使!所以退而求其次用centos6就行。镜像拉取完成之后启动镜像:

docker run -it -h master --name master daocloud.io/library/centos:6 /bin/bash

ok~!镜像启动成功,控制台会直接进入镜像内的控制台,如果想退回宿主机控制台直接ctrl+p ctrl+q可以从容器返回宿主机,再想回来直接docker attach 【容器名称或ID】。

第二步、制作Hadoop镜像

进入容器控制台,开始搭建Hadoop,在搭建之前一样要先把基础工具给装了,Hadoop是JAVA写的所以JDK先给装上:

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz
mkdir /usr/java
tar -zxvf jdk-8u131-linux-x64.tar.gz -C /usr/java

修改环境变量

vim /etc/profile
#在最下方加入JAVA配置
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export JAVA_HOME=/usr/java/jdk1.8.0_131
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#source一下
source /etc/profile

安装gcc,vim,lrzsz和ssh

yum install -y gcc
yum install -y vim
yum install -y lrzsz
yum -y install openssh-server
yum -y install openssh-clients

配置ssh免密登录

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

关闭烦人sellinux:

setenforce 0

启动ssh

service sshd start

测试一下

ssh master

如果没什么问题就代表一些准备就绪。

完成之后开始下载Hadoop镜像:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.0/hadoop-2.8.0.tar.gz
mkdir /usr/local/hadoop
tar -zxvf hadoop-2.8.0.tar.gz -C /usr/local/hadoop

配置环境变量

vim /etc/profile
#在最下方加入Hadoop配置
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.0
export PATH=$PATH:$HADOOP_HOME/bin

修改Hadoop的配置文件,进入Hadoop的目录

cd /usr/local/hadoop/hadoop-2.8.0/etc/hadoop/

在hadoop-env.sh 和 yarn-env.sh 在开头添加JAVA环境变量JAVA_HOME

修改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/tsk/hadoop-2.8.0/tmp</value>
</property>
</configuration>

修改hdfs-site.xml文件

<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/tsk/hadoop-2.8.0/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/tsk/hadoop-2.8.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>

由于我准备配置三个salve节点所以在slaves文件中添加

slave1
slave2
slave3

完成之后尝试一下

ldd /usr/local/hadoop/hadoop-2.8.0/lib/native/libhadoop.so.1.0.0

这时提示GLIBC_2.14 required,centos6的源最高到2.12,这里需要2.14,所以只能手动make安装

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就没有问题了!接下来就是构建上面做的所有操作,将其变成一个镜像以便复用,先Ctrl+p和Ctrl+q返回宿主机控制台然后输入命令:

docker commit master tsk/hadoop

等一会之后会发现镜像只做完成docker images一下就能看到自己只做的镜像了。

第三步、启动镜像

先配置docker的网络,给每台机器配置host

docker inspect --format='{{.NetworkSettings.IPAddress}}' master

接下来逐个启动镜像:

docker stop master
docker rm master
docker run -it -p 50070:50070 -p 19888:19888 -p 8088:8088 -h master --name master tsk/hadoop /bin/bash
docker run -it -h slave1 --name slave1 tsk/hadoop /bin/bash
docker run -it -h slave2 --name slave2 tsk/hadoop /bin/bash
docker run -it -h slave3 --name slave3 tsk/hadoop /bin/bash

然后attach到每个节点上面source一下配置hosts,启动sshd,完成之后开始准备启动Hadoop

hadoop namenode -format
/usr/local/hadoop/hadoop-2.8.0/sbin/start-all.sh

最后要做的事情就是等待

~等待~等待

~~~~!直到全部启动完成!完成之后用浏览器访问虚拟机IP地址:50070,如果没有任何问题的话你就可以看到如下画面,至此Hadoop集群搭建成功!

Centos下docker搭建Hadoop集群

Centos下docker搭建Hadoop集群
tags: gt,lt,name,property,value,hadoop,docker,镜像,yarn,Hadoop,usr,yum,install,address
分页:12
转载请注明
本文标题:Centos下docker搭建Hadoop集群
本站链接:http://www.codesec.net/view/570446.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 大数据技术 | 评论(0) | 阅读(34)