安装Hadoop集群一般来讲比较困难,我们会采用CDH安装等集成环境,不过在安装这些集成环境时,比较臃肿,安装也很困难。我们尝试使用docker进行安装集群,从0开始,根据业务要求进行定制。
只要你认真细致,实际上安装hadoop集群也不是很难哦。
准备docker环境
在这个dockerfile里面,我们先安装jdk1.8,免费后面要继续安装
同事,生成秘钥文件,为了将来机器之间免密访问
# 生成的新镜像以centos镜像为基础
FROM centos
# 指定作者信息
MAINTAINER by Rudolfyan
# 安装openssh-server
RUN yum -y install openssh-server
RUN mkdir /var/run/sshd
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
# 指定root密码
RUN /bin/echo 'root:123456'|chpasswd
RUN /bin/sed -i 's/.*session.*required.*pam_loginuid.so.*/session optional pam_loginuid.so/g' /etc/pam.d/sshd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
RUN yum -y install java-1.8.0-openjdk.x86_64
EXPOSE 22
CMD /usr/sbin/sshd -D
准备hadoop环境
我们下载hadoop3.2.1版本,通过URL直接下载,放到和dockerfile相同层次的目录下。
[root@ora-mssql hadoop]# curl https://archive.apache.org/dist/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz -o hadoop-3.2.1.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 342M 100 342M 0 0 2583k 0 0:02:15 0:02:15 --:--:-- 4076k
[root@ora-mssql hadoop]# ls
Dockerfile hadoop-3.2.1.tar.gz
生成第二个镜像,基础镜像为第一节生成的镜像。
mkdir hadoopqun
cat <<EOF >hadoopqun/Dockerfile
FROM rudolfyan/centosssh:1.0
MAINTAINER will
ENV REFRESHED_AT 2021
ADD hadoop-3.2.1.tar.gz /usr/local/nlp/
ENV HADOOP_HOME /usr/local/nlp/hadoop-3.2.1
ENV PATH $HADOOP_HOME/bin:$PATH
RUN yum install -y which sudo
EOF
docker build -t rudolfyan/hadoopqun:1.0 . -f hadoopqun/Dockerfile
启动三个hadoop qun的docker
docker run --name dkhmaster -p 10022:22 -d rudolfyan/hadoopqun:1.0
docker run --name dkhslave1 -p 10022:23 -d rudolfyan/hadoopqun:1.0
docker run --name dkhslave2 -p 10022:24 -d rudolfyan/hadoopqun:1.0
[root@ora-mssql ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f92ba0ee1a4 rudolfyan/hadoopqun:1.0 "/bin/sh -c '/usr/..." About an hour ago Up About an hour 0.0.0.0:10024->22/tcp dkhslave2
bfd5a858efb1 rudolfyan/hadoopqun:1.0 "/bin/sh -c '/usr/..." About an hour ago Up About an hour 0.0.0.0:10023->22/tcp dkhslave1
5e35e92b76f0 rudolfyan/hadoopqun:1.0 "/bin/sh -c '/usr/..." About an hour ago Up About an hour 0.0.0.0:10022->22/tcp
在master的机器上生成秘钥,这样可以访问其他的slave机器免密,然后能够直接控制,这一步是比不可少的。
root@5e35e92b76f0 /]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:EBkfY93CuuzdHLl6T50vFPTkS0SR

本文详细介绍了如何使用Docker容器来搭建Hadoop集群,包括创建Dockerfile,安装JDK,设置SSH免密登录,配置Hadoop环境,以及通过Ansible进行文件同步和集群初始化。整个过程旨在简化Hadoop集群的安装和管理。
最低0.47元/天 解锁文章
890

被折叠的 条评论
为什么被折叠?



