Docker 部署安装Hadoop 3.2集群

环境版本


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

   选择亚洲 6 Asia  
选择上海 70. Shangha

service ssh start 启动ssh 

启动完成ssh 服务

ps -e | grep ssh 检测是否启动ssh 

已启动

apt install ssh 安装客户端


输入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查看下版本 是否安装成功

java 版本1.8

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


:wq 保存退出

保存退出 

输入 source ~/.bashrc 使其生效

生成docker镜像


首先输入exit 退出docker 

输入docker ps  -a 找到刚才生成的容器


docker 容器

输入 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


SHUTDOWN_MSG: Shutting down NameNode at hdp-master/172.20.0.2 格式化成功



进入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 查看进程工具

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。