版本:
centos7
hadoop 3.1.3
java JDK:1.8
集群规划:
|------|-------------------|----------------------------|---------------------------|
| | master | slave1 | slave2 |
| HDFS | NameNode DataNode | DataNode | SecondryNameNode DataNode |
| YARN | NodeManager | ResourceManage NodeManager | NodeManager |
1.docker容器:
把普通用户加入到docker组:
bash
sudo gpasswd -a $USER docker
newgrp docker
配置docker容器源:
bash
sudo vim /etc/docker/daemon.json
bash
{
"registry-mirrors" : [
"http://registry.docker-cn.com",
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://nfesww3w.mirror.aliyuncs.com"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug" : true,
"experimental" : true
}
重启docker服务:
bash
sudo systemctl restart docker
查看docker状态:
bash
ps -ef | grep docker
拉取centos7:7.5.1804镜像:
bash
docker pull centos:7.5.1804
查看镜像:
bash
docker images
创建容器:
bash
docker run --name master -it centos:7.5.1804 /bin/bash
docker run --name slave1 -it centos:7.5.1804 /bin/bash
docker run --name slave2 -it centos:7.5.1804 /bin/bash
查看容器:
bash
docker ps -a
启动容器:
bash
docker start a08b
进入容器:
bash
docker exec -it a08b00fdc6ce /bin/bash
2.配置ssh做免密登录:
由于最小化centos7,需安装 net-tools ,vim,openssh-server,oppenssh-clients
bash
yum install -y net-tools
yum install -y vim
yum install -y openssh-server
yum install -y openssh-clients
查看每个容器中的ip
master:172.17.0.3
slave1:172.17.0.4
slave2:172.17.0.2
设置root密码为aaaaaa:
sudo passwd
修改/etc/hosts:
bash
vi /etc/hosts
bash
172.17.0.4 slave1
172.17.0.2 slave2
172.17.0.3 master
配置ssh公钥和私钥:(一路回车)
bash
ssh-keygen -t rsa
暂时不知docker启动ssh方法
bash
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
bash
usr/sbin/sshd -D
启动后会卡住退出重启
ps -e 查看后台sshd服务已启动:
配置所有节点免密登录(包括自己):
bash
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-di slave2
3.配置JAVA_HOME环境:
master :在/opt/目录下分别创建software和module文件夹:
bash
mkdir /opt/softwore
bash
mkdir /opt/module
将ubuntu的jdk拷贝到master /opt/software上:
bash
docker cp jdk-8u212-linux-x64.tar.gz master:/opt/software
解压jdk到 /opt/module下:
bash
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
配置JAVA_HOME环境变量:
bash
vi /etc/profile.d/my_env.sh
添加:
XML
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
加载配置文件:
bash
source /etc/profile
使用 java -version查看环境变量是否配置完成:
JAVA_HOME环境变量配置完毕
4 .配置hadoop_HOME环境:
将物理机的jar包拷贝到master/opt/module下:
bash
docker cp hadoop-3.1.3.tar.gz master:/opt/software
解压到/opt/module 目录下:
bash
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
配置环境变量:
bash
vi /etc/profile.d/my_env.sh
bash
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
加载配置文件:
bash
source /etc/profile
用hadoop -version查看环境是否配置完成:
HADOOP_HOME环境变量配置完成
注意:
注意 配置完成后 同步给其他节点
XML
scp -r 要发送的内容 主机名:src
5.HADOOP_配置文件:
cd /opt/module/hadoop-3.1.3/etc/hadoop
core-site.xml:
XML
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9820</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
yarn-site.xml:
XML
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maxmum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
hdfs-site.xmlL:
XML
<property>
<name>dfs.namenode.name.http-address</name>
<value>master:9870</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:9868</value>
</property>
maperd-site.xml:
XML
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置完成后同步给其他节点
XML
scp -r hadoop slave1:/opt/moder/hadoop3.1.3/etc
6.启动hadoop:
格式化hadoop :
XML
hdfs namenode -format
在hadoop3.1.3下多出data和logs两个文件
格式化成功
启动 hadoop
在master节点下:
XML
start-dfs.sh
好,启动失败
这是由于权限问题:
在每个节点增加用户:
XML
useradd bigdata
passwd bigdata 111111
增加/opt /module的权限:
XML
chown bigdata:bigdata /module
并使用bigdata用户给每个节点执行ssh免密
注意在每个节点都要执行
再次在master上启动:
XML
start-dfs.sh
在slave1上启动:
XML
start-yarn.sh
hadoop启动成功
总结:
hadoop 启动失败 datanode 挂掉两台
docker端口问题