docker 安装hadoop2.8.5和spark2.4.0

2024-02-15 11:08

本文主要是介绍docker 安装hadoop2.8.5和spark2.4.0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

win7 + docker+ubuntu+java-1.8+hadoop-2.8.5+spark-2.4.0

win7系统下,docker的安装,本人是利用Docker Toolbox进行安装

参考博客:https://blog.csdn.net/xiangxiezhuren/article/details/79698913

下载地址https://docs.docker.com/toolbox/overview/

安装过程中,需要选择的方框都打勾即可,

安装完成后桌面会有三个快捷方式

1.Docker Quickstart Terminal:docker快速启动终端

2.Kitematic:进行镜像的管理 [其中,LOGIN是注册、登录Docker,需要连接外网进行注册]

 

进入docker终端,执行docker pull ubuntu,下载ubuntu镜像

docker images

docker ps -a 查看所有镜像

获取所有容器ip地址 docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)

更改tag:docker tag <images id>  <images name>:<tag>

                              e.g. docker tag 569dd6d0e296 ubuntu : 16.02

执行docker run -it ubuntu:16.02后,会生成一个新的容器【注意:每执行一次该命令,就会有新的容器被创建】

若想执行原来已创建的容器,需要首先执行:docker ps -a 查看容器对应id

然后执行

                          docker container start 569dd6d0e296

                      -->docker attach 569dd6d0e296,随后即进入指定版本的ubuntu创建的容器(linux系统中)

如图所示

对于新手会发现,创建的ubuntu无法使用vim编辑器,且执行apt-get install vim会报错

对于docker创建的ubuntu需要先执行 apt-get update【类似于更新系统,获取可下载的package】

然后执行apt-get install vim就可以正常下载了

类似的可以下载nano编辑器

vim常用命令:

o----下一行输入

i-----光标处输入

G---最后一行

上下左右--kjhl

删除x

多行删除
    首先在命令模式下,输入“:set nu”显示行号; 2.通过行号确定你要删除的行; 3.命令输入“:32,65d”,回车键,32-65行就被  删除了,
如果无意中删除错了,可以使用‘u’键恢复(命令模式下)

启动第一个容器(ubuntu:1.0),安装java

sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sodu apt-get update
apt-get install oracle-java8-installer
java -version

这里安装的是java8(JDK1.8.)

将装好的java容器镜像保存为一个副本,可以在此基础上构建其他镜像

root@122a2cecdd14:~# exit
docker commit -m "java install" 122a2cecdd14 ubuntu:java

Hadoop安装

   启动已安装的java容器镜像

docker run -ti ubuntu:java

     安装wget

root@8ef06706f88d:cd ~
root@8ef06706f88d:~# mkdir soft
root@8ef06706f88d:~# cd soft/
root@8ef06706f88d:~/soft# mkdir apache
root@8ef06706f88d:~/soft# cd apache/
root@8ef06706f88d:~/soft/apache# mkdir hadoop
root@8ef06706f88d:~/soft/apache# cd hadoop/
root@8ef06706f88d:~/soft/apache/hadoop# wget http://mirrors.sonic.net/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
root@8ef06706f88d:~/soft/apache/hadoop# tar xvzf hadoop-2.8.5.tar.gz

  3.配置环境变量

修改~/.bashrc文件。在文件末尾加入下面配置信息:

export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export HADOOP_HOME=/root/soft/apache/hadoop/hadoop-2.8.5
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

 配置完成后需要执行下面语句,使其立即生效

source ~/.bashrc

 

注意:我们使用apt-get安装java,不知道java装在什么地方的话可以使用下面的命令查看:

root@8ef06706f88d:~# update-alternatives --config java
There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-7-oracle/jre/bin/java
Nothing to configure.
root@8ef06706f88d:~#

4.配置Hadoop

主要配置core-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml这四个文件

root@8ef06706f88d:~# cd $HADOOP_HOME/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5# mkdir tmp
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5# cd tmp/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5/tmp# pwd
/root/soft/apache/hadoop/hadoop-2.8.5/tmp
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5/tmp# cd ../
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5# mkdir namenode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5# cd namenode/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5/namenode# pwd
/root/soft/apache/hadoop/hadoop-2.8.5/namenode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5/namenode# cd ../
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5# mkdir datanode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5# cd datanode/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5/datanode# pwd
/root/soft/apache/hadoop/hadoop-2.8.5/datanode
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5datanode# cd $HADOOP_CONF_DIR/
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# cp mapred-site.xml.template mapred-site.xml
root@8ef06706f88d:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# nano hdfs-site.xml

