环境版本
ubuntu 20.04
hadoop 3.2.1
数据节点
hadoop-master 172.20.0.2
hadoop-slave1 172.20.0.3
一主一从 当然你可以配置更多个 我们只这里只配置一个子节点
Docker 安装 Ubuntu
docker pull ubuntu 拉取镜像
docker run -it --name ubuntu-hadoop ubuntu 启动一个容器
配置ubuntu
apt update 更新下资源
apt install openssh-server 安装ssh server
service ssh start 启动ssh
ps -e | grep ssh 检测是否启动ssh
apt install ssh 安装客户端
ssh 密钥
ssh-keygen -t rsa 一路回车
完成之后会生成~/.ssh目录,目录下有id_rsa(私钥文件)和id_rsa.pub(公钥文件),再将id_rsa.pub重定向到文件authorized_keys
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
安装java环境
输入:apt install openjdk-8-jdk
java -version查看下版本 是否安装成功
which java 查看下运行目录
下载hadoop
访问hadoop官网 https://hadoop.apache.org/releases.html
找到对应的hadoop版本 我们这里用的是 3.2.1
apt install wget 安装wget
使用wget 下载 等待下载完成
wget https://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz
解压到目录
tar -xzvf hadoop-3.2.1.tar.gz -C /opt
cd opt 进入目录 查看下 会拥有 hadoop-3.2.1 目录
环境变量
apt install vim 安装vim工具
vim ~/.bashrc
在文件末尾加入
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/opt/hadoop-3.2.1
export HADOOP_CONFIG_HOME=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$JAVA_HOME/bin
保存退出
输入 source ~/.bashrc 使其生效
生成docker镜像
首先输入exit 退出docker
输入docker ps -a 找到刚才生成的容器
输入 docker commit -m="has update" -a="pengfei" db051fddd2a9 ubuntu/hadoop 生成镜像
输入 docker images 查看下生成的镜像
配置集群容器
输入 docker network create --subnet=172.20.0.0/16 hadoop 创建一个network组
然后依次启动 master 和 slave
启动master 主容器
docker run -d --privileged -ti --name hdp-master -h hdp-master -p 19870:9870 -p 18088:8088 --net hadoop --ip 172.20.0.2 ubuntu/hadoop /bin/bash
启动slave 子节点容器
docker run -d --privileged -ti --name hdp-slave1 -h hdp-slave1 -p 19864:9864 --net hadoop --ip 172.20.0.3 ubuntu/hadoop /bin/bash
hadoop设置
进入主节点 master 容器
docker exec -it ab647fc9c395 /bin/bash
启动下ssh
service ssh start
进入配置目录
cd opt/hadoop-3.2.1/etc/hadoop/
编辑 vim hadoop-env.sh
最后插入 export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
编辑 vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop-3.2.1/namenode</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>/opt/hadoop-3.2.1/datanode</value>
<final>true</final>
</property>
</configuration>
编辑 mapred-site.xml
<configuration>
<property>
<name>mapred.job.tarcker</name>
<value>hdp-master:9001</value>
</property>
</configuration>
编辑 vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp-master</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hdp-master:8088</value>
</property>
</configuration>
编辑 vim core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.2.1/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop-master:9000</value>
</property>
</configuration>
编辑主节点 workers
hdp-slave1
设置hosts
由于/etc/hosts文件在容器启动时被重写,直接修改内容在容器重启后不能保留,为了让容器在重启之后获取集群hosts 启动容器后重写hosts的方法。
编辑 vim ~/.bashrc
在底部添加以下内容
:>/etc/hosts
cat >>/etc/hosts<<EOF
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.20.0.2 hdp-master
172.20.0.3 hdp-slave1
EOF
保存之后
输入 source ~/.bashrc
分发配置到子节点
新开一个shell 窗口 进入 子节点docker
docker exec -it db051fddd2a9 /bin/bash
各自生成的docker id 是不同的 别傻傻的粘贴
service ssh start 最好设置成启动docker 时就运行
加入到vim ~/.bashrc 中
在master 输入 ssh root@hdp-slave1 应该不需要密码即可链接
分发master配置文件 bashrc
scp ~/.bashrc root@hdp-slave1:~/.bashrc
分发master hadoop 配置文件到子节点
scp -r /opt/hadoop-3.2.1/etc/hadoop/ root@hdp-slave1:/opt/hadoop-3.2.1/etc/
完成之后 主从配置内容应是一样的
Hadoop 启动
hadoop namenode -format 格式化namenode
进入cd /opt/hadoop-3.2.1/sbin
修改 vim start-dfs.sh , vim stop-dfs.sh 添加
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
编辑 vim start-yarn.sh ,vim stop-yarn.sh
YARN_RESOURCEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=yarn
YARN_NODEMANAGER_USER=root
输入 start-all.sh 启动hadoop
输入jps
http://ip:18088
http://ip:19870
http://ip:19864
其他工具
apt install wget
apt install curl
apt install lsof 查看进程工具