前面使用了docker自带的镜像安装,那么这篇使用阿里镜像搭建hadoop集群,也参考了网上部分播客,但是多多少少有问题,我这篇播客是全部经过实践测试成功跑起来的。
拉取阿里的hadoop镜像
docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
查看镜像
docker images
(1)创建master节点
docker run --name master -d -h master registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
参数说明:
-h 为容器设置主机名
–name 设置容器的名称
-d 在后台运行
(2)以此方法创建slave1和slave2节点
docker run --name slave1 -d -h slave1 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
docker run --name slave2 -d -h slave2 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop
(3)查看容器
docker ps -s
(4)进入容器查看jdk
docker exec -it master bash
jdk都已经自带了
(5)配置ssh生成秘钥,所有的节点都要配置
进入容器后
启动ssh
/etc/init.d/ssh start
生成秘钥
·ssh-keygen -t rsa
(5)分别进入每个节点,将其他节点的公钥也都复制到authorized_keys,也就是说每个>authorized_keys 文件中存储的公钥都是3个而且是一样的
将容器中的文件复制到centos本地
·docker cp 容器id/容器名称:/root/.ssh/authorized_keys /home/hadoop/authorized_keys_master
将这三个文件复制到一个文件中
cd /home/hadoop/
cat authorized_keys_master authorized_keys_slave1 authorized_keys_slave2 > authorized_keys
cat authorized_keys
将centos本地的文件复制到容器
docker cp /home/hadoop/authorized_keys 容器id/容器名称:/root/.ssh/authorized_keys
(6)分别为每个节点配置ip地址
进入容器,在此容器中可以直接使用ip addr命令查看ip地址
为每个容器设置地址,vi /etc/hosts
配置
ssh master 测试一下,测试成功
(1)进入容器查找 hadoop-env.sh存放位置
find / -name hadoop-env.sh
(2)查看 hadoop-env.sh文件
export JAVA_HOME=/opt/tools/jdk1.8.0_77
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/hadoop/tmp
/hadoop/data 和 /hadoop/name要提前建立此文件夹
mkdirp -p /hadoop/data
mkdirp -p /hadoop/name
dfs.replication
1
dfs.datanode.data.dir
file:/hadoop/data
dfs.namenode.name.dir
file:/hadoop/name
slave数量要大于等于备份的数量,否者会报错
mapred.job.tracker
localhost:9001
mapreduce.framework.name
yarn
配置参数
yarn.resourcemanager.address
master:8032
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.resource-tracker.address
master:8031
yarn.resourcemanager.admin.address
master:8033
yarn.resourcemanager.webapp.address
master:8089
scp /opt/tools/hadoop-2.7.2/etc/hadoop/yarn-site.xml slave1:/opt/tools/hadoop-2.7.2/etc/hadoop/
将core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml 发送到slave1 和slave2节点
hadoop namenode -format
cd /opt/tools/hadoop/sbin/
./start-all.sh