hadoop 2.9 docker 集群搭建 demo

各种组件安装,数据分析

2017-12-03

338

0

技术:hadoop

运行环境:docker + centos7

demo功能:提供利用docker 搭建一个hadoop 集群,并简单测试。 操作命令总结 

 

步骤概述

1. 使用docker 启动4个centos 容器,(1 namenode+ 3 datanode)

2. 初始化4个容器. 

1)  修改4个容器hostname, 分别为

name node:hadoop-master

data node:hadoop1, hadoop2, hadoop3

2) 安装ssh, 并将四个容器配置两两 互相免密码登录

3) 如果没有安装which命令, 请安装

4) 初始化 hadoop 使用的文件夹

3. 配置jdk1.8

4. 配置hadoop-master 的hadoop, 并同步到datanode

5. 启动hadoop 集群

6. 测试hadoop集群

使用docker 启动4个centos 容器,(1 namenode+ 3 datanode)

docker run -it -d --name hadoop-master --hostname hadoop-master -P -p 50070:50070 -p 8088:8088 -v /sofware_shared/:/sofware_shared/ --privileged=true registry.cn-hangzhou.aliyuncs.com/acc/base-centos7
docker run -it -d --name hadoop1 --hostname hadoop1 -P -v /home/sofware_shared/:/sofware_shared/ --privileged=true registry.cn-hangzhou.aliyuncs.com/acc/base-centos7
docker run -it -d --name hadoop2 --hostname hadoop2 -P -v /home/sofware_shared/:/sofware_shared/ --privileged=true registry.cn-hangzhou.aliyuncs.com/acc/base-centos7
docker run -it -d --name hadoop3 --hostname hadoop3 -P -v /home/sofware_shared/:/sofware_shared/ --privileged=true registry.cn-hangzhou.aliyuncs.com/acc/base-centos7

初始化4个容器

1) 修改4个容器的hostname。 其实在运行容器的时候已经完成了

 

配置4个容器host, 使互相可以使用hostname访问

分别进入容器, 看看ip 使多少, 并记录 ip 与hostname组

172.17.0.2 hadoop-master

172.17.0.3 hadoop1

172.17.0.4 hadoop2

172.17.0.5 hadoop3

 

配置hadoop-master如下。 仿照这个, 配置hadoop1, haoop2,hadoop3

 

设置每个容器root帐号密码

 

2)安装ssh, 并将四个容器配置两两 互相免密码登录

进入hadoop-master, 安装ssh。 照样在hadoop1, hadoop2,hadoop3中做相同的操作

 

启动ssh

 

设置4个容器配置免密码登录

进入hadoop-master,  生成ssh密钥。 中间一路回车

 

设置ssh免密码登录hadoop1, hadoop2, hadoop3。 这里只操作hadoop-master, hadoop1. hadoop2, hadoop3 自己照样子做

 

3) 如果没有安装which命令, 请安装

yum install -y which

4) 初始化hadoop使用的文件夹

mkdir -p /home/hadoop/tmp
mkdir -p /home/hadoop/dfs/data
mkdir -p /home/hadoop/dfs/name

配置jdk8

1)回到host 机器, 下载jdk8, 解压放在/home/sofware_shared/中(为啥, 问docker)

2)进入hadoop-master, 去/sofware_shared 目录中找jdk, 拷贝到/usr/local中, 并配置环境变量. hadoop1, hadoop2, hadoop3 一样操作

最后的结果使 hadoop-master, hadoop1, hadoop2, hadoop3 两两能免密码访问. 

配置hadoop-master 的hadoop, 并同步到datanode

1. 在host主机上, 把下载好的hadoop文件拷贝到 /home/sofware_shared

2. 配置hadoop-master 上的hadoop

进入hadoop-master, 配置hadoop

1) 配置core-site.xml

2) 配置hdfs-site.xml

3)  mapred-site.xml

 

4) 配置 yarn-site.xml(内存需要满足一定条件, 不然hadoop任务不能执行, 只能pending)(配置文件在:/usr/local/hadoop-2.9.0/etc/hadoop)

3. 修改vi hadoop-env.sh。 添加 JAVA_HOME

4. 修改 yarn-env.sh.添加 JAVA_HOME

5. 添加slave节点. 

6. 拷贝配置好的hadoop到 hadoop1 , hadoop2, hadoop3

scp -r /usr/local/hadoop-2.9.0 hadoop1:/usr/local/
scp -r /usr/local/hadoop-2.9.0 hadoop2:/usr/local/
scp -r /usr/local/hadoop-2.9.0 hadoop3:/usr/local/

启动hadoop 集群

 

cd /usr/local/hadoop-2.9.0

1. 初始化name node

./bin/hdfs namenode -format

2. 启动 name node, data node

执行./sbin/start-all.sh,

 

启动后看 在master, slave上是否存在对应的进程

 

 

成功后访问 http://hadoop-master:8088/cluster (目前是不对的, 活动的datanode 应该要有3个的)

 

测试hadoop 集群

xxxxxxxxxxxxxxxxxxxxxxx

欢迎添加微信,互相学习↑↑↑ -_-

发表评论

全部评论:0条

白老虎

programming is not only to solve problems, ways to think