为了账号安全,请及时绑定邮箱和手机立即绑定

hadoop + docker 搭建hadoop学习环境

标签:
Hadoop

在学习大数据的情况下免不了自己搭建一个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/bashpaaswd="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 bashecho ${passwd}|sudo -S docker run -itd  -h client1 --privileged=True -v /data:/data  --name="client2-server"  ubuntu:v1 bashecho ${passwd}|sudo -S docker run -itd  -h client2 --privileged=True -v /data:/data  --name="client2-server"  ubuntu:v1 bash

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

webp

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



作者:张晓天a
链接:https://www.jianshu.com/p/781db0147ed9


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消