版本:
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組:
sudo gpasswd -a $USER docker
newgrp docker
配置docker容器源:
sudo vim /etc/docker/daemon.json
{"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服務:
sudo systemctl restart docker
查看docker狀態:
ps -ef | grep docker
?拉取centos7:7.5.1804鏡像:
docker pull centos:7.5.1804
查看鏡像:
docker images
創建容器:
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
查看容器:
docker ps -a
啟動容器:
docker start a08b
進入容器:
docker exec -it a08b00fdc6ce /bin/bash
2.配置ssh做免密登錄:
由于最小化centos7,需安裝 net-tools ,vim,openssh-server,oppenssh-clients
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:
vi /etc/hosts
172.17.0.4 slave1
172.17.0.2 slave2
172.17.0.3 master
?配置ssh公鑰和私鑰:(一路回車)
ssh-keygen -t rsa
?暫時不知docker啟動ssh方法
ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key
usr/sbin/sshd -D
?啟動后會卡住退出重啟
ps -e 查看后臺sshd服務已啟動:
?
?配置所有節點免密登錄(包括自己):
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-di slave2
3.配置JAVA_HOME環境:
master :在/opt/目錄下分別創建software和module文件夾:
mkdir /opt/softwore
mkdir /opt/module
將ubuntu的jdk拷貝到master /opt/software上:
docker cp jdk-8u212-linux-x64.tar.gz master:/opt/software
?解壓jdk到 /opt/module下:
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
配置JAVA_HOME環境變量:
vi /etc/profile.d/my_env.sh
?添加:
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
加載配置文件:
source /etc/profile
使用 java -version查看環境變量是否配置完成:
JAVA_HOME環境變量配置完畢
4 .配置hadoop_HOME環境:
將物理機的jar包拷貝到master/opt/module下:
docker cp hadoop-3.1.3.tar.gz master:/opt/software
解壓到/opt/module 目錄下:
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
配置環境變量:
vi /etc/profile.d/my_env.sh
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
?加載配置文件:
source /etc/profile
用hadoop -version查看環境是否配置完成:
HADOOP_HOME環境變量配置完成
注意:
注意 配置完成后 同步給其他節點
scp -r 要發送的內容 主機名:src
?
5.HADOOP_配置文件:
cd /opt/module/hadoop-3.1.3/etc/hadoop
core-site.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:
<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:
<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:
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
配置完成后同步給其他節點
scp -r hadoop slave1:/opt/moder/hadoop3.1.3/etc
?6.啟動hadoop:
格式化hadoop :
hdfs namenode -format
在hadoop3.1.3下多出data和logs兩個文件
格式化成功
啟動 hadoop
在master節點下:
start-dfs.sh
好,啟動失敗
?這是由于權限問題:
在每個節點增加用戶:
useradd bigdata
passwd bigdata 111111
增加/opt /module的權限:
chown bigdata:bigdata /module
?并使用bigdata用戶給每個節點執行ssh免密
注意在每個節點都要執行
再次在master上啟動:
start-dfs.sh
在slave1上啟動:
start-yarn.sh
?
hadoop啟動成功
?
?總結:
hadoop 啟動失敗 datanode 掛掉兩臺
docker端口問題