本博客简单分享了如何在Docker上搭建Hadoop集群,我的电脑是Ubuntu20,听同学说wsl2有些命令不对,所以建议在虚拟机里按照Ubuntu或者直接安装双系统吧

  • Docker学习一:Docker简介与安装
  • Docker学习二:Docker镜像与容器
  • Docker学习三:Docker 数据管理
  • Docker学习四:Docker 网络
  • Docker学习五:Docker 数据管理
  • Docker学习六:综合实践
  • Docker学习七:使用docker搭建Hadoop集群

首先,我们需要在Ubuntu上安装Docker;

如果没有安装同学建议先查看Docker学习一:Docker简介与安装

若是对docker不熟练同学先查看一下上面链接

在Docker安装Ubuntu系统

先看docker情况,由于我之前已经安装过docker,这里查看一下

接下来就要在Docker上安装Ubuntu

docker pull ubuntu
//docker pull命令表示从Docker hub上拉取Ubuntu镜像到本地;这时可以在终端运行以下命令查看是否安装成功,docker images


docker images表示列出Docker上所有的镜像;镜像也是一堆文件,我们需要在Docker上开启这Ubuntu系统;在启动Ubuntu镜像时,需要先在个人文件下创建一个目录,用于向Docker内部的Ubuntu系统传输文件;

在个人文件下创建一个目build录,用于向Docker内部的Ubuntu系统传输文件

然后再在Docker上运行Ubuntu系统;

docker run -it -v /home/haobo/mnt/test/docker/build:/root/build --name ubuntu ubuntu

这里解析下这个命令参数:

  • docker run 表示运行一个镜像;
  • -i表示开启交互式;-t表示分配一个tty,可以理解为一个控制台;因此-it可以理解为在当前终端上与docker内部的ubuntu系统交互;
  • -v 表示docker内部的ubuntu系统/root/build目录与本地/home/hadoop/build共享;这可以很方便将本地文件上传到Docker内部的Ubuntu系统;
  • –name ubuntu 表示Ubuntu镜像启动名称,如果没有指定,那么Docker将会随机分配一个名字;
  • ubuntu 表示docker run启动的镜像文件;

Ubuntu系统初始化

更新系统软件源、安装vim

apt-get updateapt-get install vim

接着安装sshd,因为在开启分布式Hadoop时,需要用到ssh连接slave:

apt-get install ssh

开启sshd服务器:

/etc/init.d/ssh start

但是这样的话,就需要每次在开启镜像时,都需要手动开启sshd服务,因此我们把这启动命令写进~/.bashrc文件,这样我们每次登录Ubuntu系统时,都能自动启动sshd服务;

vim ~/.bashrc//在该文件中最后一行添加如下内容:
/etc/init.d/ssh start

ssh-keygen -t rsa #一直按回车键即可
cat id_rsa.pub >> authorized_keys

配置sshd

安装JDK

因为Hadoop有用到Java,因此还需要安装JDK;直接输入以下命令来安装JDK:

apt-get install default-jdk

这个命令会安装比较多的库,可能耗时比较长;等这个命令运行结束之后,即安装成功;然后我们需要配置环境变量,打开~/.bashrc文件,在最后输入如下内容;

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export PATH=$PATH:$JAVA_HOME/bin

接着执行如下命令使~/.bashrc生效即可;

source ~/.bashrc

保存镜像文件

我们在Docker内部的容器做的修改是不会自动保存到镜像的,也就是说,我们把容器关闭,然后重新开启容器,则之前的设置会全部消失,因此我们需要保存当前的配置;为了达到复用配置信息,我们在每个步骤完成之后,都保存成一个新的镜像,然后开启保存的新镜像即可;首先我们要到这个网址注册一个账号https://hub.docker.com/;账号注册成功后,然后在终端输入以下信息:

docker login

然后会有如下提示信息,输出相应的用户名和密码即可:

Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: daodaowen2017
Password:
Login Succeeded

登录之后,即可输入以下命令保存修改后的容器为一个新的镜像;

docker ps

然后保存当前镜像为ubuntu/jdkinstalled,表示jdk安装成功的ubuntu版本,命令如下:

docker commit fd1fc69d75a3 ubuntu/jdkinstalled
输出如下:
sha256:05c9bc2b849359d029d417421d6968bdd239aad447ac6054c429b630378118aa

最后输出所有镜像查看是否保存成功:

docker images

以上命令意思如下:

  1. docker ps查看当前运行的容器信息,目前只运行一个ubuntu容器;
  2. docker commit保存fd1fc69d75a3(容器id)容器为一个新的镜像,镜像名称为ubuntu/jdkinstalled
  3. docker images查看当前docker所有镜像,可以看到我们新添加的镜像ubuntu/jdkinstalled