1)core-site.xml

<configuration><property><name>hadoop.tmp.dir</name><value>/root/soft/apache/hadoop/hadoop-2.8.5/tmp</value><description>A base for other temporary directories.</description></property><property><name>fs.default.name</name><value>hdfs://master:9000</value><final>true</final><description>The name of the default file system.  A URI whosescheme and authority determine the FileSystem implementation.  Theuri's scheme determines the config property (fs.SCHEME.impl) namingthe FileSystem implementation class.  The uri's authority is used todetermine the host, port, etc. for a filesystem.</description></property>
</configuration>

注意:

  • hadoop.tmp.dir配置项值即为此前命令中创建的临时目录路径。
  • fs.default.name配置为hdfs://master:9000,指向的是一个Master节点的主机(后续我们做集群配置的时候,自然会配置这个节点,先写在这里)

2)hdfs-site.xml 

 

<configuration><property><name>dfs.replication</name><value>2</value><final>true</final><description>Default block replication.The actual number of replications can be specified when the file is created.The default is used if replication is not specified in create time.</description></property><property><name>dfs.namenode.name.dir</name><value>/root/soft/apache/hadoop/hadoop-2.8.5/namenode</value><final>true</final></property><property><name>dfs.datanode.data.dir</name><value>/root/soft/apache/hadoop/hadoop-2.8.5/datanode</value><final>true</final></property>
</configuration>

注意:

  • 我们后续搭建集群环境时,将配置一个Master节点和两个Slave节点。所以dfs.replication配置为2。
  • dfs.namenode.name.dirdfs.datanode.data.dir分别配置为之前创建的NameNode和DataNode的目录路径

3)mapred-site.xml

   先执行 cp mapred-site.xml.template mapred-site.xml

   再进行配置【移除可能老旧版本的配置】

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

4)yarn-site.xml

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

5)修改JAVA_HOME环境变量

nano hadoop-env.sh

修改文件中:export JAVA_HOME=/usr/lib/jvm/java-8-oracle

6)格式化 namenode

hdfs/hadoop namenode -format

4.安装SSH

实现无密码登陆

root@8ef06706f88d:~# sudo apt-get install ssh

SSH装好了以后,由于我们是Docker容器中运行,所以SSH服务不会自动启动。需要我们在容器启动以后,手动通过/usr/sbin/sshd 手动打开SSH服务。未免有些麻烦,为了方便,我们把这个命令加入到~/.bashrc文件中。通过nano ~/.bashrc编辑.bashrc文件(nano没有安装的自行安装,也可用vi),在文件后追加下面内容:

#autorun
/usr/sbin/sshd

执行source ~/.bashrc

5.生成访问密钥

root@8ef06706f88d:/# cd ~/
root@8ef06706f88d:~# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
root@8ef06706f88d:~# cd .ssh
root@8ef06706f88d:~/.ssh# cat id_rsa.pub >> authorized_keys
root@8ef06706f88d:~/.ssh# chmod 600 authorized_keys

注意: 这里,我的思路是直接将密钥生成后写入镜像,免得在买个容器里面再单独生成一次,还要相互拷贝公钥,比较麻烦。当然这只是学习使用(这样会导致容器密钥就全都一样)

6.配置slaves

在master节点容器中执行如下命令:

root@master:~# cd $HADOOP_CONF_DIR/
root@master:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# nano slaves 

将如下信息写入该文件末尾:

slave1
slave2

 

7.保存镜像副本

这里我们将安装好Hadoop的镜像保存为一个副本。

root@8ef06706f88d:~# exit
king@king:~$ docker commit -m "hadoop install" 8ef06706f88d ubuntu:hadoop

搭建分布式集群

这里有几个问题:

  1. Docker容器中的ip地址是启动之后自动分配的,且不能手动更改
  2. hostname、hosts配置在容器内修改了,只能在本次容器生命周期内有效。如果容器退出了,重新启动,这两个配置将被还原。且这两个配置无法通过commit命令写入镜像

