使用docker部署hadoop集群的详细教程

使用docker部署hadoop集群的详细教程,第1张

使用docker部署hadoop集群的详细教程

本文主要介绍使用docker部署hadoop集群的详细教程,对大家来说非常详细。对你的学习或工作有一定参考价值的朋友可以参考一下。

最近公司搭建了一个hadoop测试集群,所以用docker快速部署hadoop集群。

0。写在前面

网上已经有很多教程了,但是漏洞很多。在这里,记录你的安装过程。

目标:使用docker构建一个一主两从的hadoop2.7.7集群。

准备:

首先我需要一台8G以上内存的centos7机器。我用的是阿里云主机

其次,上传jdk和hadoop包到服务器。

我装了hadoop2.7.7.包包给大家准备好了,链接:https://pan.baidu.com/s/15n_W-1rqOd2cUzhfvbkH4g抽取代码:vmzw。

1。步骤

大致分为以下几个步骤:

  • 安装docker
  • 基本环境准备
  • 配置网络并启动docker容器。
  • 配置主机和ssh免密登录
  • 配置hadoop
  • 1.1安装docker

    按照以下步骤安装docker。如果你有docker环境,可以跳过。

    yumupdate yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2 yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yuminstall-ydocker-ce systemctlstartdocker docker-v

    1.2基础环境准备

    1.2.1创建基本的centos7映像,并拉出正式的centos7映像。

    dockerpullcentos

    通过构建Dockfile用ssh函数生成centos图像

    创建Dockerfile文件

    viDockerfile

    将以下内容写入Dockerfile

    FROMcentos MAINTAINERmwf RUNyuminstall-yopenssh-serversudo RUNsed-i's/UsePAMyes/UsePAMno/g'/etc/ssh/sshd_config RUNyuminstall-yopenssh-clients RUNecho"root:qwe123"|chpasswd RUNecho"rootALL=(ALL)ALL">>/etc/sudoers RUNssh-keygen-tdsa-f/etc/ssh/ssh_host_dsa_key RUNssh-keygen-trsa-f/etc/ssh/ssh_host_rsa_key RUNmkdir/var/run/sshd EXPOSE22 CMD["/usr/sbin/sshd","-D"]

    以上内容大致意思是:基于centos镜像,设置密码为wqe123,安装ssh服务并启动。

    构建Dockerfile文件

    dockerbuild-t="centos7-ssh".

    将生成一个名为centos7-ssh的图像,可以通过dockerimages查看。

    1.2.2生成hadoop和jdk环境的映像。

  • 将准备好的包放在当前目录中。Hadoop-2.7.7.tar.gz和jdk-8u202-linux-x64.tar.gz。
  • 利用hadoop和jdk环境通过构建Dockfile生成centos映像
  • 刚刚创建了一个docker文件,所以先移动它。mvDockerfileDockerfile.bak

    创建Dockerfile文件

    viDockerfile

    将以下内容写入:

    FROMcentos7-ssh ADDjdk-8u202-linux-x64.tar.gz/usr/local/ RUNmv/usr/local/jdk1.8.0_202/usr/local/jdk1.8 ENVJAVA_HOME/usr/local/jdk1.8 ENVPATH$JAVA_HOME/bin:$PATH ADDhadoop-2.7.7.tar.gz/usr/local RUNmv/usr/local/hadoop-2.7.7/usr/local/hadoop ENVHADOOP_HOME/usr/local/hadoop ENVPATH$HADOOP_HOME/bin:$PATH RUNyuminstall-ywhichsudo

    上面的内容大概意思是:基于上面生成的centos7-ssh,把hadoop和jdk包放进去,然后匹配环境变量

    构建Dockerfile文件

    dockerbuild-t="hadoop".

    将生成一个名为hadoop的镜像。

    1.3配置网络,启动docker容器。

    因为集群必须连接到网络,所以必须首先配置网络。

    创建一个网络

    dockernetworkcreate--driverbridgehadoop-br

    上面的命令创建了一个名为hadoop-br的桥接类型网络。

    启动docker时指定网络

    dockerrun-itd--networkhadoop-br--namehadoop1-p50070:50070-p8088:8088hadoop dockerrun-itd--networkhadoop-br--namehadoop2hadoop dockerrun-itd--networkhadoop-br--namehadoop3hadoop

    上面的命令启动了三台机器,网络都指定为hadoop-br,hadoop1也开启了端口映射。

    检查网络情况。

    dockernetworkinspecthadoop-br

    执行以上命令查看相应的网络信息:

    [ { "Name":"hadoop-br", "Id":"88b7839f412a140462b87a353769e8091e92b5451c47b5c6e7b44a1879bc7c9a", "Containers":{ "86e52eb15351114d45fdad4462cc2050c05202554849bedb8702822945268631":{ "Name":"hadoop1", "IPv4Address":"172.18.0.2/16", "IPv6Address":"" }, "9baa1ff183f557f180da2b7af8366759a0d70834f43d6b60fba2e64f340e0558":{ "Name":"hadoop2", "IPv4Address":"172.18.0.3/16", "IPv6Address":"" },"e18a3166e965a81d28b4fe5168d1f0c3df1cb9f7e0cbe0673864779b224c8a7f":{ "Name":"hadoop3", "IPv4Address":"172.18.0.4/16", "IPv6Address":"" } }, } ]

    我们可以知道3台机器的ip:

    172.18.0.2hadoop1 172.18.0.3hadoop2 172.18.0.4hadoop3

    登录docker容器,就可以ping通对方了。

    dockerexec-ithadoop1bash dockerexec-ithadoop2bash dockerexec-ithadoop3bash

    1.4配置主机和ssh免密登录

    配置主机

    修改每台机器中每台机器的主机。

    vi/etc/hosts

    将以下内容写入(注:docker划分的ip可能每个人都不一样,自己填写):

    172.18.0.2hadoop1 172.18.0.3hadoop2 172.18.0.4hadoop3

    1.4.2ssh免密登录

    因为ssh服务已经安装在上图中,所以直接在每台机器上执行以下命令:

    ssh-keygen 一路回车 ssh-copy-id-i/root/.ssh/id_rsa-p22root@hadoop1 输入密码,如果按我的来得话就是qwe123 ssh-copy-id-i/root/.ssh/id_rsa-p22root@hadoop2 输入密码,如果按我的来得话就是qwe123 ssh-copy-id-i/root/.ssh/id_rsa-p22root@hadoop3 输入密码,如果按我的来得话就是qwe123

    1.4.3测试配置是否成功。

    pinghadoop1 pinghadoop2 pinghadoop3 sshhadoop1 sshhadoop2 sshhadoop3

    1.5安装和配置hadoop

    1.5.1在hadoop1上运行

    进入hadoop1

    dockerexec-ithadoop1bash

    创建一些文件夹,稍后将在配置中使用。

    mkdir/home/hadoop mkdir/home/hadoop/tmp/home/hadoop/hdfs_name/home/hadoop/hdfs_data

    切换到hadoop配置的目录。

    cd$HADOOP_HOME/etc/hadoop/

    编辑核心网站.xml

    <property> <name>fs.defaultFS</name> <value>hdfs://hadoop1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value>131702</value> </property>

    编辑hdfs-site.xml

    <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/hdfs_name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/hdfs_data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop1:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>

    编辑mapred-site.xml

    默认情况下,Mapred-site.xml不存在。执行cpmapred-site.XML.templatemapred-site.XML。

    <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop1:19888</value> </property>

    编辑yarn-site.xml

    <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>hadoop1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hadoop1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hadoop1:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>hadoop1:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>hadoop1:8088</value> </property>

    编辑从属

    在这里,我将hadoop1视为主节点,将hadoop2和Hadoop3视为从节点。

    hadoop2 hadoop3

    将文件复制到hadoop2和hadoop3

    依次执行以下命令:

    scp-r$HADOOP_HOME/hadoop2:/usr/local/ scp-r$HADOOP_HOME/hadoop3:/usr/local/ scp-r/home/hadoophadoop2:/ scp-r/home/hadoophadoop3:/

    1.5.2每台机器的 *** 作

    分别连接每台机器。

    dockerexec-ithadoop1bash dockerexec-ithadoop2bash dockerexec-ithadoop3bash

    配置hadoopsbin目录的环境变量

    hadoopbin目录是之前创建镜像时配置的,而sbin目录不是,所以要单独配置。为每台机器分配配置:

    vi~/.bashrc

    增加以下内容:

    exportPATH=$PATH:$HADOOP_HOME/sbin

    执行:

    source~/.bashrc

    1.5.3启动hadoop

    在hadoop1上执行以下命令:

    格式化hdfs

    hdfsnamenode-format

    一键启动

    start-all.sh

    如果你没有犯错,你可以庆祝。如果出了问题,加油。

    1.6使用hadoopjps进行测试

    #hadoop1 1748Jps 490NameNode 846ResourceManager 686SecondaryNameNode #hadoop2 400DataNode 721Jps 509NodeManager #hadoop3 425NodeManager 316DataNode 591Jps

    上传文件

    hdfsdfs-mkdir/mwf echohello>a.txt hdfsdfs-puta.txt/mwf hdfsdfs-ls/mwf Found1items drwxr-xr-x-rootsupergroup02020-09-0411:14/mwf

    因为是云服务器,不想匹配端口,所以不看ui界面。

    2。最后

    以上是我安装成功后总结的流程。不应该有问题或遗漏。

    3。参考

    https://cloud.tencent.com/developer/article/1084166

    来自=10680的https://cloud.tencent.com/developer/article/1084157?

    https://blog.csdn.net/ifenggege/article/details/108396249

    关于用docker部署hadoop集群的详细教程,本文到此结束。有关使用docker部署hadoop集群的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

    欢迎分享,转载请注明来源:内存溢出

    原文地址:https://54852.com/zz/774336.html

    (0)
    打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
    上一篇 2022-05-03
    下一篇2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

      保存