安装Hadoop

安装好JDK之后,接下来,我们来安装Hadoop;我们开启保存的那份镜像ubuntu/jdkinstalled:

docker run -it -v /home/haobo/mnt/test/docker/build:/root/build --name ubuntu-jdkinstalled ubuntu/jdkinstalled

我们可以用如下命令查看开启的容器:

 docker ps

开启系统之后,我们把下载下来的Hadoop安装文件放到共享目录/home/hadoop/build下面,然后在Docker内部Ubuntu系统的/root/build目录即可获取到Hadoop安装文件;在Docker内部的Ubuntu系统安装Hadoop和本地安装一样,

Hadoop下载地址点击:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/

cd /root/build
tar -zxvf hadoop-2.10.1.tar.gz -C /usr/local

如果是单机版Hadoop,到这里已经安装完成了,可以运行如下命令测试下:

cd /usr/local/hadoop
./bin/hadoop version

配置Hadoop集群

接下来,我们来看下如何配置Hadoop集群;对一些文件的设置和之前教程一样,首先打开hadoop_env.sh文件,修改JAVA_HOME

#假设现在/usr/local/hadoop目录下
vim etc/hadoop/hadoop-env.sh
# 将export JAVA_HOME=${JAVA_HOME}替换成
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

接着打开core-site.xml,输入一下内容:

<configuration><property><name>hadoop.tmp.dir</name><value>file:/usr/local/hadoop/tmp</value><description>Abase for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://master:9000</value></property>
</configuration>

然后再打开hdfs-site.xml输入以下内容:

<configuration><property><name>dfs.namenode.name.dir</name><value>file:/usr/local/hadoop/namenode_dir</value></property><property><name>dfs.datanode.data.dir</name><value>file:/usr/local/hadoop/datanode_dir</value></property><property><name>dfs.replication</name><value>3</value></property>
</configuration>

接下来修改mapred-site.xml(复制mapred-site.xml.template,再修改文件名),输入以下内容:

  <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>

最后修改yarn-site.xml文件,输入以下内容:

 <configuration><!-- Site specific YARN configuration properties --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>master</value></property></configuration>

到这里Hadoop集群配置就已经差不多了,我们先保存这个镜像,在其他终端输入如下命令:

docker commit a40b99f869ae ubuntu/hadoopinstalled

接下来,在三个终端上开启三个容器运行ubuntu/hadoopinstalled镜像,分别表示Hadoop集群中的master,slave01和slave02;

# 第一个终端
docker run -it -h master --name master ubuntu/hadoopinstalled
# 第二个终端
docker run -it -h slave01 --name slave01 ubuntu/hadoopinstalled
# 第三个终端
docker run -it -h slave02 --name slave02 ubuntu/hadoopinstalled

接着配置master,slave01和slave02的地址信息,这样他们才能找到彼此,分别打开/etc/hosts可以查看本机的ip和主机名信息,最后得到三个ip和主机地址信息如下:

172.18.0.2      master
172.18.0.3      slave01
172.18.0.4      slave02

最后把上述三个地址信息分别复制到master,slave01和slave02的/etc/hosts即可,我们可以用如下命令来检测下是否master是否可以连上slave01和slave02

ssh slave01
ssh slave02

在master终端上,首先进入/usr/local/hadoop,然后运行如下命令:

cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-all.sh

这时Hadoop集群就已经开启,我们可以在master,slave01和slave02上分别运行命令jps查看运行结果;
下面是运行结果图

测试Hadoop实例程序grep

到目前为止,我们已经成功启动hadoop分布式集群,接下来,我们通过运行hadoop自带的grep实例来查看下如何在hadoop分布式集群运行程序;这里我们运行的实例是hadoop自带的grep

因为要用到hdfs,所以我们先在hdfs上创建一个目录:

./bin/hdfs dfs -mkdir -p /user/hadoop/input

将/usr/local/hadoop/etc/hadoop/目录下的所有文件拷贝到hdfs上的目录:

