ITPub博客

首页 > 数据库 > 数据库开发技术 > hadoop + docker 搭建hadoop学习环境

hadoop + docker 搭建hadoop学习环境

原创 数据库开发技术 作者:Tim在路上 时间:2019-05-13 10:02:43 0 删除 编辑

在学习大数据的情况下免不了自己搭建一个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镜像

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

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

  1. #!/bin/bash

  2. paaswd="root"


  3. 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

  4. echo ${passwd}|sudo -S docker run -itd -h client1 --privileged=True -v /data:/data --name="client2-server" ubuntu:v1 bash

  5. echo ${passwd}|sudo -S docker run -itd -h client2 --privileged=True -v /data:/data --name="client2-server" ubuntu:v1 bash

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

安装JDK

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

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

  1. export JAVA_HOME=/data/jdk1.7.0_80

  2. export PATH=$JAVA_HOME/bin:$PATH

  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

环境搭建

  • 安装ntp,ssh服务

  1. apt-get install ntp

  2. apt-get install ssh


  3. #启动ssh服务


  4. service ssh start

  • 设置所有容器的密码和允许远程访问

  1. sudo passwd root

  2. 123

vim /etc/ssh/sshd_config

替换

  1. PermitRootLogin without-password


  2. 为PermitRootLogin yes

重新启动ssh服务

service ssh restart

配值ssh无密访问

在master上运行

  1. ssh-keygen


  2. ssh-copy-id root@master


  3. ssh-copy-id root@client1


  4. 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 JAVAHOME=/data/jdk1.7.080

  • vim core-site.xml

  1. <property>

  2. <name>hadoop.tmp.dir</name>

  3. <value>/data/hadoop-2.7.3/tmp</value>

  4. <description>Abaseforothertemporarydirectories.</description>

  5. </property>

  6. <property>

  7. <name>fs.default.name</name>

  8. <value>hdfs://master:9000</value>

  9. </property>

  • vim hdfs-site.xml

  1. <property>

  2. <name>dfs.name.dir</name>

  3. <value>/home/hadoop/hadoop-2.6.0/dfs/name</value>

  4. <description>Path on the local filesystem where the NameNode stores the namespace andtransactionslogspersistently.</description>

  5. </property>


  6. <property>

  7. <name>dfs.data.dir</name>

  8. <value>/home/hadoop/hadoop-2.6.0/dfs/data</value>

  9. <description>Comma separatedlistofpathsonthelocalfilesystemofaDataNodewhere itshouldstoreitsblocks.</description>

  10. </property>

  11. <property>

  12. <name>dfs.replication</name>

  13. <value>1</value>

  14. </property>

  • vim mapred-site.xml

  1. <configuration>

  2. <property>

  3. <name>mapred.job.tracker</name>

  4. <value>master:9001</value>

  5. <description>HostofIPandportofJobTracker.</description>

  6. </property>

  7. </configuration>

  • vim yarn-site.xml

  1. <property>

  2. <name>yarn.nodemanager.aux-services</name>

  3. <value>mapreduce_shuffle</value> </property>

  4. <property>

  5. <name>yarn.resourcemanager.address</name>

  6. <value>master:8032</value>

  7. </property>


  8. <property>

  9. <name>yarn.resourcemanager.scheduler.address</name>

  10. <value>master:8030</value>

  11. </property>


  12. <property>

  13. <name>yarn.resourcemanager.resource-tracker.address</name>

  14. <value>master:8031</value>

  15. </property>


  16. <property>

  17. <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value>

  18. </property>

  19. <property>

  20. <name>yarn.resourcemanager.webapp.address</name>

  21. <value>master:8088</value>

  22. </property>

  • vim yarn-env.sh

export JAVAHOME=/data/jdk1.7.080

  • vim slaves

  1. client1

  2. client2

vim /etc/profile

  1. export HADOOP_HOME=/data/hadoop-2.7.3

  2. exportPATH=.:$HADOOP_HOME/bin:$JAVA_HOME/bin:$PATH

启动集群

  1. bin/hdfsnamenode-format

  1. sbin/start-all.sh

访问50070:

  1. http://master:50070

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

启动成功即可

否则:

  1. hadoop-daemons.sh start datanode client1


原文作者:Tim在路上;如有侵权,请联系管理员删除。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2019-05-11

  • 博文量
    139
  • 访问量
    74556