Ubuntu Docker 搭建Hadoop分布式集群

确保您拥有 root 权限 , 凡是{} 包含的内容, 都是您需要更改的

  1. apt install docker

  2. docker pull ubuntu:16.04

  3. 下载你需要的JDK版本(YourJdkVersion), 存放在(YourHome :such as /home/lizhi)/share中

  4. 下载你需要的Hadoop版本(YourHadoopVersion), 存放在(YourHome :such as /home/lizhi)/share中

  5. docker run -ti -v {YourHome}/share:/root/build ubuntu:16.04 (共享本地文件 (YourHome)/sharedocker容器中)
    Hadoop 搭建

  6. 将共享文件/root/build 中 的两个文件YourJdkVersion, YourHadoopVersion 解压到 /opt

  7. Hadoop (/opt/{YourHadoopVersion}/etc/hadoop中) 配置修改 (仅供参考)

	core-site.xml
		<configuration>
			<property>
				<name>fs.defaultFS</name>
				<value>hdfs://master:9000/</value>
			</property>
			<property>
				<name>hadoop.tmp.dir</name>
				<value>file:/opt/{YourHadoopVersion}/tmp</value>
			</property>
		</configuration>
		
	hdfs-site.xml
		<configuration>
			<property>
			    <name>dfs.namenode.secondary.http-address</name>
			    <value>master:50090</value>
			</property>
			<property>
			    <name>dfs.replication</name>
			    <value>2</value> <!-- 2个副本 -->
			</property>
			<property>
			    <name>dfs.namenode.name.dir</name>
			    <value>file:/opt/{YourHadoopVersion}/tmp/dfs/name</value>
			</property>
			<property>
			    <name>dfs.datanode.data.dir</name>
			    <value>file:/opt/{YourHadoopVersion}/tmp/dfs/data</value>
			</property>
		</configuration>
		
	yarn-site.xml
		<configuration>
			<property>
				<name>yarn.resourcemanager.hostname</name>
				<value>master</value>
			</property>
			<property>
				<name>yarn.resourcemanager.scheduler.class</name>
				<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
			</property>
			<property>
				<name>yarn.nodemanager.aux-services</name> 
				<value>mapreduce_shuffle</value> 
			</property> 
			<property>  
				<name>yarn.nodemanager.resource.memory-mb</name> 
				<value>20480</value> 
			</property>  
			<property>  
				<name>yarn.scheduler.minimum-allocation-mb</name> 
				<value>2048</value> 
			</property>  
			<property>  
				<name>yarn.nodemanager.vmem-pmem-ratio</name> 
				<value>2.1</value> 
			</property>
		</configuration>
		
	mapred-site.xml
		<configuration>
			<property>
				<name>mapreduce.framework.name</name>
				<value>yarn</value>
			</property>
			<property>
				<name>mapreduce.jobhistory.address</name>
				<value>master:10021</value>
			</property>
			<property>
				<name>mapreduce.jobhistory.webapp.address</name>
				<value>master:19889</value>
			</property>
		</configuration>
  1. 安装 ssh, 然后执行 下列操作
    8.1 ssh-keygen -t rsa
    8.2 cat id_dsa.pub >> authorized_keys 同时生成秘钥, 用于免密登录
    8.3 测试免密登录 ssh localhost 是否成功
  2. ~/.bashrc 中添加以下内容
	export JAVA_HOME=/opt/{YourJdkVersion}
	export JRE_HOME=$JAVA_HOME/jre
	export HADOOP_HOME=/opt/{YourHadoopVersion}
	export PATH=$PATH:$HADOOP_HOME/bin
	export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$JRE_HOME/bin
	/etc/init.d/ssh start | service ssh start // 容器启动时开启 ssh 服务,两者选其一, 请不要添加当前注释

提交安装完毕的容器

注意: 开一个新的终端, 不要关闭第5步打开终端
提交当前更改完成后的镜像

  1. master
    docker commit {CONTAINER_ID} (第5步容器的主机名, 例如 root@8422c4683024后边 8422c4683024 即为容器ID) {YourContainerName}(such as hadoop/master)
  2. slave
    docker commit {CONTAINER_ID} (第5步容器的主机名, 例如 root@8422c4683024后边 8422c4683024 即为容器ID) {YourContainerName}(such as hadoop/slave)
  3. 查看提交的 image
    docker images 查看您提交的 image 是否存在, 若没出现问题, 则您可查看到 hadoop/masterimage 存在

运行项目

注意 容器每次启动时 /etc/hosts 每次都会初始化, 因此, 在每次开启容器后都需要对 hosts 文件进行修改

  1. docker run -ti -h master {YourContainerName}(such as hadoop/master)
  2. docker run -ti -h slave1 {YourContainerName}(such as hadoop/slave)
  3. docker run -ti -h slave2 {YourContainerName}(such as hadoop/slave)
  4. 查看启动的容器的 hosts 文件,相互添加对方的 IP 映射, master/slave1/slave2 各自的 /etc/hosts 文件

在这里插入图片描述

	1. 在 master 中添加 slave1/slave2 的 ip
		172.17.0.2	master 
		172.17.0.3	slave1  (slave1中/etc/hosts的映射, 需自己查看)
		172.17.0.4 	slave2  (slave2中/etc/hosts的映射, 需自己查看)
	2. 将 hosts 发送到 slave1/slave2
		scp /etc/hosts slave1@/etc/
		scp /etc/hosts slave2@/etc/	
  1. 更改 /opt/ {YourHadoopVersion} /etc/hadoop/slaves , 添加 Hadoop 节点 (eg: 添加slave1, slave2)
  2. 格式化 NameNode : hdfs namenode -format (如果不想保存每次运行后的数据, 请每次运行启动 hadoop 时记得格式化 NameNode)
  3. start-all.sh
  4. master 端看到以下进程

master

  1. slave1 端看到以下进程

slave1

  1. slave2 端看到以下进程

slave2

温馨提示, 如果需要将您本次项目运行数据进行保存, 请更新当前镜像
  1. docker ps 查看正在运行的容器
  2. 将对应容器进行提交 (slave只需要提交一份即可)
  3. docker commit CONTAINER_ID YourContainerName (such as hadoop/master)

save-docker-images

至此, 项目搭建成功, 祝您好运.

本教程最终解释权归 © lzgabel 所有, 有问题请 email

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值