Py学习  »  docker

hadoop + docker 搭建hadoop学习环境

张晓天a • 5 年前 • 208 次点击  

在学习大数据的情况下免不了自己搭建一个hadoop环境,但是使用虚拟机在自己的电脑上启动一个集群环境会很吃机器的资源,所以我们使用docker来进行搭建大数据的集群环境。同时docker搭建hadoop环境可以省去很多重复的步骤。

同时现在hadoop的版本比较多,虽然推荐使用HDP和CDH进行集群的搭建,但是在学习时间推荐使用Apache Hadoop进行搭建,可以更快的学习hadoop的工作原理。

环境准备

  • docker-ce 环境
  • ubuntu 16.04的镜像
  • jdk1.7.0_80
  • hadoop-2.7.3

所需的都为开源的,可以很方便的从网上找寻到相应的软件。

ubuntu 16.04 镜像环境的制作可以参考下篇博文:

docker镜像的制作

可以直接再镜像制作的时候安装上相应的环境,比如java.

将制作好的系统打包为docker镜像

sudo tar -C /opt/new_os/ -c . | sudo docker import - ubuntu:v1

然后将镜像启动三个容器,可以直接写shell脚本一步到位

#!/bin/bash
paaswd="root"

echo ${passwd}|sudo -S docker  run -itd  -h master --privileged=True -v /data:/data -p 9000:9000 -p 9001:9001 -p 50070:50070 -p 8088:8088 --name="master-server"  ubuntu:v1 bash
echo ${passwd}|sudo -S docker run -itd  -h client1 --privileged=True -v /data:/data  --name="client2-server"  ubuntu:v1 bash
echo ${passwd}|sudo -S docker run -itd  -h client2 --privileged=True -v /data:/data  --name="client2-server"  ubuntu:v1 bash

启动后的容器如下图所示:

2018-10-25 16-54-41 的屏幕截图.png

安装JDK

将jdk1.7拷贝到/data目录下进行解压,下面就展现出docker搭建hadoop学习环境的好处。

在所有的容器里配值java环境变量,~/.bashrc或/etc/profile

export JAVA_HOME=/data/jdk1.7.0_80 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

环境搭建

  • 安装ntp,ssh服务
apt-get install ntp
apt-get install ssh

#启动ssh服务

service ssh start
  • 设置所有容器的密码和允许远程访问
sudo passwd root  
123

vim /etc/ssh/sshd_config

替换

PermitRootLogin without-password

为PermitRootLogin yes

重新启动ssh服务

service ssh restart

配值ssh无密访问

在master上运行

ssh-keygen

ssh-copy-id  root@master

ssh-copy-id  root@client1

ssh-copy-id  root@client2

然后ssh root@client1进行测试是否可以无密访问

Hadoop配置

在/data下解压hadoop-2.7.3
进入hadoop-2.7.3/etc/hadoop/下进行修改配值文件

  • vim hadoop-env.sh
    在其中添加java环境

export JAVA_HOME=/data/jdk1.7.0_80

  • vim core-site.xml
<property> 
<name>hadoop.tmp.dir</name>
<value>/data/hadoop-2.7.3/tmp</value>
<description>Abaseforothertemporarydirectories.</description> 
</property> 
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
  • vim hdfs-site.xml
<property> 
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/name</value>
<description>Path on the local filesystem where the NameNode stores the namespace andtransactionslogspersistently.</description>
</property>

<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop-2.6.0/dfs/data</value> 
<description>Comma separatedlistofpathsonthelocalfilesystemofaDataNodewhere itshouldstoreitsblocks.</description>
</property> 
<property> 
<name>dfs.replication</name> 
<value>1</value>
</property>
  • vim mapred-site.xml
<configuration> 
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
<description>HostofIPandportofJobTracker.</description>
</property> 
</configuration>
  • vim yarn-site.xml
<property> 
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</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>
  • vim yarn-env.sh

export JAVA_HOME=/data/jdk1.7.0_80

  • vim slaves
client1
client2

vim /etc/profile

export HADOOP_HOME=/data/hadoop-2.7.3
exportPATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

启动集群

bin/hdfsnamenode-format 
sbin/start-all.sh 

访问50070:

http://master:50070

出现页面,检查datanode是否完全启动成功

启动成功即可

否则:

hadoop-daemons.sh start datanode client1

今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/qihWf5cpZz
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25656
 
208 次点击