Docker学习七:使用docker搭建Hadoop集群
本博客简单分享了如何在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
以上命令意思如下:
- docker ps查看当前运行的容器信息,目前只运行一个ubuntu容器;
- docker commit保存fd1fc69d75a3(容器id)容器为一个新的镜像,镜像名称为ubuntu/jdkinstalled
- 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集群相关推荐
- Hadoop(二)搭建Hadoop集群
在了解Hadoo基础之后,借助于docker快速实现虚拟化,搭建Hadoop集群,进一步了解Hadoop,实地测试,实地操作,更进一步的了解Hadoop. 首先需要了解Hadoop的各个模块概念已经功 ...
- Docker搭建hadoop集群
参考https://github.com/kiwenlau/hadoop-cluster-docker/blob/master/start-container.sh 因为之前在VMware上操作Had ...
- [零基础]用docker搭建Hadoop集群
目录 前言:为什么要用docker搭建Hadoop集群? 准备:下载VMware.VMwareTools(或Xftp.Xshell).Ubuntu或者CentOS映像文件.Hadoop和jdk压缩包 ...
- cdh搭建hadoop集群_Hadoop宿醉:使用Apache Whirr启动hadoop集群CDH4
cdh搭建hadoop集群 这篇文章是关于如何在EC2实例上启动CDH4 MRv1或CDH4 Yarn集群的. 据说您可以在Whirr的帮助下在5分钟内启动一个集群! 当且仅当一切工作正常时,这才是正 ...
- 利用闲置电脑安装虚拟机搭建hadoop集群
文章目录 前言 一.虚拟机环境的准备 二.连接虚拟机上的集群 1.整理需要连接的端口 2.配置VMware上虚拟机的端口转发 3.测试连接 总结 前言 本人刚开始学习大数据,记录自己的一些学习笔记.大 ...
- 三台Ubuntu虚拟机搭建 Hadoop集群 (第一次搭)
最近因为要搭Hadoop集群,确实花了好大的心血在里面,因为我的Linux也是前两天速成的,好多东西都还是边查资料边搭.但我最终确实成功了,留了一点点小问题在里面.(当Hadoop集群start-al ...
- 环境搭建-Hadoop集群搭建
环境搭建-Hadoop集群搭建 写在前面,前面我们快速搭建好了centos的集群环境,接下来,我们就来开始hadoop的集群的搭建工作 实验环境 Hadoop版本:CDH 5.7.0 这里,我想说一下 ...
- hadoop集群_Ambari搭建hadoop集群
Ambari搭建hadoop集群 Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含: 通过一步一步的安装向导简化了集群供应. 预先配置好关键的运维指标(metrics),可以直接查看H ...
- 基于OSS存储搭建Hadoop集群
简介 本文以Ubuntu操作系统为例,介绍基于Aliyun OSS的hadoop-3.0.0-beta1的集群环境搭建过程,示例的集群环境包括1个master和2个slave节点(slave1和sla ...
最新文章
- IDEA弹出'xxx' is not allowed to run in parallel. Would you like to stop the running one?
- kafka grpc_模型服务:流处理与使用Java,gRPC,Apache Kafka,TensorFlow的RPC / REST
- 切换分支 如何判断 是否完成_如何判断展览公司是否专业?
- Electro桌面应用开发之HelloWorld
- 一刷leetcode——树
- 在线OPML美化格式化工具
- SLAM:计算机对世界的感知与理解
- bbs与BLOG与SNS在区别
- egg服务重启及child_process的使用
- python控制浏览器最小化_如何启动最小化的Selenium Firefox web浏览器?
- Tesla特斯拉电动汽车电力驱动系统3D模型(含悬挂) Catia 附STEP
- 解决qt.qpa.plugin: Could not load the Qt platform plugin “xcb“问题
- Cartographer 3D 建图实战-(基于禾赛32线雷达和Xsens MTi-G-710 组合导航模块,松灵Scout mini 底盘实际进行实验)
- 扫雷游戏(模拟算法)
- spring-aop常用切点表达式
- 【AI绘画】二次元小姐姐生成!春节版!
- 【房卡棋牌教程】,制作进入房间小界面
- 电子招标采购系统源码功能清单
- 如何抓取 bet365 即时足球比分数据
- GCC 编译链接命令用法
热门文章
- ZooKeeper--Recipes和解决方案
- 快速安装Docker图形化管理平台ShipYard
- Android BGradualProgress 多种渐变、直角or弧角、进度条、加载条
- shell find命令 文件夹查询关键字 查询结果输出新文件
- 【JS】最简单的域名防红方法,QQ/微信打开网站提示浏览器打开
- C#LeetCode刷题之#110-平衡二叉树(Balanced Binary Tree)
- 静态资源存储 vs 对象资源存储
- 复合辛普森求积公式原理_辛普森法则:公式及其原理
- JavaScript状态2018
- 大众汽车和鸿蒙,鸿蒙系统下个月即将与大众见面,首发平台并非手机