我们搭建集群环境的时候,需要指定节点的hostname,以及配置hosts。hostname可以使用Docker run命令的h参数直接指定。但hosts解析有点麻烦,虽然可以使用run--link参数配置hosts解析信息,但我们搭建集群时要求两台机器互相能够ping通,其中一个容器没有启动,那么ip不知道,所以--link参数对于我们的这个场景不实用。要解决这个问题,大概需要专门搭建一个域名解析服务,即使用--dns参数

我们这里只为学习,就不整那么复杂了,就手动修改hosts吧。

启动master容器

docker run -ti -h master ubuntu:hadoop

启动slave1容器

docker run -ti -h slave1 ubuntu:hadoop

启动slave2容器

docker run -ti -h slave2 ubuntu:hadoop

执行此步骤后,各hadoop容器配置均相同,只需修改hosts和slaves即可

配置hosts

(ifconfig不能用时,可先执行apt-get install net-tools,然后再执行ifconfig)

  1. 通过ifconfig命令分别获取各节点ip。环境不同获取的ip可能不一样,例如我本机获取的ip如下: 
    • master:172.17.0.2
    • slave1:172.17.0.3
    • slave2:172.17.0.4
  2. 使用sudo nano /etc/hosts命令将如下配置写入各节点的hosts文件,注意修改ip地址:

    172.17.0.2        master
    172.17.0.3        slave1
    172.17.0.4       slave2

启动Hadoop

在master节点上执行start-all.sh命令,启动Hadoop。

只不过每次重新启动都得修改各节点/etc/hosts

成功执行如下图所示:

【此处若仍需要输入密码请转至本文末尾,进行另一种ssh免密登录方式】

【此处若出现以下信息,只需依次输入yes ,出现yes输入不能识别情况可按以下所示操作】

jps

可以在其他slave结点输入jps,查看状态

在master节点上通过命令hdfs dfsadmin -report查看DataNode是否正常启动

执行自带wordcount例子

参考博客:https://www.cnblogs.com/xiaomila-study/p/4973662.html

1)
root@master:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# hadoop fs -mkdir -p /data/wordcount2)
root@master:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# hadoop fs -mkdir -p /output/3)
root@master:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# hadoop fs -ls /4)
#其中需要说明的是,作为执行的输入文件可以随意选择,root@master:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# hadoop fs -put ~/soft/apache/hadoop/hadoop-2.8.5/LICENSE.txt /data/wordcount/#即我这里直接选择hadoop-2.8.5下的证书文件作为输入【执行put类似于cp命令不会导致原文件变动】5)
root@master:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# hadoop fs -ls /data/wordcount6)#执行wordcount
root@master:~/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop# hadoop jar ~/soft/apache/hadoop/hadoop-2.8.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount /data/wordcount /output/wordcount
7)#查看输出
hadoop fs -text /output/wordcount/part-r-00000 

二、在hadoop基础上安装spark

1.scala环境搭建

1)下载scala-2.12.8.tgz,解压到/usr/share目录下


wget https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgztar -zxvf scala-2.12.8.tgzmv scala-2.12.8 /usr/share

2)在~/.bashrc中添加配置:

export SCALA_HOME=/usr/share/scala-2.12.8
export PATH=$SCALA_HOME/bin:$PATH

生效  source /.bashrc

2.spark2.4.0环境搭建

1)创建目录并下载解压到指定位置

wget https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgzcd $HADOOP_HOME
cd ..
cd ..
mkdir spark
tar -zxvf spark-2.4.0-bin-hadoop2.7.tgz

2) 在~/.bashrc中添加配置:

export SPARK_HOME=/root/soft/apache/spark/spark-2.4.0-bin-hadoop2.7/
export PATH=$PATH:$SPARK_HOME/bin

注意, 因spark sbin目录文件与hadoop sbin有相同,故这里不指定

生效  source /.bashrc

3)修改spark-env.sh

cd $SPARK_HOME/confcp spark-env.sh.template spark-env.shnano spark-env.sh #在末尾添加如下内容:export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export SCALA_HOME=/usr/share/scala-2.12.8
export HADOOP_HOME=/root/soft/apache/hadoop/hadoop-2.8.5
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SPARK_HOME=/root/soft/apache/spark/spark-2.4.0-bin-hadoop2.7
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=1g

