irpas技术客

超详细的基于docker搭建hadoop集群_孤独之风。_docker搭建hadoop集群

irpas 6351

环境:

Ubuntu20Hadoop 3.1.4Jdk 1.8_301

搭建主要步骤

拉取最新版本ubuntu镜像利用挂载将jdk,hadoop等安装包通过xftp或者使用命令行scp命令传到挂载目录。进入ubuntu镜像容器 docker exec -it 容器id /bin/bash 更新apt-get系统源 apt-get update更新完后可以下载一些必须工具,如vim 安装sshd 在开启分布式Hadoop时,需要用到ssh连接slave节点apt-get install ssh然后运行如下脚本即可开启sshd服务器: ? /etc/init.d/ssh start 这样在开启镜像时,都需要手动开启sshd服务,可以把这条命令写进~/.bashrc文件,保存后每次进入容器会自动启动sshd服务**(这一句一定要放在最后,一定要,不然后面会启动异常!)** 配置免密登录(这里我试了一下,在容器里使用ssh localhost输入密码会拒绝登录) cd ~/.sshssh-keygen -t rsa 一路按回车最后输入 cat ./id_rsa.pub >> ./authorized_keys ? 接下来就可以直接输入ssh localhost登录本机了 配置jdk,和前面单机版配置一样。安装hadoop,将hadoop解压到自己指定的目录配置hadoop集群

(1)打开hadoop_env.sh,修改JAVA_HOME (2)打开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>

(3)打开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>

(4)打开mapred-site.xml输入

<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name>//这里的路径是你安装hadoop的路径 <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value> </property> </configuration>

(5)打开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保存镜像 输入docker images可以查看保存镜像。 配置集群:

我用1个节点作master,3个节点作slave。(博主只是配着好玩,真实环境请搭建单数节点集群),namenode与secondnamenode同一节点。

分别打开四个终端,每个终端界面运行刚刚修改后的镜像。分别表示Hadoop集群中的master,s01、s02和s03 docker run -it -h Master --name Master...

2. 输入 cat /etc/hosts查看当前容器的ip,如查看master IP为172.17.0.3

3. 编辑4个容器的hosts,把每一个主机和ip保存进去

在master主机输入ssh s01 等测试master能否正常连接slave(这里建议全部ssh一遍,避免后面启动hadoop要输入yes或者报警告)

到这里,还差最后一个配置就要完成hadoop集群配置了,打开master上的workers文件**(在hadoop安装目录下的etc/hadoop下)**,hadoop2版本这个文件叫做slaves,把原先的默认值localhost删掉,输入三个slave的主机名:s03,s02,s03.

启动集群

在master终端输入start-all.sh启动集群(第一次启动,务必要format一下namenode,后面再启动就不需要format了)

格式化namenode

启动集群

这里直接启动集群可能会报错

在hadoop-env.sh添加一下内容

添加后:再次启动集群

在master节点输入jps

在slave节点输入jps

运行hadoop自带的词频统计的例子

查看结果

至此,基于docker的hadoop集群搭建成功。搭建过程中有遇到问题的同学,欢迎留言一起讨论!


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。