dfs -put ./etc/hadoop/*.xml /user/hadoop/input

然后通过ls命令查看下是否正确将文件上传到hdfs下:

dfs -ls /user/hadoop/input

执行实例程序:

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep /user/hadoop/input output 'dfs[a-z.]+'

参考自:使用Docker搭建Hadoop分布式集群

Docker学习七:使用docker搭建Hadoop集群相关推荐

  1. Hadoop(二)搭建Hadoop集群

    在了解Hadoo基础之后,借助于docker快速实现虚拟化,搭建Hadoop集群,进一步了解Hadoop,实地测试,实地操作,更进一步的了解Hadoop. 首先需要了解Hadoop的各个模块概念已经功 ...

  2. Docker搭建hadoop集群

    参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...

  3. [零基础]用docker搭建Hadoop集群

    目录 前言:为什么要用docker搭建Hadoop集群? 准备:下载VMware.VMwareTools(或Xftp.Xshell).Ubuntu或者CentOS映像文件.Hadoop和jdk压缩包 ...

  4. cdh搭建hadoop集群_Hadoop宿醉:使用Apache Whirr启动hadoop集群CDH4

    cdh搭建hadoop集群 这篇文章是关于如何在EC2实例上启动CDH4 MRv1或CDH4 Yarn集群的. 据说您可以在Whirr的帮助下在5分钟内启动一个集群! 当且仅当一切工作正常时,这才是正 ...

  5. 利用闲置电脑安装虚拟机搭建hadoop集群

    文章目录 前言 一.虚拟机环境的准备 二.连接虚拟机上的集群 1.整理需要连接的端口 2.配置VMware上虚拟机的端口转发 3.测试连接 总结 前言 本人刚开始学习大数据,记录自己的一些学习笔记.大 ...

  6. 三台Ubuntu虚拟机搭建 Hadoop集群 (第一次搭)

    最近因为要搭Hadoop集群,确实花了好大的心血在里面,因为我的Linux也是前两天速成的,好多东西都还是边查资料边搭.但我最终确实成功了,留了一点点小问题在里面.(当Hadoop集群start-al ...

  7. 环境搭建-Hadoop集群搭建

    环境搭建-Hadoop集群搭建 写在前面,前面我们快速搭建好了centos的集群环境,接下来,我们就来开始hadoop的集群的搭建工作 实验环境 Hadoop版本:CDH 5.7.0 这里,我想说一下 ...

  8. hadoop集群_Ambari搭建hadoop集群

    Ambari搭建hadoop集群 Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含: 通过一步一步的安装向导简化了集群供应. 预先配置好关键的运维指标(metrics),可以直接查看H ...

  9. 基于OSS存储搭建Hadoop集群

    简介 本文以Ubuntu操作系统为例,介绍基于Aliyun OSS的hadoop-3.0.0-beta1的集群环境搭建过程,示例的集群环境包括1个master和2个slave节点(slave1和sla ...

最新文章

  1. IDEA弹出'xxx' is not allowed to run in parallel. Would you like to stop the running one?
  2. kafka grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST
  3. 切换分支 如何判断 是否完成_如何判断展览公司是否专业?
  4. Electro桌面应用开发之HelloWorld
  5. 一刷leetcode——树
  6. 在线OPML美化格式化工具
  7. SLAM:计算机对世界的感知与理解
  8. bbs与BLOG与SNS在区别
  9. egg服务重启及child_process的使用
  10. python控制浏览器最小化_如何启动最小化的Selenium Firefox web浏览器?
  11. Tesla特斯拉电动汽车电力驱动系统3D模型(含悬挂) Catia 附STEP
  12. 解决qt.qpa.plugin: Could not load the Qt platform plugin “xcb“问题
  13. Cartographer 3D 建图实战-(基于禾赛32线雷达和Xsens MTi-G-710 组合导航模块,松灵Scout mini 底盘实际进行实验)
  14. 扫雷游戏(模拟算法)
  15. spring-aop常用切点表达式
  16. 【AI绘画】二次元小姐姐生成!春节版!
  17. 【房卡棋牌教程】,制作进入房间小界面
  18. 电子招标采购系统源码功能清单
  19. 如何抓取 bet365 即时足球比分数据
  20. GCC 编译链接命令用法

热门文章

  1. ZooKeeper--Recipes和解决方案
  2. 快速安装Docker图形化管理平台ShipYard
  3. Android BGradualProgress 多种渐变、直角or弧角、进度条、加载条
  4. shell find命令 文件夹查询关键字 查询结果输出新文件
  5. 【JS】最简单的域名防红方法,QQ/微信打开网站提示浏览器打开
  6. C#LeetCode刷题之#110-平衡二叉树(Balanced Binary Tree)
  7. 静态资源存储 vs 对象资源存储
  8. 复合辛普森求积公式原理_辛普森法则:公式及其原理
  9. JavaScript状态2018
  10. 大众汽车和鸿蒙,鸿蒙系统下个月即将与大众见面,首发平台并非手机