4)修改slaves

      cp slaves.template slaves,打开后添加如下内容

slave1
slave2

 保存镜像副本

docker commit -m "spark install" XXX  ubuntu:spark

docker run -it -h master ubuntu:spark

.........重复前面hadoop步骤...........

5)

启动hadoop:start-all.sh

启动spark:

cd $SPARK_HOME/sbin

./start-all.sh

注意:

鉴于之前已启动过hadoop,因此使用docker run -it -h  <各节点hostname> ubuntu:spark 会导致 各个slave结点 的 $HADOOP_HOME路径下的tmp临时文件和存放datanode结点数据的文件/datanode/current/数据信息相同

出现Hadoop datanode正常启动,但是Live nodes中却缺少节点的问题且结点时而变化的问题

即 执行 hdfs dfsadmin -report 发现 datanode live 数量小于实际节点数

先停止slave节点服务,将slave节点的tmp和datanode文件下的文件删除,并重新启动 即可解决

参考博客:https://blog.csdn.net/u011462318/article/details/80439160

6)运行wordcount

#重复hadoop运行wordcount步骤     1)到6)

spark-shellscala> sc.textFile("/data/wordcount").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("/output/wordcount")#以空格分词

 查看输出略

 

附:

ubuntu可以通过编辑 sources list进行官方源和第三方源的更新【注意备份】

cp /etc/apt/sources.list /etc/apt/sources.list.bak  #备份
sudo vim /etc/apt/sources.list #修改
cp /etc/apt/sources.list  /etc/apt/sources.list.qinghua #备份第三方源

  apt-get update

 

VMware 虚拟环境ubuntu 安装docker不错的网站:

http://www.runoob.com/docker/ubuntu-docker-install.html

root@master:~#  scp  /root/soft/apache/hadoop/hadoop-2.8.5/etc/hadoop/yarn-site.xml  slave1:/root/soft/apache/hadoop/had
oop-2.8.5/etc/hadoop/
#实现远程文件发送

 

另一种操作【各节点容器已创建后,实现ssh免密登陆】,

在master节点容器中

ssh-copy-id -i slave1  #登录slave1,将公钥拷贝到hadoop01的authorized_keys中;
ssh-copy-id -i slave2 #登录slave2,将公钥拷贝到hadoop01的authorized_keys中;
。。。

注意:执行上述命令会要求输入slave的password 可能需要先在各个slave设置root密码(输入 passwd,按提示操作即可)

      然后可能需要修改sshd_config

1.修改root密码:#sudo passwd root2.辑配置文件,允许以 root 用户通过 ssh 登录:sudo vi /etc/ssh/sshd_config找到:PermitRootLogin prohibit-password禁用添加:PermitRootLogin yes3.sudo service ssh restart

授权authorized_keys文件,在.ssh目录下输入命令:

chmod 600 authorized_keys

将授权文件拷贝到slave1、slave2...,命令如下:

scp /root/.ssh/authorized_keys slave1:/root/.ssh/ #拷贝scp /root/.ssh/authorized_keys slave2:/root/.ssh/ #拷贝
参考博客 https://www.cnblogs.com/ivan0626/p/4144277.html

【Docker 安装hadoop 参考博客:https://www.cnblogs.com/onetwo/p/6419925.html该博客安装版本hadoop2.6.X版本与2.8.X有不同之处,不能照搬,请注意比较】

 

 

这篇关于docker 安装hadoop2.8.5和spark2.4.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/711216

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

Centos7安装Mongodb4

1、下载源码包 curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.2.1.tgz 2、解压 放到 /usr/local/ 目录下 tar -zxvf mongodb-linux-x86_64-rhel70-4.2.1.tgzmv mongodb-linux-x86_64-rhel70-4.2.1/

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

Centos7安装JDK1.8保姆版

工欲善其事,必先利其器。这句话同样适用于学习Java编程。在开始Java的学习旅程之前,我们必须首先配置好适合的开发环境。 通过事先准备好这些工具和配置,我们可以避免在学习过程中遇到因环境问题导致的代码异常或错误。一个稳定、高效的开发环境能够让我们更加专注于代码的学习和编写,提升学习效率,减少不必要的困扰和挫折感。因此,在学习Java之初,投入一些时间和精力来配置好开发环境是非常值得的。这将为我

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud